16、mybatis动态sql 批量插入
生活随笔
收集整理的這篇文章主要介紹了
16、mybatis动态sql 批量插入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1、EmployeeMapper
- 2、EmployeeMapper.xml(以逗號間隔執行一條語句)(推薦)
- 3、Test
- 4、以分號間隔執行每條語句(第二種方式)
- 5、Oracle下的批量插入(方式一)
- 6、Oracle下的批量插入(方式二)
1、EmployeeMapper
package com.mi.dao;import com.mi.pojo.Employee; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param;import java.util.List; import java.util.Map;public interface EmployeeMapper {public void insertEmps(@Param("emps") List<Employee> emps);}2、EmployeeMapper.xml(以逗號間隔執行一條語句)(推薦)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--指定為接口的全類名--> <mapper namespace="com.mi.dao.EmployeeMapper"><!--id 為接口的方法名--> <insert id="insertEmps">insert into employee (last_name,gender,d_id)values<foreach collection="emps" item ="emp" separator=",">(#{emp.lastName},#{emp.gender},#{emp.dept.id})</foreach></insert> </mapper>3、Test
package com.mi.test;import com.mi.dao.DeptMapper; import com.mi.dao.EmployeeMapper; import com.mi.pojo.Dept; import com.mi.pojo.Employee; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test;import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;public class TestMybatis {public SqlSessionFactory getSqlSessionFactory() throws IOException {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);return new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void insertEmps() throws IOException {//1、獲取SqlSessionFactory對象SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//2、獲取Sqlsesion對象SqlSession sqlSession = sqlSessionFactory.openSession();try {//3、獲取接口的實現類對象//會為接口自動創建一個代理對象,代理對象去執行增刪改查方法EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);List<Employee> emps = new ArrayList<Employee>();emps.add(new Employee(null,"smith","1",new Dept(1)));emps.add(new Employee(null,"lucy","0",new Dept(1)));mapper.insertEmps(emps);sqlSession.commit();}finally {sqlSession.close();}} }4、以分號間隔執行每條語句(第二種方式)
<insert id="insertEmps"><foreach collection="emps" item="emp" separator=";">insert into employee (last_name,gender,d_id)values(#{emp.lastName},#{emp.gender},#{emp.dept.id})</foreach></insert>5、Oracle下的批量插入(方式一)
<!--Oracle下的批量插入--><insert id="insertEmps"><foreach collection="emps" item="emp" open="begin" close="end;">insert into emp (empno,ename,deptno)values (emp_seq.nextval,#{emp.lastName},#{emp.dept.id});</foreach></insert>6、Oracle下的批量插入(方式二)
<!--Oracle下的批量插入第二種方式--><insert id="insertEmps">insert into emp (empno,ename,deptno)select emp_seq.nextval, last_name,d_id from (<foreach collection="emps" item="emp" separator="union">select #{emp.lastName} last_name,#{emp.dept.id} d_id from dual</foreach>)</insert>文章目錄
- 1、EmployeeMapper
- 2、EmployeeMapper.xml(以逗號間隔執行一條語句)(推薦)
- 3、Test
- 4、以分號間隔執行每條語句(第二種方式)
- 5、Oracle下的批量插入(方式一)
- 6、Oracle下的批量插入(方式二)
總結
以上是生活随笔為你收集整理的16、mybatis动态sql 批量插入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 15、mybatis一对多关联查询 co
- 下一篇: 17、mybatis两个内置参数