Mybatis中通用Mapper的InsertList()用法
關(guān)于通用mapper中的的insertList()方法
針對(duì)通用Mapper中批量新增時(shí)是否需要自增ID或者自定義ID時(shí)需要使用不同包下的insertList()
通常批量插入的ID非自增的ID(及自定義生成ID策略),所以tk.mybatis.mapper.additional.insert.InsertListMapper包下的insertList()經(jīng)常用在項(xiàng)目組中
配合@Intercepts 自定義 Mybatis 攔截 update 操作(添加和修改)
tk.mybatis.mapper.common.special.InsertListMapper包下的insertList()方法
- pom導(dǎo)入:
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-base</artifactId>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-core</artifactId>
</dependency>使用該方法的實(shí)體類主鍵必須是自增的(需要在實(shí)體類中指出)。
如果實(shí)體的主鍵名為’id’,同時(shí)主鍵自增。在不修改代碼的情況下,使用insertList()方法實(shí)現(xiàn)的批量插入數(shù)據(jù)后通用mapper能自動(dòng)回寫主鍵值到實(shí)體對(duì)象中。
- 如以下實(shí)體類和對(duì)應(yīng)mapper:
@Data
@Table(name = "user")
public class User {
@Id
@KeySql(useGeneratedKeys = true)
private Integer id;
private String username;
private String desc;
}
public interface UserMapper extends InsertListMapper<User> {
}如果實(shí)體類主鍵名不是id,同時(shí)實(shí)體類主鍵是自增的,想要實(shí)現(xiàn)實(shí)體類主鍵回寫,需要重寫insertList()方法,其實(shí)就是修改了注解上的值,把@Options注解上的keyProperty值改為自己實(shí)體類的主鍵名
- 如以下實(shí)體類和對(duì)應(yīng)的mapper:
@Data
@Table(name = "user")
public class User {
@Id
@KeySql(useGeneratedKeys = true)
private Integer uid;
private String username;
private String desc;
}
public interface UserMapper extends Mapper<User>, InsertListMapper<User> {
@Options(keyProperty = "uid",useGeneratedKeys = true)
@InsertProvider(type = SpecialProvider.class, method = "dynamicSQL")
int insertList(List<User> recordList);
}tk.mybatis.mapper.additional.insert.InsertListMapper包下的insertList()方法
- pom導(dǎo)入:
<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-extra -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-extra</artifactId>
<version>1.1.5</version>
</dependency>- 該方法不支持主鍵策略,需要在實(shí)體類中指定主鍵。
- 該方法執(zhí)行后不會(huì)回寫實(shí)體類的主鍵值。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java使用靜態(tài)關(guān)鍵字實(shí)現(xiàn)單例模式
這篇文章主要為大家詳細(xì)介紹了java使用靜態(tài)關(guān)鍵字實(shí)現(xiàn)單例模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
基于springboot微信公眾號(hào)開發(fā)(微信自動(dòng)回復(fù))
這篇文章主要介紹了基于springboot微信公眾號(hào)開發(fā)(微信自動(dòng)回復(fù)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
解決微服務(wù)下Mybatis?xml無(wú)效綁定問(wèn)題及分析Invalid?bound?statement
這篇文章主要介紹了解決微服務(wù)下Mybatis?xml無(wú)效綁定問(wèn)題及分析Invalid?bound?statement,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Springboot內(nèi)置Tomcat配置參數(shù)調(diào)優(yōu)方式
這篇文章主要介紹了Springboot內(nèi)置Tomcat配置參數(shù)調(diào)優(yōu)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
springboot基于Redis發(fā)布訂閱集群下WebSocket的解決方案
這篇文章主要介紹了springboot基于Redis發(fā)布訂閱集群下WebSocket的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
JAVA時(shí)間存儲(chǔ)類Period和Duration使用詳解
這篇文章主要為大家介紹了JAVA時(shí)間存儲(chǔ)類Period和Duration使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
JAVA面試題 從源碼角度分析StringBuffer和StringBuilder的區(qū)別
這篇文章主要介紹了JAVA面試題 從源碼角度分析StringBuffer和StringBuilder的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來(lái)一起學(xué)習(xí)下吧2019-07-07
Java BufferedImage轉(zhuǎn)換為MultipartFile方式
這篇文章主要介紹了Java BufferedImage轉(zhuǎn)換為MultipartFile方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

