Se dice que es el mejor uso, definitivamente no es una broma, pero muchas personas no entienden por qué usan este complemento. ¿No es bueno usar el SQL mediante la escritura a mano y la paginación de SQL ...
Así que escribí especialmente un ejemplo como este para explicar por qué es el mejor.
Supongamos que hemos escrito la interfaz Mapper y XML, como sigue:
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 logerr); } <? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "com.easternie.sys.dao.sysloginlogmapper"> <select id = "findsysloginlog" resultType = "com.easternie.sys.vo.model.sysloginlog"> seleccione * de sys_login_log a <if test = "username! en a.userid = b.userid </if> <where> <if test = "logip! = null and logip! = '' '"> a.logip como'%'||#{logip} ||'%'</if> <if test = "username! = null y usernameame! =' '' '' 'y (b.username como'%'||#{username} || '%'||#{username}||'%') </if> <if test="loginDate!=null and loginDate!=''"> and to_date(substr(a.logindate,0,10),'yyyy-MM-dd') = to_date(#{loginDate},'yyyy-MM-dd') </if> <if test = "exitdate! = null and exitdate! = '' '"> y to_date (subStr (a.exitDate, 0,10),' ayyyy-mm-dd ') = to_date (#{exitDate},' yyyyyyyy-mm-dd ') </fi> <if test = "logerr! = null! =' '' ' '%' ||#{logerr} || '%' </if> </where> ordenar por logid Desc </select> </mapper>Aunque es un ejemplo simple, el XML aquí no es tan simple.
Si ya tiene algunos métodos mybatis preparados como los anteriores, y quiero paginar esta consulta ahora, ¿qué debo hacer?
Si es SQL escrito a mano, necesito agregar dos interfaces, una consulta del recuento total y el otro que cambia a la paginación. No parece difícil copiar y pegar en XML, y luego cambiar la declaración. ¿Hiciste esto?
Si usa este complemento, ¿qué necesito hacer? ? ?
Para estos métodos que MyBatis ha escrito, no necesito cambiar nada.
Pero es posible que deba mover la capa de servicio. Ejemplo específico arriba. Mire el código de llamada de la capa de servicio a continuación.
Código cuando no se requiere la paginación:
Lista pública <sloginlog> findsysloginlog (string loginip, string username, string logindate, string exitDate, string logerr) lanza BusinessException {return sysloginlogmapper.findsysloginlog (loginip, nombre de usuario, logindate, exitate, logerr); } Código después de agregar la función de paginación:
public PageHelper.Page <SloginLog> FindSysLoginLog (String Loginip, String UserName, String Logindate, String ExitDate, String Logerr, Int PageNumber, Int PageSize) lanza BusinessException {PageHelper.StartPage (Pagenumber, PageSize); sysloginlogmapper.findsysloginlog (loginip, nombre de usuario, logindate, exitdate, logerr); return pageHelper.endPage (); } En comparación:
El valor de retorno se ha cambiado de List <SloginLog> a pageHelper.Page <SlogInlog>
Se han agregado dos parámetros, PageNumber y PageSize
Luego, en el código de proceso, se llama primero
PageHelper.StartPage (PageNumber, PageSize);
StartPage le dice al interceptor que voy a comenzar a estar pagando. Los parámetros pagados son estos dos.
Luego llame al código original mybatis:
sysloginlogmapper.findsysloginlog (loginip, nombre de usuario, logindate, exitdate, logerr);
¿Es extraño que no se reciba el valor de retorno? De hecho, PageHelper ha recibido automáticamente el valor de retorno. El valor de retorno se puede recuperar a través del siguiente código:
PageHelper.endPage ();
Al mismo tiempo, la página final le dijo al interceptor que terminé la paginación y que ya no te necesito.
¿Crees que ese código es simple o SQL escrito a mano es simple?
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.