MyBatis批量添加數(shù)據(jù)2種實(shí)現(xiàn)方法
1.通過(guò)for each標(biāo)簽拼接sql(數(shù)量較少的時(shí)候使用)
a.拼接values()
public int addPersons(@Param("persons") List<Person> persons);//接口
<insert id="addPersons">
insert into person(username,email,gender) VALUES
<foreach collection="persons" item="person" separator=";">
(#{person.username},#{person.email},#{person.gender})
</foreach>
</insert>
<!--類似的效果 insert into person(username,email,gender) VALUES("zhangsan","zhangsan@163.com","F"),("lisi","lisi@163.com","F"),... -->
b.拼接insert sql語(yǔ)句(需設(shè)置屬性allowMultiQueries=true)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true //需設(shè)置屬性
jdbc.username=root
jdbc.password=123
public int addPersons(@Param("persons") List<Person> persons);//接口
<insert id="addPersons">
insert into person(username,email,gender) VALUES
<foreach collection="persons" item="person" separator=",">
(#{person.username},#{person.email},#{person.gender})
</foreach>
</insert>
<!--類似的效果 insert into person(username,email,gender) VALUES("tom","zhangsan@163.com","F");
insert into person(username,email,gender) VALUES("jerry","lisi@163.com","F");...-->
2.基于Session的ExecutorType進(jìn)行批量添加
先定義一條插入一條記錄的方法
public int addPerson(User user); //接口
<insert id="addPerson" parameterType="user">
insert into t_user(username,address) VALUES (#{username},#{address})
</insert>
在java代碼中使用
public void testBatchForExecutor()
{
SqlSession sqlSession = this.getSqlSessionFactory().openSession(ExecutorType.BATCH); //通過(guò)session設(shè)置ExecutorType開(kāi)啟批量添加,類似jdbc的addBatch操作
PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
for (int i = 0; i <10000 ; i++)
{
personMapper.addPerson(new User("jerry","bj"));
}
sqlSession.commit();
sqlSession.close();
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot項(xiàng)目的多文件兼多線程上傳下載
本文主要介紹了SpringBoot項(xiàng)目的多文件兼多線程上傳下載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
logback的LevelFilter日志過(guò)濾器源碼解讀
這篇文章主要為大家介紹了logback的LevelFilter日志過(guò)濾器源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
SpringBoot的配置文件(properties與yml)使用方法
配置文件中的配置類型有兩類,一類是系統(tǒng)配置項(xiàng),這種配置的格式都是固定的,是給系統(tǒng)使用的,另一種是用戶自定義配置,用戶可以隨意地規(guī)定配置項(xiàng)的格式,又用戶自行去設(shè)置和讀取,這篇文章主要介紹了SpringBoot的配置文件(properties與yml)使用方法,需要的朋友可以參考下2023-08-08
java基于JDBC連接Oracle 11g Release2實(shí)例分析
這篇文章主要介紹了java基于JDBC連接Oracle 11g Release2的方法,實(shí)例分析了JDBC連接Oracle 11g Release2容易出現(xiàn)的異常與解決方法,需要的朋友可以參考下2015-06-06
解析Java中的隊(duì)列和用LinkedList集合模擬隊(duì)列的方法
這篇文章主要介紹了解析Java中的隊(duì)列和用LinkedList集合模擬隊(duì)列的方法,相關(guān)算法的實(shí)現(xiàn)也是ACM中的常見(jiàn)題目,需要的朋友可以參考下2015-08-08
Java報(bào)錯(cuò)sun.misc.Unsafe.park(Native Method)問(wèn)題
這篇文章主要介紹了Java報(bào)錯(cuò)sun.misc.Unsafe.park(Native Method)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
idea項(xiàng)目代碼打包為jar包的超詳細(xì)步驟
因?yàn)闃I(yè)務(wù)開(kāi)發(fā)場(chǎng)景需要,將開(kāi)發(fā)項(xiàng)目中的Java類打成一個(gè)jar包引入到外部工具中,下面這篇文章主要給大家介紹了關(guān)于idea項(xiàng)目代碼打包為jar包的相關(guān)資料,需要的朋友可以參考下2023-01-01

