mybatis in的使用问题

转载 2016年06月01日 20:46:10
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> 

关于mybatis的一个bug问题

错误:org.springframework.jdbc.BadSqlGrammarException:  ### Error updating database.  Cause: java.sql.S...
  • sinat_16381803
  • sinat_16381803
  • 2015年06月01日 15:10
  • 2958

mybatis查询sql中in条件使用(foreach)

foreach属性主要有item,index,collection,open,separator,close。 1、item表示集合中每一个元素进行迭代时的别名, 2、index指定一个名字,用于...
  • aiyawalie
  • aiyawalie
  • 2016年10月28日 10:40
  • 18172

MyBatis中的N+1问题

官 方文档之所以不建议使用这种嵌套的select语句的形式,是因为这会导致所谓的“N+1问题”。这个问题,无论是association元素还是 collection元素都会遇到,本文以更为典型的col...
  • u010854543
  • u010854543
  • 2014年11月30日 11:19
  • 1972

MyBatis解决In问题

 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了foreach功能,该功能比较强大,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也...
  • u010400728
  • u010400728
  • 2015年04月08日 22:16
  • 371

关于myBatis的问题There is no getter for property named 'USER_NAME' in 'class com.bky.model.实例类'

现在流行的 ssm(spring + struts2 + myBatis)  持久层的mybatis是需要配置映射器的,找了个demo连接的数据库是mysql 于是就修改了一下弄成了连接oracle的...
  • u014596302
  • u014596302
  • 2015年04月04日 21:27
  • 15523

Mybatis in查询传入字符串参数问题

今天使用mybatis遇到一个sql查询的问题,在这里记录一下: 情景: selec...
  • qq_34371461
  • qq_34371461
  • 2017年12月12日 18:42
  • 52

mybatis查询sql中in条件使用(foreach)

foreach属性主要有item,index,collection,open,separator,close。 1、item表示集合中每一个元素进行迭代时的别名, 2、index指定一个名字,用于...
  • aiyawalie
  • aiyawalie
  • 2016年10月28日 10:40
  • 18172

Mybatis 多条件查询(模糊查询 使用in查询)

Mybatis支持多个条件的查询,使用if标签拼接。 下面是三个条件的查询得例子,使用的数据库是MySQL,用到了模糊查询及in做条件查询。 xml文件: ...
  • u011984596
  • u011984596
  • 2017年06月16日 10:10
  • 657

mybatis查询sql中in条件使用(foreach)

foreach属性主要有item,index,collection,open,separator,close。 1、item表示集合中每一个元素进行迭代时的别名, 2、index指定一个名字,用于...
  • qq_16055765
  • qq_16055765
  • 2017年11月29日 08:41
  • 54

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

1. 当查询的参数只有一个时 findByIds(List ids)  1.a 如果参数的类型是List, 则在使用时,collection属性要必须指定为 list s...
  • u010271222
  • u010271222
  • 2015年05月05日 09:31
  • 240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mybatis in的使用问题
举报原因:
原因补充:

(最多只允许输入30个字)