zoukankan      html  css  js  c++  java
  • 使用foreach进行批量更新

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

    2映射文件配置

    <!-- 批量保存 -->
    <!--public void addEmps(@Param("emps")List<Employee> emps); -->
    <!--MySQL下批量保存:可以foreach遍历 mysql支持values(),(),()语法-->
    <insert id="addEmps">
    insert into tbl_employee(last_name,email,gender,did)
    values
    <foreach collection="emps" item="emp" separator=",">
    (#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
    </foreach>
    </insert><!-- -->

    <!-- 这种方式需要数据库连接属性allowMultiQueries=true;
    这种分号分隔多个sql可以用于其他的批量操作(删除,修改) -->
    <!-- <insert id="addEmps">
    <foreach collection="emps" item="emp" separator=";">
    insert into tbl_employee(last_name,email,gender,d_id)
    values(#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
    </foreach>
    </insert> -->

    3进行测试

    @Test
    public void testBatchSave() throws IOException{
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    SqlSession openSession = sqlSessionFactory.openSession();
    try{
    EmployeeMapperDynamicSQL mapper = openSession.getMapper(EmployeeMapperDynamicSQL.class);
    List<Employee> emps = new ArrayList<>();
    emps.add(new Employee(null, "smith0x1", "smith0x1@atguigu.com", "1",new Department(1)));
    emps.add(new Employee(null, "allen0x1", "allen0x1@atguigu.com", "0",new Department(1)));
    mapper.addEmps(emps);
    openSession.commit();
    }finally{
    openSession.close();
    }
    }

  • 相关阅读:
    AngularJS
    Java
    Java
    AngularJS
    Java
    Java
    AngularJS
    Java
    Debian
    Java
  • 原文地址:https://www.cnblogs.com/zhangzhiqin/p/8567452.html
Copyright © 2011-2022 走看看