欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Mybatis分頁插件 - 示例代碼

 更新時間:2016年12月26日 15:46:52   作者:isea533  
這篇文章主要介紹了詳解Mybatis分頁插件 - 示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。

這里說最好用,絕對不是吹的,不過有好多人都不理解為什么要用這個插件,自己手寫分頁sql不是挺好嗎......

所以我特地寫這樣一個例子來講為什么最好用。

假設我們已經(jīng)寫好了Mapper的接口和xml,如下:

public interface SysLoginLogMapper { 
  /** 
   * 根據(jù)查詢條件查詢登錄日志 
   * @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 version="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"> 
  select * from sys_login_log a 
  <if test="username != null and username != ''"> 
   left join sys_user b on a.userid = b.userid 
  </if> 
  <where> 
   <if test="logip!=null and logip != ''"> 
    a.logip like '%'||#{logip}||'%' 
   </if> 
   <if test="username != null and username != ''"> 
    and (b.username like '%'||#{username}||'%' or b.realname like '%'||#{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!=''"> 
    and to_date(substr(a.EXITDATE,0,10),'yyyy-MM-dd') = to_date(#{exitDate},'yyyy-MM-dd') 
   </if> 
   <if test="logerr!=null and logerr!=''"> 
    and a.logerr like '%'||#{logerr}||'%' 
   </if> 
  </where> 
  order by logid desc 
 </select> 
</mapper> 

雖然是舉個簡單例子,但是這里的xml并沒那么簡單。

如果你已經(jīng)有一些例如上面這些現(xiàn)成的Mybatis方法了,我現(xiàn)在想對這個查詢進行分頁,我該怎么辦呢?

如果是手寫SQL,我需要增加兩個接口,一個查詢count總數(shù),一個改為分頁形式的。需要在xml中,復制粘貼,然后改改語句,似乎也不是很難。你是這樣做的嗎?

如果使用這個插件,我需要做什么呢???

對Mybatis已經(jīng)寫好的這些方法來說,我什么都不需要改。

但是Service層可能需要動一下。具體上面這個例子??聪旅娴腟ervice層調(diào)用代碼。

不需要分頁時候的代碼:

public List<SysLoginLog> findSysLoginLog(String loginIp, 
                     String username, 
                     String loginDate, 
                     String exitDate, 
                     String logerr) throws BusinessException { 
  return sysLoginLogMapper.findSysLoginLog(loginIp, username, loginDate, exitDate, logerr); 
} 

增加分頁功能之后的代碼:

public PageHelper.Page<SysLoginLog> findSysLoginLog(String loginIp, 
                     String username, 
                     String loginDate, 
                     String exitDate, 
                     String logerr, 
                     int pageNumber, 
                     int pageSize) throws BusinessException { 
  PageHelper.startPage(pageNumber,pageSize); 
  sysLoginLogMapper.findSysLoginLog(loginIp, username, loginDate, exitDate, logerr); 
  return PageHelper.endPage(); 
} 

相比較而言:

返回值從List<SysLoginLog>改成了PageHelper.Page<SysLoginLog>

入?yún)⒃黾恿藘蓚€,pageNumber和pageSize

然后過程代碼中,先調(diào)用了

PageHelper.startPage(pageNumber,pageSize); 

startPage是告訴攔截器說我要開始分頁了。分頁參數(shù)是這兩個。

然后調(diào)用原來的Mybatis代碼:

sysLoginLogMapper.findSysLoginLog(loginIp, username, loginDate, exitDate, logerr); 

這里沒有接收返回值,會不會覺得奇怪?實際上PageHelper已經(jīng)自動接收了返回值。通過下面的代碼可以取出返回值:

PageHelper.endPage(); 

同時endPage告訴攔截器說我結束分頁了,不需要你了。

你覺得這樣的代碼簡單還是手寫sql簡單呢?

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • MybatisPlus創(chuàng)建時間不想用默認值的問題

    MybatisPlus創(chuàng)建時間不想用默認值的問題

    MybatisPlus通過FieldFill注解和MpMetaObjectHandler類支持自動填充字段功能,特別地,可以設置字段在插入或更新時自動填充創(chuàng)建時間和更新時間,但在特定場景下,如導入數(shù)據(jù)時,可能需要自定義創(chuàng)建時間
    2024-09-09
  • Java后端服務間歇性響應慢的問題排查與解決

    Java后端服務間歇性響應慢的問題排查與解決

    之前在公司內(nèi)其它團隊找到幫忙排查的一個后端服務連接超時問題,問題的表現(xiàn)是服務部署到線上后出現(xiàn)間歇性請求響應非常慢(大于10s),但是后端業(yè)務分析業(yè)務日志時卻沒有發(fā)現(xiàn)慢請求,所以本文給大家介紹了Java后端服務間歇性響應慢的問題排查與解決,需要的朋友可以參考下
    2025-03-03
  • Struts2之Action接收請求參數(shù)和攔截器詳解

    Struts2之Action接收請求參數(shù)和攔截器詳解

    這篇文章主要介紹了Struts2之Action接收請求參數(shù)和攔截器詳解,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • Java中Synchronized的用法解析

    Java中Synchronized的用法解析

    synchronized是Java中的關鍵字,是一種同步鎖,本文給大家詳細介紹Java Synchronized 用法大全,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Spring框架中一個有用的小組件之Spring Retry組件詳解

    Spring框架中一個有用的小組件之Spring Retry組件詳解

    Spring Retry 是從 Spring batch 中獨立出來的一個功能,主要實現(xiàn)了重試和熔斷,對于那些重試后不會改變結果,毫無意義的操作,不建議使用重試,今天通過本文給大家介紹Spring Retry組件詳解,感興趣的朋友一起看看吧
    2021-07-07
  • JDK8?中Arrays.sort()?排序方法詳解

    JDK8?中Arrays.sort()?排序方法詳解

    這篇文章主要介紹了JDK8?中Arrays.sort()?排序方法解讀,本文先行介紹Arrays.sort()中影響排序方式的幾個因素,影響因素主要為數(shù)組類型、數(shù)組大小,結合閾值對排序方式進行選擇,需要的朋友可以參考下
    2023-05-05
  • Java執(zhí)行hadoop的基本操作實例代碼

    Java執(zhí)行hadoop的基本操作實例代碼

    這篇文章主要介紹了Java執(zhí)行hadoop的基本操作實例代碼的相關資料,需要的朋友可以參考下
    2017-04-04
  • 詳解Java中的泛型

    詳解Java中的泛型

    這篇文章主要介紹了Java中的泛型,當我們不確定數(shù)據(jù)類型時,我們可以暫時使用一個字母 T代替數(shù)據(jù)類型,例如寫一個方法,但是我們不知道它是傳遞的是什么數(shù)據(jù)類型,我們就可以使用泛型,到時候只要指明T是什么數(shù)據(jù)類型,就可以使用了,需要的朋友可以參考下
    2023-05-05
  • JAVA 中的大數(shù)字操作類詳解

    JAVA 中的大數(shù)字操作類詳解

    Java的BigInteger類用于處理超出int和long范圍的大整數(shù),而BigDecimal類則用于高精度的浮點數(shù)運算,這兩個類都是Number的子類,提供了一系列方法執(zhí)行加減乘除等運算,BigInteger不支持表示小數(shù),只能表示整數(shù),BigDecimal可以控制小數(shù)位數(shù)和舍入方式,感興趣的朋友一起看看吧
    2024-10-10
  • Java中資源加載的方法及Spring的ResourceLoader應用小結

    Java中資源加載的方法及Spring的ResourceLoader應用小結

    在Java開發(fā)中,資源加載是一個基礎而重要的操作,這篇文章主要介紹了深入理解Java中資源加載的方法及Spring的ResourceLoader應用,本文通過實例代碼演示了通過ClassLoader和Class獲取資源的內(nèi)容,以及使用Spring的ResourceLoader加載多個資源的過程,需要的朋友可以參考下
    2024-01-01

最新評論