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

