MyBatis向數據庫中批量插入數據


Foreach標簽

 

foreach:

collection:指定要遍歷的集合;

表示傳入過來的參數的數據類型。該參數為必選。要做 foreach 的對象,作為入參時,List 對象默認用 list 代替作為鍵,

數組對象有 array 代替作為鍵,Map 對象沒有默認的鍵。當然在作為入參時可以使用 @Param(keyName) 來設置鍵,

設置 keyName 后,list,array 將會失效

item:將當前遍歷出的元素賦值給指定的變量,然后用#{變量名},就能取出變量的值,也就是當前遍歷出的元素

separator:每個元素之間的分隔符, select * from Emp where id in(1,2,3)相當於1,2,3之間的","

open:以為開始

closse:以什么結束

Index:索引,遍歷list的時候index就是索引,遍歷map的時候index表示的就是mapkey,item就是map的值.

DAO接口中定義的方法:

public interface EmpMapper {

//使用foreach

public List<Emp> getEmpsByConditionLike(@Param("ids")List<Integer> ids);

}

@Param("ids") 將入參改名為ids 在標簽 froeach中使用

映射文件:

<mapper namespace="cn.bdqn.mybatis.dao.EmpMapper">

 

<select id="getEmpsByConditionLike" resultType="cn.bdqn.mybatis.been.Emp">

select * from Emp

where id in

<foreach collection="ids" item="item_id" open="(" separator=","

close=")">

#{item_id}

</foreach>

</select>

</mapper>

測試代碼:

public static void main(String[] args) throws IOException {

String resource="mybatis-config.xml";

InputStream resourceAsStream = Resources.getResourceAsStream(resource);

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

SqlSession session = sessionFactory.openSession();

EmpMapper mapper = session.getMapper(EmpMapper.class);

List list = new ArrayList();

list.add(1);

list.add(2);

List<Emp> emps=mapper.getEmpsByConditionLike(list);

for (Emp emp2 : emps) {

System.out.println(emp2);

 

}

 

 

 

 

 

Foreach批量插入:

映射配置文件

<!--

foreach向數據庫中批量插入記錄

public void insertSum(@Param("emps")List<Emp> emps );

  -->

  <insert id="insertSum">

   insert into emp(last_name,email,gender,d_id) values

   <foreach collection="emps" item="emp"  separator="," >

   (#{emp.last_name},#{emp.email},#{emp.gender},#{emp.d_id})

   </foreach>

  </insert>

 

本人創建了一個java架構師資料分享群,歡迎工作兩年以上的同學加入,一起討論,群號:943248961,或掃碼加入

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM