mybatis in查询

foreach 在SQL语句的in中,可以迭代一个集合。

foreach 元素属性主要有item,index,collection,open,separator,close。

属性描述
item表示集合中每一个元素进行迭代时的别名。
index指定一个名字,表示在迭代过程中每次迭代的位置。
open表名该语句以什么开始。
separator表示每次进行迭代以什么作为分隔符。
close表示该语句以什么结尾。

使用foreach 时候,要注意collection属性的使用不能出错。不同情况下,该属性值不一样。而且改属性是指定的。

一:传入的是单参数且参数类型是一个List的时候。 collection=”list”;
二:传入的是但参数且参数类型是一个array数组时候,collection =”array”;
三:传入参数是多个的时候,我们需要他们封装成Map,这时候collection属性值就是Map中的key。如下代码示例:
(Map,一种存储数据的存储方式,以键值对的方式存储)

1.单参数List类型:

<select id="findUsersById"  resultType="com.dmsdbj.integral.kernel.entity.ext.GivingIntegralModel">
        SELECT id,user_name,giving_integral
        FROM tik_user
        WHERE id IN
        <foreach collection="list" index="index" item="item" open="( " separator=" , " close=" )">
            #{item}
        </foreach>
    </select>

测试代码(理论对的,直接运行不可正确执行):

public List<GivingIntegralModel> test(){
    list list =new ArrayList();
    list.add(1);
    list.add(2);
    list.add(3);
    List<GivingIntegralModel> res= UseMap.findUsersById(list);
    return res;
}

2.单参数array数组类型:

 <select id="test2Array" parameterType="java.util.ArrayList" resultType="Blog">
     select * from 
     tik_user 
     where id in
     <foreach collection="array" index="index" item="item" open="(" separator="," close=")">
          #{item}
     </foreach>
 </select>  

测试代码(理论对的,直接运行不可正确执行):

public void test() {      
          int[] ids = new int[] {1,3,6,9};
          List blogs = UseMap.test2Array(ids);
          ....(后面代码省略)
 }

3.封装成Map的类型:

<select id="test3Map" resultType="Blog">
    select * 
    from t_blog
    where title like "%"#{title}"%" and id in
    <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
               #{item}
    </foreach>
 </select>

测试代码(理论对的,直接运行不可正确执行):

public void test(){
    List ids = new ArrayList();
        ids.add(1);
        ids.add(2);
        ids.add(3);
    Map params = new HashMap();
    params.put("ids", ids);
    params.put("title", "中国");
    List blogs = UseMap.test3Map(params);
    ....(后面代码省略)
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
MyBatis是一种基于Java的持久层框架,可以帮助开发人员简化数据库操作。在MyBatis中进行查询操作,可以通过编写XML配置文件或者注解来实现。 下面是一个基本的MyBatis in查询的示例: 1. 首先,在mapper.xml文件中定义一个查询语句,如下: ```xml <select id="getUserByIds" parameterType="java.util.List" resultMap="userMap"> SELECT * FROM user WHERE id IN <foreach collection="list" item="id" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 2. 在Java代码中调用这个查询语句: ```java List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); SqlSession sqlSession = sqlSessionFactory.openSession(); try { UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUserByIds(list); for (User user : userList) { System.out.println(user); } } finally { sqlSession.close(); } ``` 在这个示例中,我们定义了一个查询语句getUserByIds,它接受一个List类型的参数。在XML中使用foreach标签来遍历这个List,将其中的id值作为查询条件进行查询。在Java代码中,我们创建了一个List对象,将要查询的id值添加到这个List中,然后调用mapper的getUserByIds方法来执行查询操作。最终,我们将查询结果打印输出。 需要注意的是,在XML中使用foreach标签时,需要指定item属性来指定集合中的每个元素,open属性和close属性指定拼接SQL语句的前后缀,而separator属性则指定集合元素之间的分隔符。同时,在Java中调用查询语句时,需要获取mapper对象,然后调用其相应的方法来执行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值