亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Mybatis分頁(yè)插件 - 示例代碼

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

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

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

假設(shè)我們已經(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> 

雖然是舉個(gè)簡(jiǎn)單例子,但是這里的xml并沒那么簡(jiǎn)單。

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

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

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

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

但是Service層可能需要?jiǎng)右幌?。具體上面這個(gè)例子。看下面的Service層調(diào)用代碼。

不需要分頁(yè)時(shí)候的代碼:

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

增加分頁(yè)功能之后的代碼:

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)⒃黾恿藘蓚€(gè),pageNumber和pageSize

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

PageHelper.startPage(pageNumber,pageSize); 

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

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

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

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

PageHelper.endPage(); 

同時(shí)endPage告訴攔截器說我結(jié)束分頁(yè)了,不需要你了。

你覺得這樣的代碼簡(jiǎn)單還是手寫sql簡(jiǎn)單呢?

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

    MybatisPlus創(chuàng)建時(shí)間不想用默認(rèn)值的問題

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

    Java后端服務(wù)間歇性響應(yīng)慢的問題排查與解決

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

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

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

    Java中Synchronized的用法解析

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

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

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

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

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

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

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

    詳解Java中的泛型

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

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

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

    Java中資源加載的方法及Spring的ResourceLoader應(yīng)用小結(jié)

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

最新評(píng)論