文档章节

mybatis中使用in查询时的注意事项

Carl_
 Carl_
发布于 2015/08/19 12:45
字数 314
阅读 3305
收藏 2
1. 当查询的参数只有一个时

  findByIds(List<Long> ids)

 1.a 如果参数的类型是List, 则在使用时,collection属性要必须指定为 list

复制代码

 <select id="findByIdsMap" resultMap="BaseResultMap">
         Select         <include refid="Base_Column_List" />         from jria where ID in
                  <foreach item="item" index="index" collection="list" 
                         open="(" separator="," close=")">
                        #{item}                </foreach>
  </select>

复制代码


 findByIds(Long[] ids)

 1.b 如果参数的类型是Array,则在使用时,collection属性要必须指定为 array

复制代码

  <select id="findByIdsMap" resultMap="BaseResultMap">                 select
                 <include refid="Base_Column_List" />          from jria where ID in
                  <foreach item="item" index="index" collection="array" 
                         open="(" separator="," close=")">
                        #{item}                </foreach>
  </select>

复制代码


2. 当查询的参数有多个时,例如 findByIds(String name, Long[] ids)

 这种情况需要特别注意,在传参数时,一定要改用Map方式, 这样在collection属性可以指定名称

         下面是一个示例

复制代码

         Map<String, Object> params = new HashMap<String, Object>(2);        params.put("name", name);         params.put("ids", ids);
        mapper.findByIdsMap(params); 
 <select id="findByIdsMap" resultMap="BaseResultMap">                 select
                 <include refid="Base_Column_List" />          from jria where ID in
                  <foreach item="item" index="index" collection="ids" 
                         open="(" separator="," close=")">
                        #{item}                </foreach>
   </select>

复制代码

 

完整的示例如下:

例如有一个查询功能,Mapper接口文件定义如下方法:

List<Jria> findByIds(Long... ids);

使用 in 查询的sql拼装方法如下:

复制代码

 <select id="findbyIds" resultMap="BaseResultMap">                 select
                 <include refid="Base_Column_List" />          from jria where ID in
                  <foreach item="item" index="index" collection="array" 
                         open="(" separator="," close=")">
                        #{item}                </foreach>
  </select>

复制代码


本文转载自:http://www.cnblogs.com/xusir/archive/2013/07/24/3210286.html

共有 人打赏支持
Carl_
粉丝 40
博文 387
码字总数 12168
作品 0
广州
私信 提问
Mybatis实现union all 查询合并多个结果集

以下是mybatis mapper对应的sql语句: 注意事项: 使用union all 查询时,所有查询语句的返回结果字段名称和个数必须一致。

boonya
2016/06/13
4.4K
1
《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项

MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能...

java梦想家01
2016/01/11
527
1
Spring Boot + Mybatis + Redis as L2cache

1.背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,...

梨加橙
2017/08/08
0
0
Mybatis 通用 Mapper 3.0.0 发布

MyBatis通用Mapper3 极其方便的使用Mybatis单表的各种通用方法 Mapper 3.0.0更新日志: 将EntityMapper和SqlMapper移出,现在是独立项目EntityMapper 将Mapper全部接口方法拆分为独立接口,方...

Liuzh_533
2015/06/05
6.5K
8
MyBatis 3.2.0 发布,Java 数据库持久层框架

MyBatis团队于2013年2月21日正式发布 MyBatis 3.2.0 新特性包括: 支持可扩展脚本引擎 支持可扩展字节码提供器和Java辅助类 缓存嵌套查询 改善日志 修正了40余处BUG 更新注意事项: MyBatis 3...

t莫名
2013/02/27
6.3K
47

没有更多内容

加载失败,请刷新页面

加载更多

MySQL 主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

野雪球
9分钟前
0
0
OSChina 周一乱弹 —— 温柔的人应该这样

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 《フィクション-sumika》 《フィクション-sumika》 手机党少年们想听歌,请使劲儿戳(这里) 假期时间干嘛去, @for...

小小编辑
58分钟前
76
6
[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
今天
6
0
java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
29
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部