MyBatis动态SQL foreach标签实现批量插入
来源:互联网 发布:远距离网络传输 编辑:程序博客网 时间:2024/05/16 19:42
需求:查出给定id的记录:
<select id="getEmpsByConditionForeach" resultType="com.test.beans.Employee"> 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的值 #{变量名}就能取出变量的值也就是当前遍历出的元素
测试方法:
@Testpublic void testDynamicSqlTest() throws IOException{SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//1、获取到的SqlSession不会自动提交数据SqlSession openSession = sqlSessionFactory.openSession();try{ EmployeeMapperDymanicSQL mapper=openSession.getMapper(EmployeeMapperDymanicSQL.class);/*Employee employee=new Employee(1,"lili",null,"1");*/List<Employee> emps=mapper.getEmpsByConditionForeach(Arrays.asList(1,2,3,4)); for (Employee e:emps){System.out.println(e);}}finally {openSession.close();}}
foreach标签也可以实现实现批量插入(删除)数据:
这里以批量插入数据为例:
<insert id="addEmps"> INSERT INTO tb1_emplyee(last_name,email,gender,d_id) VALUES <foreach collection="emps" item="emp" separator=","> (#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id}) </foreach></insert>对应的接口:
public void addEmps(@Param("emps")List<Employee> emps);
测试方法
@Testpublic void testBatchSave() throws IOException{SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//1、获取到的SqlSession不会自动提交数据SqlSession openSession = sqlSessionFactory.openSession();try{EmployeeMapperDymanicSQL mapper=openSession.getMapper(EmployeeMapperDymanicSQL.class);List<Employee> emps=new ArrayList<Employee>();emps.add(new Employee(null,"Eminem","Eminem@126.com","1",new Department(1)));emps.add(new Employee(null,"2Pac","2Pac@126.com","1",new Department(1)));mapper.addEmps(emps);openSession.commit();}finally {openSession.close();}}
阅读全文
0 0
- MyBatis动态SQL foreach标签实现批量插入
- Mybatis动态sql批量插入
- MyBatis--动态SQL---foreach标签--数组
- MyBatis--动态SQL---foreach标签--List
- MyBatis动态sql_foreach下foreach批量插入两种方式
- mybatis用foreach批量插入
- MyBatis使用动态SQL批量插入数据
- Mybatis 转义字符,动态sql , 批量插入,批量更新
- MyBatis--动态SQL---foreach标签--范型(类)
- mybatis动态查询之foreach,sql标签查询
- mybatis动态sql中foreach标签的使用
- mybatis动态sql中foreach标签的使用
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
- myBatis使用foreach批量插入数据
- mybatis+oracle+foreach list 批量插入数据
- MyBatis foreach语句批量插入数据
- mybatis 批量插入实现。
- leetcode101. Symmetric Tree
- 螺旋矩阵-由内向外旋转
- iTOP-4412 触摸屏勘误
- 双绞线
- 一个简单的网页爬虫
- MyBatis动态SQL foreach标签实现批量插入
- 关于WannaCry
- 概念模型与关系模型和关系规范化
- 原来编程还可以这样学习
- Mysql单表操作
- bzoj1577 [Usaco2009 Feb]庙会捷运Fair Shuttle 贪心+线段树
- AndroidStudio之jcenter mavenCentral
- linux shell命令的快捷键
- 编写String 类的构造函数,析构函数和赋值函数