On dit que c'est la meilleure utilisation, ce n'est certainement pas une farce, mais beaucoup de gens ne comprennent pas pourquoi ils utilisent ce plugin. N'est-il pas bon d'utiliser le SQL par écriture et pagination de SQL ...
J'ai donc spécialement écrit un exemple comme celui-ci pour expliquer pourquoi c'est le meilleur.
Supposons que nous ayons écrit l'interface du mappeur et XML, comme suit:
Interface publique sysloginlogmapper {/ ** * Recherchez le journal de connexion basé sur les conditions de requête * @param logip * @param username * @param logindate * @param exitDate * @return * / list <sysloginlog> findsyloginlog) @Param ("logindate") String LogIndate, @param ("exitdate") String exitDate, @param ("logerr") String Logerr); } <? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappep Public "- // Mybatis.org//dtd Mappen 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "com.easternie.sys.dao.sysloginlogmapper"> <select id = "finsysloginlog" resultType = "com.easternie.sys.vo.model.sysloginlog"> SELECT * FROM SYS_LOGIN_LOG A <if Test = "Username! = Null et Username! = a.UserId = B.Userrid </ if> <où> <if test = "logip! = null et logip! = ''"> a.logip like '%' || # {logip} || '%' </ if> <if test = "username! = null and username! = ''"> et (b.username comme '%' || # {username} | traite ' '%' || # {nom d'utilisateur} || '%') </ if> <if test = "logindate! = null et logindate! = ''"> et to_date (substr (a.logIndate, 0,10), 'yyyy-mm-dd') = to_date (# {logindate}, 'yyyym-dd') </ if> <if> <if> <if> <if> <if> <if> test = "exitDate! = null et exitdate! = ''"> et to_date (substr (a.exitdate, 0,10), 'yyyy-mm-dd') = to_date (# {exitdate}, 'yyyy-mm-dd') </ if> <if test = "lgerr! = null and lgerr! = '' '> et a.logerr like! = null and lgerr! =' '"> et a.logerr comme ligerr! = Null et Logerr! =' ''> et a.logerr comme comme NULL et NULL '%' || # {Logerr} || '%' </ if> </ Where> Order by Logid Desc </lect> </naupper>Bien que ce soit un exemple simple, le XML ici n'est pas aussi simple.
Si vous avez déjà des méthodes MyBatis prêtes à l'emploi comme ce qui précède, et que je veux paginer cette requête maintenant, que dois-je faire?
S'il est manuscrit SQL, je dois ajouter deux interfaces, l'une interrogeant le nombre total et l'autre passant à la pagination. Il ne semble pas difficile de copier et de coller dans XML, puis de modifier la déclaration. Avez-vous fait cela?
Si vous utilisez ce plugin, que dois-je faire? ? ?
Pour ces méthodes que MyBatis a écrites, je n'ai pas besoin de changer quoi que ce soit.
Mais la couche de service peut devoir être déplacée. Exemple spécifique ci-dessus. Regardez le code d'appel de la couche de service ci-dessous.
Code lorsque la pagination n'est pas requise:
Public List <SysLogInLog> FindSysLogInLog (String Loginip, String Username, String Logindate, String exitDate, String Logerr) lance BusinessException {return sysloginlogmapper.findsyslogInlog (loginip, username, logindate, exitdate, lgerr); } Code après avoir ajouté une fonction de pagination:
public pageHelper.Page <SysLoginLog> findSysLogInLog (String Loginip, String Username, String LogIndate, String EXITDATE, String Logerr, int pageNumber, int pageSize) lance BusinessException {PageHelper.StartPage (PageNumber, PageSize); sysloginlogmapper.findSysLoginLog (Loginip, nom d'utilisateur, logindate, eXitDate, Logerr); return pagehelper.endpage (); } En comparaison:
La valeur de retour a été modifiée de la liste <sysloginlog> à pagehelper.page <sysloginlog>
Deux paramètres ont été ajoutés, PageNumber et PageSize
Ensuite, dans le code de processus, il est appelé d'abord
PageHelper.StartPage (PageNumber, PageSize);
StartPage dit à l'intercepteur que je vais commencer à paginer. Les paramètres Paged sont ces deux-là.
Ensuite, appelez le code MyBatis original:
sysloginlogmapper.findSysLoginLog (Loginip, nom d'utilisateur, logindate, eXitDate, Logerr);
Est-il étrange qu'il n'y ait aucune valeur de retour reçue ici? En fait, PageHelper a automatiquement reçu la valeur de retour. La valeur de retour peut être récupérée via le code suivant:
PageHelper.endPage ();
Dans le même temps, la page a dit à l'intercepteur que j'avais mis fin à la pagination et que je n'ai plus besoin de vous.
Pensez-vous que ce code est simple ou manuscrit SQL est simple?
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.