淺談mybatisPlus的Ipage分頁(yè)和map參數(shù)的問(wèn)題
mybatisPlus的Ipage分頁(yè)和map參數(shù)
前提:先有一個(gè)map類型的參數(shù)
Map params= new HashMap();
params.put("name","張三");
params.put("age","23");
第一種情況
List<Map<String,Object>> selectList(@Param("params") HashMap params);
這種也是我們最常用的一種
不管參數(shù)是什么類型都可以省略,但是要寫(xiě)上返回值類型(根據(jù)自己的情況)
<select id="selectList" resultType="java.util.HashMap">
取值時(shí)只需要在xml文件內(nèi)用map中的鍵值來(lái)取數(shù)據(jù)
<if test="name != '' and name != null">
AND name=#{name}
</if>
<if test="age != '' and age != null">
AND age=#{age}
</if>
第二種情況
dao層聲明參數(shù)和返回值類型
IPage selectAll(IPage page,@Param("params") HashMap params);
<select id="selectAll" resultType="java.util.HashMap">
一般我們?cè)趚xx.xml里面取map的值都是直接通過(guò)#{鍵}來(lái)取的
但是當(dāng)傳入的參數(shù)不止一個(gè)時(shí),取map里面的值就需要用參數(shù)去取
<if test="params.name != '' and params.name != null">
AND name=#{params.name}
</if>
<if test="params.age != '' and params.age != null">
AND age=#{params.age}
</if>
這個(gè)params就是dao層傳入的map類型的參數(shù)
直接通過(guò)鍵來(lái)取值無(wú)法取到值
mybatisPlus IPage分頁(yè)常見(jiàn)問(wèn)題(坑)
觀前提示:
本文所使用的IDEA版本為ultimate 2019.1,JDK版本為1.8.0_141。
1.TooManyResultsException
最近在使用Mybatis-plus的IPage插件分頁(yè)時(shí),出現(xiàn)了以下的莫名其妙的錯(cuò)誤
Resolved [org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 6]
然后檢查我寫(xiě)的Controller、Service、Mapper、Mapper.xml,結(jié)果還是一無(wú)所獲,以下是我的Mapper和Mapper.xml(大致內(nèi)容一致)
Mapper
public interface ExampleMapper {
IPage<EntityDto> selectEntityAndPage(@Param("param") Entity param, Page<Entity> page);
}
Mapper.xml的select部分
<select id="selectEntityAndPage" parameterType="cn.com.example.enetity.Entity " resultType="cn.com.example.dto.EntityDto">
select id, name from table
</select>
百度了一下才發(fā)現(xiàn)了這個(gè)深坑
mybatis-plus 中page參數(shù)不在第一個(gè)位置,返回的結(jié)果集接收對(duì)象不被認(rèn)為是一個(gè)集合,而放在第一位就沒(méi)有問(wèn)題。
所以我改寫(xiě)了Mapper參數(shù)的順序
IPage<EntityDto> selectEntityAndPage(Page<Entity> page, @Param("param") Entity param);
問(wèn)題解決。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java.lang.UnsupportedClassVersionError異常正確解決方法
java.lang.UnsupportedClassVersionError異常通常發(fā)生在嘗試在較低版本的Java虛擬機(jī)上運(yùn)行使用更高版本的Jav 編譯器編譯的類文件時(shí),下面就來(lái)介紹一下解決方法,感興趣的可以了解一下2024-05-05
Mybatis把返回結(jié)果封裝成map類型的實(shí)現(xiàn)
本文主要介紹了Mybatis把返回結(jié)果封裝成map類型的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Java?中的?clone(?)?和?new哪個(gè)效率更高
很多朋友不太清楚clone()和new那個(gè)更快?針對(duì)這個(gè)問(wèn)題我百度了好多資料,最終小編總結(jié)下關(guān)于Java?中的?clone(?)?和?new哪個(gè)效率更高的問(wèn)題,感興趣的朋友跟隨小編一起看看吧2021-12-12
mybatis-generator-gui根據(jù)需求改動(dòng)示例
這篇文章主要為大家介紹了mybatis-generator-gui根據(jù)需求改動(dòng)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
SpringBoot集成Druid連接池連接MySQL8.0.11
這篇博客簡(jiǎn)單介紹spring boot集成druid連接池的簡(jiǎn)單配置和注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
springboot結(jié)合websocket聊天室實(shí)現(xiàn)私聊+群聊
本文主要介紹了springboot結(jié)合websocket聊天室實(shí)現(xiàn)私聊+群聊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

