欢迎访问优讯网!
您当前的位置:首页 > 爱编程

MyBatis动态SQL foreach标签实现批量插入的方法示例

时间:2020-06-16 09:00:24  来源:优讯网  作者:小卡司  浏览次数:
这篇文章主要介绍了MyBatis动态SQL foreach标签实现批量插入的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
 

需求:查出给定id的记录:

1
2
3
4
5
6
<select id="getEmpsByConditionForeach" resultType="comtestbeansEmployee">
    SELECT * FROM tb1_emplyee WHERE id IN
    <foreach collection="list" item="item_id" separator="," open="(" close=")">
      #{item_id}
    </foreach>
</select>

关于foreach标签,有几个属性应该注意一下:

  • collection:指定要遍历的集合: 
  • list类型的参数会特殊处理封装在map中,map的key就叫list 
  • item:将当前遍历出的元素赋值给指定的变量 
  • separator:每个元素之间的分隔符 
  • open:遍历出所有结果拼接一个开始的字符 
  • close:遍历出所有结果拼接一个结束的字符 
  • index:索引。遍历list的时候是index就是索引,item就是当前值 
  • 遍历map的时候index表示的就是map的key,item就是map的值 
  • #{变量名}就能取出变量的值也就是当前遍历出的元素 

测试方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Test
  public void testDynamicSqlTest() throws IOException{
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    //1、获取到的SqlSession不会自动提交数据
    SqlSession openSession = sqlSessionFactoryopenSession();
    try
    {
        EmployeeMapperDymanicSQL mapper=openSessiongetMapper(
EmployeeMapperDymanicSQLclass);

        /*Employee employee=new Employee(1,"lili",null,"1");*/
        List<Employee> emps=mappergetEmpsByConditionForeach(
ArraysasList(
1,2,3,4));
        for (Employee e:emps){
          Systemoutprintln(e);
        }
  
    }
    finally {
      openSessionclose();
    }
  }

foreach标签也可以实现实现批量插入(删除)数据:

这里以批量插入数据为例:

1
2
3
4
5
6
7
<insert id="addEmps">
    INSERT INTO tb1_emplyee(last_name,email,gender,d_id)
    VALUES 
    <foreach collection="emps" item="emp" separator=",">
      (#{emplastName},#{empemail},#{empgender},#{empdeptid})
    </foreach>
</insert>

对应的接口:

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

测试方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Test
  public void testBatchSave() throws IOException{
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    //1、获取到的SqlSession不会自动提交数据
    SqlSession openSession = sqlSessionFactoryopenSession();
    try
    {
      EmployeeMapperDymanicSQL mapper=openSessiongetMapper(
EmployeeMapperDymanicSQLclass);

      List<Employee> emps=new ArrayList<Employee>();
      empsadd(new Employee(null,"Eminem","Eminem@com","1",new Department(1)));
      empsadd(new Employee(null,"2Pac","2Pac@com","1",new Department(1)));
      mapperaddEmps(emps);
      openSessioncommit();
    }
    finally {
      openSessionclose();
    
  }

到此这篇关于MyBatis动态SQL foreach标签实现批量插入的方法示例的文章就介绍到这了

来顶一下
返回首页
返回首页

原文链接:https://www.jb51.net/article/188706.htm


推荐资讯
如何下载旧版centos iso镜像 如何下载迷你mini版的centos镜像
如何下载旧版centos i
计算机的正确使用姿势 电脑痴如何正确的使用电脑
计算机的正确使用姿势
好用的后台管理的前端框架模版H-ui H-ui框架模版分享
好用的后台管理的前端
微信电脑多开方法 无需辅助电脑版微信双开方法分享
微信电脑多开方法 无
相关文章
栏目更新
栏目热门