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-11Springboot內(nèi)置Tomcat配置參數(shù)調(diào)優(yōu)方式
這篇文章主要介紹了Springboot內(nèi)置Tomcat配置參數(shù)調(diào)優(yōu)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06springboot基于Redis發(fā)布訂閱集群下WebSocket的解決方案
這篇文章主要介紹了springboot基于Redis發(fā)布訂閱集群下WebSocket的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01JAVA時(shí)間存儲(chǔ)類Period和Duration使用詳解
這篇文章主要為大家介紹了JAVA時(shí)間存儲(chǔ)類Period和Duration使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09JAVA面試題 從源碼角度分析StringBuffer和StringBuilder的區(qū)別
這篇文章主要介紹了JAVA面試題 從源碼角度分析StringBuffer和StringBuilder的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來(lái)一起學(xué)習(xí)下吧2019-07-07Java BufferedImage轉(zhuǎn)換為MultipartFile方式
這篇文章主要介紹了Java BufferedImage轉(zhuǎn)換為MultipartFile方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09