`

mybatis 使用in条件查询

 
阅读更多
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常用语句详解及Lyaui多条件查询加分页 #### 一、概述 在本篇文章中,我们将详细介绍MyBatis框架中的几种常用SQL语句编写方法及其应用场景,特别是针对数据库的增删改查操作。这些操作是任何Web应用开发...

    mybatis简单查询

    **条件查询**:MyBatis提供了多种动态SQL标签,如`choose`(相当于`switch`)、`when`、`otherwise`,`if`(相当于`if...else`),`where`(用于避免在无条件时生成多余的`WHERE`关键字),`trim`(修剪SQL片段的...

    Mybatis多参数查询与列表查询不同方式实现

    在Mybatis这个强大的持久层框架中,多参数查询与列表查询是常见的操作,尤其是在处理复杂的业务逻辑时。本文将深入探讨Mybatis如何实现这两种查询方式,并提供多种实现方法。 首先,我们来理解Mybatis的基本概念。...

    mybatis基础分页,高级查询

    例如,可以使用 `&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;` 等标签来实现复杂的 WHERE 子句,或者利用 `&lt;foreach&gt;` 标签遍历集合参数,生成 IN 或 NOT IN 条件。这种方式避免了硬编码 SQL,提高了代码的可维护性...

    【持久化框架】Mybatis查询

    在Mybatis中,使用Where语句来指定查询条件。例如,使用Student表作为查询数据表,通过教师ID查询所带班级和班级所有学生信息,可以使用Where语句来指定条件。 ```xml SELECT * FROM student WHERE teacher_id = ...

    MyBatis模糊查询

    - **`foreach`标签**:当需要对集合进行遍历时非常有用,例如在执行IN子查询时。 #### 五、注意事项 1. **参数类型**:确保`parameterType`属性与传递给查询的实际参数类型一致。 2. **结果映射**:确保`...

    springmybatis

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

    Mybatis plus无介绍快使用,Wrapper条件构造器的使用附源码(五)

    使用Wrapper,我们可以创建各种条件对象,如Eq(等于)、Ne(不等于)、Lt(小于)、Gt(大于)、Le(小于等于)、Ge(大于等于)、Like(模糊匹配)、In(在集合内)等。以下是一个简单的示例: ```java Query...

    解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法

    这段代码使用了Lambda表达式来构建查询条件,其中`User::getUsername`是Lambda语法,用于指定`username`字段。然而,问题可能出现在实体类`User`的定义上。 为了确保MyBatis-Plus能够正确地映射Java字段到数据库列...

    mybatis离线插件包

    7. **动态SQL**:继承了MyBatis的动态SQL功能,可以在实体类中直接使用if、between、in等标签。 在安装了Mybatis Plus插件后,开发者可以更便捷地在Intelij IDEA中进行MyBatis相关的开发工作,享受更加高效和流畅的...

    解决myBatis中删除条件的拼接问题

    Sql语句中,当删除条件并不唯一的时候,我们有两种删除的sql语句,一种使用or拼接where中的条件,例如delete from 表名where 条件1 or 条件2,另一种是使用in 例如delete from 表名where 元素in( ) 利用第一种删除...

    mybatis笔记

    - **动态SQL**:MyBatis支持动态SQL,可以使用`&lt;if&gt;`、`&lt;choose&gt;`等标签根据条件动态拼接SQL语句。 #### 十五、子查询 - **子查询**:子查询是指在一个SQL语句中嵌套另一个SQL语句。MyBatis支持子查询的编写。 ##...

    springboot-mybatis-custom-language-driver.zip

    在本项目"springboot-mybatis-custom-language-driver.zip"中,主要探讨了如何在SpringBoot集成MyBatis的环境中,自定义语言驱动以实现更灵活的SQL动态查询功能,特别是循环查询、IN查询以及if条件判断的动态SQL语句...

    ssm框架\mybatis\动态sql\1.使用动态SQL完成多条件查询

    SSM框架,全称Spring+SpringMVC+MyBatis,是Java开发中常见的Web应用架构。MyBatis作为持久层框架,它允许开发者将SQL语句与Java代码分离,...在SSM框架下,MyBatis的动态SQL特性更是成为处理多条件查询的关键工具。

    mybatis之动态SQL

    4. `&lt;foreach&gt;` 标签:用于遍历集合并构建 IN 或 NOT IN 条件。在处理批量操作或需要对列表进行筛选时非常有用。 ```xml (" separator="," close=")"&gt; #{item} ``` 使用动态 SQL,我们可以编写出更符合业务逻辑...

    mybatis-3-mybatis-3.5.6.zip

    在3.5.6版本中,MyBatis增强了动态SQL的功能,允许开发者在映射文件或者Mapper接口中编写灵活的条件查询。例如,`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签可以实现条件判断,`&lt;foreach&gt;`标签则用于循环...

    MyBatis_Select

    可以使用动态SQL,通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;foreach&gt;`等标签实现条件判断、循环等逻辑。 下面是一个简单的`&lt;select&gt;`元素示例: ```xml SELECT * FROM user ...

    MyBatis in Practice

    MyBatis在查询数据时可以将结果直接映射到对象中,简化了代码,并且减少了映射转换的开销。 MyBatis的架构分为几个核心部分,包括SqlSession,它负责执行命令,获取映射器,并提供事务管理;Executor,它处理...

    Mybatis实现动态代理,动态SQL

    此外,还可以使用 `&lt;foreach&gt;` 标签来实现动态in查询,可以使用 `&lt;trim&gt;` 标签来实现格式化的标记,可以完成set或者是where标记的功能。 在使用Mybatis框架时,还可以使用 `&lt;sql&gt;` 和 `&lt;include&gt;` 标签来实现SQL...

    mybatis关联/级联以及动态sql

    在关联和级联查询以及动态SQL方面,MyBatis提供了强大的功能,使得开发人员能够更加灵活地处理数据库交互。 首先,我们来探讨MyBatis中的关联(Association)和级联(Cascading)。关联通常用于描述一个实体对象与...

Global site tag (gtag.js) - Google Analytics