forearch
另外一个动态 SQL 通用的必要操作是迭代一个集合, 通常是构建在 IN 条件中的.
正常的sql 语句中使用in的例子
select * from tb_user where id in(1,2,3,4)
在mysql 中,就将后面的查询的条件(1,2,3,4) 封装成一个集合传入,并且用forearch处理
package com.lin.mapper; import com.lin.pojo.User; import org.apache.ibatis.annotations.Param; import java.util.List; public interface UserMapper { /** * 动态查询 In * @param list * @return */ List<User> selIn(@Param("list") List<Integer> list); }
mapper代码
参数说明
collection :传入的集合名称
open:以什么符号作为左外拼接 一般根据sql语法 用 (
separator:以什么符号作为分隔 , 一般根据sql语法 用 ,
close :以什么符号作为右外拼接,一般根据sql语法 用 )
item:遍历的集合名
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.lin.mapper.UserMapper"> <select id="selIn" parameterType="list" resultType="User"> select * from tb_user where id in <foreach collection="list" open="(" separator="," close=")" item="item"> #{item} </foreach> </select> </mapper>
测试代码
package com.lin.test; import com.lin.mapper.UserMapper; import com.lin.pojo.User; import com.lin.util.MyBatisUtil; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.ArrayList; import java.util.List; public class TestDynamicSql { @Test public void testIn(){ SqlSession session = MyBatisUtil.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); List<User> userList = mapper.selIn(list); for (User user : userList) { System.out.println(user); } session.close(); } }
测试结果
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
在我们实际开发过程中动态SQL的使用远多于静态是SQL(前面用的所有sql都是静态的,也就是一成不变的),而动态SQL是根据条件的不同,SQL语句也会随之动态的改变,ifif用于进行条件判断,test属性用于指定判断条件.为了拼接条件,在SQL语句后强行添加1=1的恒成立条件.但是会造成浪费资源等情况所以需要使用where标签来配合wherewhere用于管理where子句.有如下功能:a)如果没
这是一组标签,功能类似于switch...case..用这个标签就要注意了,因为where永远后面只有一个子句,也就是只有一个查询条件mybatis.org//DTDMapper3.0//EN""http://mybatis.o
set子句.有如下功能:a)如果有条件满足,会添加set关键字并执行sql语句b)如果第一个条件中有逗号,但后续的条件没有满足的,会自动去尾部逗号。c)如果修改条件都不满足就不生产set语句,出现错误,可以使用在set中添加id=#{id}来避免错误updatetb_user 添加我为好友,拉您入交流群! 请使用微信扫一扫!
添加我为好友,拉您入交流群!
请使用微信扫一扫!