动态sql-mybatis like 模糊匹配的格式是什么样的

问题描述

mybatis like 模糊匹配的格式是什么样的
第一种
<if test="deviceName != null and deviceName != ''" >
            AND DEVICE_NAME LIKE '%${deviceName}%'
</if>
第二种
AND DEVICE_NAME LIKE #{deviceName}

第一种之前试过是可以模糊匹配的,后来又不好用了,什么情况
还有说法是直接写like mybatis会自动加上%% 求正解

解决方案

第一种写法没错啊,你说的不好用的情况是什么样的呢?这个进入模糊匹配是有if条件的,符合该条件时才会有模糊查询的。

解决方案二:

第一种写法本身无问题。你说的不好用肯定是你改了代码  里deviceName  参数值 为'%deviceName的值%',因为你传入的参数里已经有了'%%',所有第二种解析#{deviceName}  就相当于AND DEVICE_NAME LIKE ''%deviceName的值%。用上面那种写法deviceName的值里不能有'%',你要理解传的到底是什么,为什么能模糊查询。

解决方案三:

and DEVICE_NAME like '%${deviceName}%'
and DEVICE_NAME like concat('%', #{deviceName}, '%')

时间: 2024-10-22 21:55:13

动态sql-mybatis like 模糊匹配的格式是什么样的的相关文章

动态SQL四种类型的语句格式

动态|语句 1.Dynamic SQL Format 1 EXECUTE IMMEDIATE SQLStatement     {USING TransactionObject} ; eg:string            MysqlMysql = "CREATE TABLE Employee "&    +"(emp_id integer not null,"&    +"dept_id integer not null, "

《Mybatis官方文档》 – 动态 SQL

动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉一连串列名最后的逗号.利用动态 SQL 这一特性可以彻底摆脱这种痛苦. 通常使用动态 SQL 不可能是独立的一部分,MyBatis 通过一种强大的动态 SQL 语言明显地改进了这种情形,这种语言可以被用在任意的 SQL 映射语句中. 动态 SQL 元素和使用 JSTL 或其他类似基于

【MyBatis框架】mapper配置文件-关于动态sql

动态sql 1.什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 2.需求 用户信息综合查询列表和用户信息查询列表总数这两个statement的定义使用动态sql. 对查询条件进行判断,如果输入参数不为空才进行查询条件拼接. 3.mapper.xml 原查询语句配置: <mapper namespace="cn.edu.hpu.mybatis.mapper.UserMapper"> <!-- 用户信息综合

mybatis-MyBatis动态SQL的一些问题

问题描述 MyBatis动态SQL的一些问题 <select id=""findBySalary"" parameterType=""com.tarena.entity.Condition"" resultType=""com.tarena.entity.Emp""> select * from t_emp <choose> <when test="

Java下拼接执行动态SQL语句(转)

       在实际业务中经常需要拼接动态SQL来完成复杂数据计算,网上各类技术论坛都有讨论,比如下面这些问题:         http://bbs.csdn.net/topics/390876591         http://bbs.csdn.net/topics/390981627         https://www.linkedin.com/groups/SQL-Query-Help-needed-137774.S.5948812806903119877?trk=groups_i

mybatis中动态sql常用的标签

用来循环容器的标签forEach,查看例子 //mapper中我们要为这个方法传递的是一个容器,将容器中的元素一个一个的 //拼接到xml的方法中就要使用这个forEach这个标签了 public List<Entity> queryById(List<String> userids); //对应的xml中如下 <select id="queryById" resultMap="BaseReslutMap" > select *

Mybatis解析动态sql原理分析

1.MyBatis一般使用步骤 1.1获取Configuration实例或编写配置文件 //获取Configuration实例的样例 TransactionFactory transactionFactory = new JdbcTransactionFactory();//定义事务工厂 Environment environment = new Environment("development", transactionFactory, dataSource); Configurat

最常用的动态sql语句梳理Mybatis(转)

    公司项目中一直使用Mybatis作为持久层框架,自然,动态sql写得也比较多了,最常见的莫过于在查询语句中使用if标签来动态地改变过滤条件了.Mybatis的强大特性之一便是它的动态sql,免除了拼接sql带来的各种麻烦,在开发项目的过程中,常见的和不常见的你都有可能会用到,现在就来把这一块总结一下. if choose(when,otherwise) trim(where,set) foreach if <select id="getCategory" paramete

Java的MyBatis框架中对数据库进行动态SQL查询的教程_java

其实MyBatis具有的一个强大的特性之一通常是它的动态 SQL 能力. 如果你有使用 JDBC 或其他 相似框架的经验,你就明白要动态的串联 SQL 字符串在一起是十分纠结的,确保不能忘了空格或在列表的最后省略逗号.Mybatis中的动态 SQL 可以彻底处理这种痛苦.对于动态SQL,最通俗简单的方法就是我们自己在硬编码的时候赋予各种动态行为的判断,而在Mybatis中,用一种强大的动态 SQL 语 言来改进这种情形,这种语言可以被用在任意映射的 SQL 语句中.动态 SQL 元素和使用 JS