Es wird gesagt, dass es die beste Verwendung ist, es ist definitiv kein Streich, aber viele Leute verstehen nicht, warum sie dieses Plugin verwenden. Ist es nicht gut, die SQL durch Handschrift und Paginierung von SQL zu verwenden ...
Also habe ich speziell ein Beispiel wie dieses geschrieben, um zu erklären, warum es das Beste ist.
Angenommen, wir haben die Mapper -Schnittstelle und XML wie folgt geschrieben:
public interface SysLoginLogMapper { /** * Query the login log based on query conditions* @param logip * @param username * @param loginDate * @param exitDate * @return */ List<SysLoginLog> findSysLoginLog(@Param("logip") String logip, @Param("username") String username, @Param ("logindate") String logindate, @param ("exitdate") String exitdate, @param ("logerr") String lanr); } <? namespace = "com.easternie.sys.dao.sysloginLogMapper"> <select id = "fandSysLoginLog" resultType = "com.easternie.sys.vo.model auf A.Userid = b.userid </if> <where> <if test = "logip! '%' ||#{Benutzername} || '%') </if> <if test = "logindate! = null und logindate! und exitdate! </if> </where> bestellen nach logid desc </select> </minkPer>Obwohl es sich um ein einfaches Beispiel handelt, ist der XML hier nicht so einfach.
Wenn Sie bereits einige vorgefertigte MyBatis-Methoden wie die oben genannten haben und ich diese Abfrage jetzt paginieren möchte, was soll ich tun?
Wenn es handgeschrieben ist, muss ich zwei Schnittstellen hinzufügen, eine Abfrage der Gesamtzahl und die andere zu Pagination. Es scheint nicht schwierig zu sein, in XML zu kopieren und einzufügen, und dann die Anweisung zu ändern. Hast du das gemacht?
Was muss ich tun, wenn dieses Plugin verwendet wird? ? ?
Für diese Methoden, die MyBatis geschrieben hat, muss ich nichts ändern.
Aber die Servicestufe muss möglicherweise bewegt werden. Spezifisches Beispiel oben. Schauen Sie sich den unten stehenden Service -Layer -Call -Code an.
Code, wenn Paging nicht erforderlich ist:
Öffentliche Liste <SysLoginLog> findSysLoginLog (String -Loginip, String -Benutzername, String -Logindate, String exitdate, String loggerr) löscht BusinessException {return sysloginLogmapper.findSysloginLog (Loginip, userername, logindate, exitdate, logerrr); } Code nach Hinzufügen von Paging -Funktion:
public pageHelper.page <SysLoginLog> findSysLoginLog (String -Loginip, String -Benutzername, String -Logindate, String -Exitdate, String -Loggerr, int pageNumber, int pageSize) löscht BusinessException {pageHelper.startPage (pageNumber, pagesize); sysloginLogmapper.findsysLoginLog (Loginip, Benutzername, Logindat, exitdate, lanr); return pagehelper.endPage (); } Im Vergleich:
Der Rückgabewert wurde von der Liste <Sysloginlog> zu pagehelper.page <SysloginLog> geändert.
Es wurden zwei Parameter hinzugefügt, Pagenumberg und pageszesize
Dann wird es im Prozesscode zuerst aufgerufen
PageHelper.StartPage (Pagenumber, pageSize);
Startpage teilt dem Interceptor mit, dass ich mit dem Pagen beginnen werde. Die PAGED -Parameter sind diese beiden.
Rufen Sie dann den ursprünglichen MyBatis -Code an:
sysloginLogmapper.findsysLoginLog (Loginip, Benutzername, Logindat, exitdate, lanr);
Ist es seltsam, dass hier kein Rückgabewert erhalten wird? Tatsächlich hat PageHelper den Rückgabewert automatisch erhalten. Der Rückgabewert kann über den folgenden Code abgerufen werden:
PageHelper.endPage ();
Gleichzeitig teilte die Endseite dem Interceptor mit, dass ich das Paging beendet habe und Sie nicht mehr brauche.
Denken Sie, dass ein solcher Code einfach oder handgeschrieben ist, SQL ist einfach?
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.