Mybatis使用foreach执行mysql批量插入

2025-10-13 21:26:58

1、在dao中定义一个批量插入的方法:

package com.gwolf.dao;

import java.util.List;

import java.util.Map;

import org.apache.ibatis.annotations.MapKey;

import org.apache.ibatis.annotations.Param;

import com.gwolf.bean.Employee;

public interface EmployeeMapper {

        

        

        

        public void addEmps(@Param("emps") List<Employee> emps);

        

}

Mybatis使用foreach执行mysql批量插入

2、在xml文件中定义sql语句:我们需要使用foreach遍历集合的内容。

<insert id="addEmps" parameterType="employee"  >

        insert into tbl_emp(emp_name,email,gender) 

        

        values

        

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

                        (#{emp.empName},#{emp.email},#{emp.gender})

        </foreach>

Mybatis使用foreach执行mysql批量插入

3、在单元测试中定义一个批量插入的单元测试方法:

package com.gwolf;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

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 com.gwolf.bean.Employee;

import com.gwolf.dao.EmployeeMapper;

public class AppTest {

        

        

        

        @Test

        public void testBatchSave() throws Exception {

                String resource = "mybatis-config.xml";

                InputStream inputStream = Resources.getResourceAsStream(resource);

                SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

                

                SqlSession sqlSession = sqlSessionFactory.openSession();

                

                try {

                        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);

                        

                        List<Employee> emps = new ArrayList<Employee>();

                        

                        emps.add(new Employee(null, "cc", "gwolf_201@126.com", "M"));

                        emps.add(new Employee(null, "ce", "gwolf_201@126.com", "M"));

                        

                         employeeMapper.addEmps(emps);;

                }finally {

                        sqlSession.close();

                }

        }

        

}

Mybatis使用foreach执行mysql批量插入

4、执行单元测试方法,查看sql语句打印。

Mybatis使用foreach执行mysql批量插入

5、如果需要批量保存,还可以使用foreach遍历,mysql支持values(),()语法。

Mybatis使用foreach执行mysql批量插入

6、我们还可以循环遍历插入sql:

<insert id="addEmps" parameterType="employee">

        

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

                insert into tbl_emp(emp_name,email,gender) 

        

        values

                (#{emp.empName},#{emp.email},#{emp.gender})

        </foreach>

  

  </insert>

Mybatis使用foreach执行mysql批量插入

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢