`

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

 
阅读更多
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模糊查询

    #### 五、注意事项 1. **参数类型**:确保`parameterType`属性与传递给查询的实际参数类型一致。 2. **结果映射**:确保`resultType`属性正确映射到Java对象。 3. **SQL语法差异**:不同数据库对SQL语法的支持有所...

    springmybatis

    mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门...

    mybatis常用语句和lyaui 多条件查询加分页

    - **注意事项**:确保路径正确,尤其是在涉及关联实体时,路径应该指向具体属性,而不是整个对象。 ##### 2. 批量删除 - **接口定义**: ```java /** * 删除用户以及批量删除 */ public int deleteUsersByIds...

    MyBatis调用存储过程

    存储过程的其他注意事项 - 如果存储过程没有返回值,`resultMap`可以省略。 - MyBatis支持调用带有游标的存储过程,此时返回的是一个List,每个元素对应结果集中的一行。 - 注意存储过程的权限问题,确保执行用户...

    mybatis调用mysql存储过程

    5. **注意事项**: - 对于返回多条结果的存储过程,可以使用`&lt;resultMap&gt;`来映射结果集。 - 调用带有游标(CURSOR)的存储过程时,需要使用`&lt;cursor&gt;`标签,并配合`&lt;foreach&gt;`处理结果。 - 参数模式有IN、OUT、IN...

    mybatis调用存储过程源码

    - 有时存储过程返回多个结果集,这时需要在Mapper XML中使用`&lt;resultMap&gt;`标签来处理。 这个提供的"mybatis调用存储过程源码"压缩包,包含了一个完整的MyBatis调用存储过程的示例,解压后可以直接运行,帮助开发者...

    MyBatis3开启二级缓存

    **四、注意事项** - 二级缓存并不适用于所有场景,特别是数据实时性要求高的系统,因为可能会导致数据不一致。 - 配置二级缓存时需谨慎,避免因误配置导致的并发问题或数据安全风险。 - 考虑到性能和内存占用,合理...

    Mybatis_day2.pdf

    在本教程的第二部分中,我们将深入探讨MyBatis的一些关键特性,包括插入和更新操作的注意事项、JDBC类型的使用、日志记录、高级查询功能以及动态SQL。 1. 插入和更新的细节: 在MyBatis执行插入或更新操作时,不...

    尚硅谷Mybatis视频教程41-50

    《尚硅谷Mybatis视频教程41-50》是一系列深入讲解Mybatis动态SQL的教程,涵盖了Mybatis在实际开发中的重要应用场景和技术要点。...通过观看和实践,可以更好地掌握Mybatis在处理复杂查询和更新场景时的灵活性和实用性。

    mybatis动态sql及其JAVA示例

    以下通过一个具体的例子来展示如何在MyBatis中使用动态SQL。 ##### 4.1 映射文件配置 假设我们有一个`User`对象,它包含`id`、`name`、`age`等属性,我们想要根据这些属性动态地构建查询条件。在MyBatis的映射文件...

    mybatis动态sql语句详解

    #### 四、使用动态SQL时的注意事项 1. **#{}**用于参数占位符,MyBatis会自动处理参数的预编译和设置。 2. **OGNL表达式**:在`&lt;if&gt;`标签中使用的`test`属性是一个OGNL表达式,用于评估条件。 3. **代码清晰度**:...

    Mybatis参数传递1

    下面将详细讲解这些方法及其注意事项。 1. 单个参数传入基本类型或直接传入类类型 当参数为基本类型如`String`时,可以直接在SQL映射文件中引用。例如,`queryMessageList1`方法的SQL映射如下: ```xml select id...

    Mybatis 3+Mysql 实现批量插入

    ### 五、优化与注意事项 1. **数据预处理**:在批量插入前,确保数据的正确性和完整性,避免因数据错误导致的插入失败。 2. **事务管理**:合理使用事务,确保数据的一致性,特别是在高并发环境下。 3. **性能监控*...

    mybatis foreach标签的使用详解

    MyBatis foreach 标签的使用详解 MyBatis 中的 foreach 标签是非常常用的标签之一,它可以用来遍历集合,构建 in 条件语句或者批量操作语句。...但是,需要注意 foreach 标签的使用注意事项,以避免出现错误。

    MyBatis动态SQL

    除了在XML映射文件中使用动态SQL,MyBatis还支持在Mapper接口的方法签名中使用注解来实现动态SQL。例如,可以使用`@Param`注解传入参数,然后在方法体内部使用这些参数构造动态SQL。 通过以上讲解,我们可以看出...

    MyBatis 动态 SQL.7z

    动态 SQL 是 MyBatis 的一个重要特性,允许在 XML 或注解中编写条件语句,实现灵活的数据查询和处理。下面将详细介绍 MyBatis 动态 SQL 的相关知识点。 1. **动态 SQL 基础**: - MyBatis 的动态 SQL 功能主要体现...

    MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据

    #### 五、使用MyBatis动态SQL的注意事项 尽管MyBatis动态SQL为开发者带来了极大的便利,但也存在一定的安全隐患,比如SQL注入的风险。为了避免这些问题,需要注意以下几点: 1. **避免直接使用用户输入**:确保所有...

    MyBatis动态SQL是一项强大的特性,它允许我们在编写SQL语句时根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的

    1. **避免SQL注入**:虽然MyBatis提供了参数化查询的方式,但在使用动态SQL时仍然需要注意不要直接将未经处理的数据拼接到SQL语句中。 2. **性能优化**:尽管动态SQL非常灵活,但过度复杂的动态SQL可能会导致性能...

Global site tag (gtag.js) - Google Analytics