Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。

简介: Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。

案例如下图所示:

eaa5cce937c8488eb66a3fafa02e99d4.png

实现 根据 登录名 姓名  邮箱  查询

一. 以下代码用  姓名 地址 模糊查询xml代码如下

<select id="queryClientList" resultType="com.lt.crm.vo.QueryClient.QueryDeliveryClientVo">
        select
        a.CUSTOMERSNO "customersno",
        a.CUSTOMERSNAME "customersname",
        a.COMMUNITY "community",
        a.CUSTOMERSTEL "customerstel"
        from CRM_CUSTOMERS a
        <where>
            <if test="integratedQuery != null and integratedQuery != ''">
                1=1 and a.customersname like concat(concat('%',#{integratedQuery}),'%') or  a.community like concat(concat('%',#{integratedQuery}),'%')
            </if>
            <if test="customersno != null and customersno != ''">
                and a.customersno like '%'||#{customersno}||'%'
            </if>
            <if test="customersname != null and customersname != ''">
                and a.customersname like '%'||#{customersname}||'%'
            </if>
            <if test="community != null and community != ''" >
                and a.community like '%'||#{community}||'%'
            </if>
        </where>
    </select>

二. 最重要的就是这一行:

<if test="integratedQuery != null and integratedQuery != ''">
       1=1 and a.customersname like concat(concat('%',#{integratedQuery}),'%') or  a.community like concat(concat('%',#{integratedQuery}),'%')
</if>

1. 动态sql中 where 1=1

1. where 1=1,因为它总是ture ,执行计划就会忽略这个条件,Oracle、MySQL 结果都一样。


2. 为了避免:条件A判断出错 或者 往条件A传值时,传了空值,导致sql报错。


3. where1=1不影响SQL性能,也不会导致索引失效。SQL优化器已经将where1=1过滤了。

2.解释:


1. a.customersname like concat(concat('%',#{integratedQuery}),'%')  这是查 名字


2. a.community like concat(concat('%',#{integratedQuery}),'%')           这是查 地址


3. 两个字段 写到 一个 if 里面   用关键函数 or 将 他们 关联


4. 定义一个 新的 字段 integratedQuery  这个字段是 前端给后端传值的字段  


5. 对应的dao service serviceImpl实现层  controller 都加上 (integratedQuery) 这个字段


integratedQuery  这个字段 也要在我们的实体类里 定义   我用的是VO 我就写Vo类里 如下:


b160aa84229f4ed38fc93c77fbda78e6.png


目录
相关文章
|
29天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
1月前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
19 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
20天前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
1月前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
94 10
|
26天前
|
SQL 关系型数据库 MySQL
|
2月前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
2月前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
51 1
|
2月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
1月前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
31 0
|
2月前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色