MyBatis+MyBatisPlus中遇到的一些坑及解決
MyBatis+MyBatisPlus中遇到的一些坑
MyBatis是很常用的持久層框架,MyBatisPlus是一個 MyBatis 的增強工具.在實際工作中這兩者就像是咖啡伴侶一樣如影隨形.
但是總會遇到這樣或那樣的問題,可能是一個失誤,也可能是踩了個坑
坑一:MyBatisPlus分頁不生效
自己沒開啟分頁插件,是誰更坑呢?
?@Configuration ?public class WebMvcConfig extends WebMvcConfigurationSupport { ? ?@Bean ? ? public PaginationInterceptor paginationInterceptor() { ? ? ? ? return new PaginationInterceptor(); ? ? } ?}
坑二:一對多關(guān)聯(lián)查詢查詢總條數(shù)錯誤
這是個真坑,好多人踩過.之所以會錯誤,是因為MyBatisPlus的分頁是在SQL語句最后添加limit實現(xiàn)的,這就導(dǎo)致一對多關(guān)聯(lián)查詢出來的多條數(shù)據(jù)被記入了總條數(shù)參加了分頁.
想要解決,簡單粗暴的就是把關(guān)聯(lián)查詢分開,先查"一"的相關(guān)信息,然后遍歷再查"多"的相關(guān)信息.
作為一個認(閑)真(的)負(蛋)責(zé)(疼)的程序猿,肯定得用一些看上去高(沒)大(卵)上(用)的方式.
實體 @Data @ApiModel(value="產(chǎn)品對象") public class EcProduct{ @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "產(chǎn)品名稱") private String name; @ApiModelProperty(value = "添加時間") private Date createDate; @ApiModelProperty(value = "操作人ID") private Integer optUserId; //一對一 private EcInsuranceCompany insuranceCompany; //一對多 private List<EcProductDuty> dutys; } @Data @ApiModel(value="公司對象") public class EcInsuranceCompany{ @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "公司名稱") private String name; } @Data @ApiModel(value="信息對象") public class EcProductDuty { @TableId(value = "id", type = IdType.AUTO) private Integer id; private String detail; } mapper.xml <resultMap id="productPlanRespone" type="XXX.EcProduct"> <id property="id" column="id"/> <result property="name" column="name"/> ............. <association property="insuranceCompany" javaType="XXX.EcInsuranceCompany"> <id property="id" column="iid"/> ............ </association> <collection property="dutys" column="id" select="XXXX.getProductDutyByPlanId"> </collection> </resultMap> <select id="XXX" resultMap="productPlanRespone"> </select>
mybatisplus遇到的問題
使用MyBatis-plus代碼生成器 出錯
1、使用myabtis-plus代碼自動生成器,啟動時出現(xiàn)下面這個錯誤
在pom.xml中添加下面依賴
? <dependency> ? ? ? ? ? ? <groupId>org.apache.velocity</groupId> ? ? ? ? ? ? <artifactId>velocity-engine-core</artifactId> ? ? ? ? ? ? <version>2.2</version> ? ? ? ? </dependency> <dependency> ? ? ? ? ? ? <groupId>com.baomidou</groupId> ? ? ? ? ? ? <artifactId>mybatis-plus-generator</artifactId> ? ? ? ? ? ? <version>3.4.1</version> ? ? ? ? </dependency>
2、代碼生成器啟動以后,發(fā)現(xiàn)已經(jīng)自動創(chuàng)建了一些包和代碼
打開entiry包下的實體類User,發(fā)現(xiàn)顯示包不存在
在pom.xml配置文件中添加下面依賴
? ?<!--配置ApiModel在實體類中不生效--> ? ? <dependency> ? ? ? ? <groupId>com.spring4all</groupId> ? ? ? ? <artifactId>spring-boot-starter-swagger</artifactId> ? ? ? ? <version>1.5.1.RELEASE</version> ? ? </dependency>
至此,使用MyBatis-plus代碼生成器 遇到的錯誤全部總結(jié)完畢。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用詳解
這篇文章主要介紹了MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03Java 使用 HttpClient 發(fā)送 GET請求和 POST請求
本文主要介紹了Java 使用 HttpClient 發(fā)送 GET請求和 POST請求,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08java.net.UnknownHostException異常的一般原因及解決步驟
關(guān)于java.net.UnknownHostException大家也許都比較熟悉,這篇文章主要給大家介紹了關(guān)于java.net.UnknownHostException異常的一般原因及解決步驟,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-02-02Springcloud Config支持本地配置文件的方法示例
這篇文章主要介紹了Springcloud Config支持本地配置文件的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02啟動 Eclipse 彈出 Failed to load the JNI shared library jvm.dll
這篇文章主要介紹了有時候,新電腦上回碰到打開Eclipse時,彈出提示“Failed to load the JNI shared library jvm.dll”錯誤,這里給大家分享解決方案2016-08-08Maven如何構(gòu)建可執(zhí)行的jar包(包含依賴jar包)
這篇文章主要介紹了Maven如何構(gòu)建可執(zhí)行的jar包(包含依賴jar包) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11SpringCloud Alibaba使用Seata處理分布式事務(wù)的技巧
在傳統(tǒng)的單體項目中,我們使用@Transactional注解就能實現(xiàn)基本的ACID事務(wù)了,隨著微服務(wù)架構(gòu)的引入,需要對數(shù)據(jù)庫進行分庫分表,每個服務(wù)擁有自己的數(shù)據(jù)庫,這樣傳統(tǒng)的事務(wù)就不起作用了,那么我們?nèi)绾伪WC多個服務(wù)中數(shù)據(jù)的一致性呢?跟隨小編一起通過本文了解下吧2021-06-06springboot使用redis實現(xiàn)從配置到實戰(zhàn)
本文主要介紹了springboot使用redis ,采用的是RedisTemplate的形式,還有一種采用spring支持的注解進行訪問緩存,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08