mybatis
使用in条件查询
java mapper
<!--List<Agency> findAgencyById(Long[] ids) 对应 collection="array"-->
<!--List<Agency> findAgencyById(@Param("ids") Long[] ids) 对应 collection="ids"-->
<!--List<Agency> findAgencyById(@Param("data") List<Long> list) 对应 collection="data"-->
xml mapper
<!-- array的非空判断 -->
<if test=" ids != null and ids.lengh > 0 " >
<!-- list的非空判断 -->
<if test=" ids != null and ids.size() > 0 " >
<!-- array和list通过 -->
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
完整示例(array)
select
<include refid="Base_Column_List" />
from t_agency_site
where 1=1
<if test="ids.length>0">
and agency_id in
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
-----分割线-----
<!--List:forech中的collection属性类型是List,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
<select id="getEmployeesListParams" resultType="Employees">
SELECT * FROM employees e
WHERE e.employee_id in
<foreach collection="list" item="employeeId" index="index"
open="(" close=")" separator=",">
#{employeeId}
</foreach>
</select>
<!--Array:forech中的collection属性类型是array,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
<select id="getEmployeesArrayParams" resultType="Employees">
SELECT * FROM employees e
WHERE e.employee_id in
<foreach collection="array" item="employeeId" index="index"
open="(" close=")" separator=",">
#{employeeId}
</foreach>
</select>
<!--Map:不单单forech中的collection属性是map.key,其它所有属性都是map.key,比如下面的departmentId -->
<select id="getEmployeesMapParams" resultType="Employees">
SELECT *
FROM employees e
<where>
<if test="departmentId!=null and departmentId!=''">
e.department_id=#{departmentId}
</if>
<if test="employeeIdsArray!=null and employeeIdsArray.length!=0">
AND e.employee_id in
<foreach collection="employeeIdsArray" item="employeeId"
index="index" open="(" close=")" separator=",">
#{employeeId}
</foreach>
</if>
</where>
</select>
分享到:
相关推荐
### MyBatis常用语句详解及Lyaui多条件查询加分页 #### 一、概述 在本篇文章中,我们将详细介绍MyBatis框架中的几种常用SQL语句编写方法及其应用场景,特别是针对数据库的增删改查操作。这些操作是任何Web应用开发...
**条件查询**:MyBatis提供了多种动态SQL标签,如`choose`(相当于`switch`)、`when`、`otherwise`,`if`(相当于`if...else`),`where`(用于避免在无条件时生成多余的`WHERE`关键字),`trim`(修剪SQL片段的...
在Mybatis这个强大的持久层框架中,多参数查询与列表查询是常见的操作,尤其是在处理复杂的业务逻辑时。本文将深入探讨Mybatis如何实现这两种查询方式,并提供多种实现方法。 首先,我们来理解Mybatis的基本概念。...
例如,可以使用 `<if>`、`<choose>`、`<when>`、`<otherwise>` 等标签来实现复杂的 WHERE 子句,或者利用 `<foreach>` 标签遍历集合参数,生成 IN 或 NOT IN 条件。这种方式避免了硬编码 SQL,提高了代码的可维护性...
在Mybatis中,使用Where语句来指定查询条件。例如,使用Student表作为查询数据表,通过教师ID查询所带班级和班级所有学生信息,可以使用Where语句来指定条件。 ```xml SELECT * FROM student WHERE teacher_id = ...
- **`foreach`标签**:当需要对集合进行遍历时非常有用,例如在执行IN子查询时。 #### 五、注意事项 1. **参数类型**:确保`parameterType`属性与传递给查询的实际参数类型一致。 2. **结果映射**:确保`...
mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门...
使用Wrapper,我们可以创建各种条件对象,如Eq(等于)、Ne(不等于)、Lt(小于)、Gt(大于)、Le(小于等于)、Ge(大于等于)、Like(模糊匹配)、In(在集合内)等。以下是一个简单的示例: ```java Query...
这段代码使用了Lambda表达式来构建查询条件,其中`User::getUsername`是Lambda语法,用于指定`username`字段。然而,问题可能出现在实体类`User`的定义上。 为了确保MyBatis-Plus能够正确地映射Java字段到数据库列...
7. **动态SQL**:继承了MyBatis的动态SQL功能,可以在实体类中直接使用if、between、in等标签。 在安装了Mybatis Plus插件后,开发者可以更便捷地在Intelij IDEA中进行MyBatis相关的开发工作,享受更加高效和流畅的...
Sql语句中,当删除条件并不唯一的时候,我们有两种删除的sql语句,一种使用or拼接where中的条件,例如delete from 表名where 条件1 or 条件2,另一种是使用in 例如delete from 表名where 元素in( ) 利用第一种删除...
- **动态SQL**:MyBatis支持动态SQL,可以使用`<if>`、`<choose>`等标签根据条件动态拼接SQL语句。 #### 十五、子查询 - **子查询**:子查询是指在一个SQL语句中嵌套另一个SQL语句。MyBatis支持子查询的编写。 ##...
在本项目"springboot-mybatis-custom-language-driver.zip"中,主要探讨了如何在SpringBoot集成MyBatis的环境中,自定义语言驱动以实现更灵活的SQL动态查询功能,特别是循环查询、IN查询以及if条件判断的动态SQL语句...
SSM框架,全称Spring+SpringMVC+MyBatis,是Java开发中常见的Web应用架构。MyBatis作为持久层框架,它允许开发者将SQL语句与Java代码分离,...在SSM框架下,MyBatis的动态SQL特性更是成为处理多条件查询的关键工具。
4. `<foreach>` 标签:用于遍历集合并构建 IN 或 NOT IN 条件。在处理批量操作或需要对列表进行筛选时非常有用。 ```xml (" separator="," close=")"> #{item} ``` 使用动态 SQL,我们可以编写出更符合业务逻辑...
在3.5.6版本中,MyBatis增强了动态SQL的功能,允许开发者在映射文件或者Mapper接口中编写灵活的条件查询。例如,`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签可以实现条件判断,`<foreach>`标签则用于循环...
- **读取(Read)**: 使用`<select>`标签执行查询操作,可以根据条件动态构建SQL,例如,通过传入参数进行筛选。 - **更新(Update)**: `<update>`标签用于更新记录,可以处理复杂的更新逻辑,如只更新非空字段。...
可以使用动态SQL,通过`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>`等标签实现条件判断、循环等逻辑。 下面是一个简单的`<select>`元素示例: ```xml SELECT * FROM user ...
MyBatis在查询数据时可以将结果直接映射到对象中,简化了代码,并且减少了映射转换的开销。 MyBatis的架构分为几个核心部分,包括SqlSession,它负责执行命令,获取映射器,并提供事务管理;Executor,它处理...
此外,还可以使用 `<foreach>` 标签来实现动态in查询,可以使用 `<trim>` 标签来实现格式化的标记,可以完成set或者是where标记的功能。 在使用Mybatis框架时,还可以使用 `<sql>` 和 `<include>` 标签来实现SQL...