【MyBatis】 动态SQL——模糊查询 LIKE

2023-11-14

一:LIKE % %

SELECT  * 
FROM t_usr 
WHERE  name like '%${name}%'

  SQL解析为:SELECT * FROM t_usr WHERE name like '%海%'
  可以看到,传参必须用${}不能用#{},所以这样写的弊端就是不安全,不能防sql注入
  有关LIKE使用,请参见:https://blog.csdn.net/wrs120/article/details/79305828

二: CONCAT()拼接%

SELECT  * 
 FROM t_usr  
 WHERE name like CONCAT('%',CONCAT(#{name},'%'))

  SQL解析为:SELECT * FROM t_usr WHERE name like CONCAT('%',CONCAT(?,'%'))
  拼接时%必须加引号
  有关CONCAT()使用,请参见:https://blog.csdn.net/wrs120/article/details/81148101


三:bind

  bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。OGNL(Object Graph Navigation Language的缩写)是一种强大的表达式语言,更多用法,见:https://blog.csdn.net/isea533/article/details/50061705/

  SELECT  *  
  FROM t_usr 
  WHERE
      <if test="name !=null || name !=''">
          <bind name="usrName" value="'%' + name + '%'"/>
          name like #{usrName}
      </if>

  SQL解析为:SELECT * FROM t_usr WHERE name like ?


【总结】

  • 一与二,三的区别:一是数据不安全的,所以最好不用一方法
  • 使用二与三的区别:concat适用于mysql和sql server数据库,oracle数据库不支持,bind适用于mysql,sql server,oracle,所以为了通用性或避免因更换数据库带来的不便,选bind为好
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MyBatis】 动态SQL——模糊查询 LIKE 的相关文章

  • 无法访问类型的封闭实例。 [复制]

    这个问题在这里已经有答案了 整个代码是 public class ThreadLocalTest ThreadLocal
  • 多线程环境下如何更好的使用ExecutorService?

    我需要创建一个库 其中包含同步和异步方法 executeSynchronous 等待直到有结果 返回结果 executeAsynchronous 立即返回一个 Future 如果需要 可以在其他事情完成后进行处理 我的图书馆的核心逻辑 客户
  • 如何迭代所有注册表项?

    我正在尝试迭代所有注册表项以查找 包含 并删除 jre1 5 0 14 值 有办法做到吗 下面的代码只是在特定键下找到jre1 5 0 14 我确实想迭代所有的键 顺便说一句 if 子句获取是否等于 jre1 5 0 14 但如果它包含 j
  • 设置 SWT Shell 的默认字体

    有没有办法为整个 Shell 设置默认字体 以便任何新控件都将使用相同的字体 看来现在我必须为我创建的每个控件设置字体 这导致了太多的冗余 默认使用的字体由平台选择 请参阅中的其他信息 类字体 SWT 标准小部件工具包 http book
  • 实现与扩展:何时使用?有什么不同?

    请用易于理解的语言进行解释或提供某些文章的链接 extends is for 延伸一类 implements is for 实施一个接口 接口和常规类之间的区别在于 在接口中您不能实现任何声明的方法 只有 实现 接口的类才能实现方法 C 中
  • 使用除 SINGLE_TABLE 之外的任何其他 Hibernate 继承策略时 JVM 崩溃

    好吧 这可能不太可能 但还是这样吧 在Java JRE 1 6 0 26 b03 中我有两个类 SuperControl及其子类SubControl 它们都需要是持久对象 我正在使用 Hibernate Annotations 来实现这一点
  • 在 TestNG 中运行多个类

    我正在尝试自动化一个场景 其中我想登录一次应用程序 然后进行操作而无需再次重新登录 考虑一下 我有在特定类的 BeforeSuite 方法中登录应用程序的代码 public class TestNGClass1 public static
  • 哈希码是否用于加速集合中的对象查找?

    IIUC 相同类型的两个不同对象可以存储在 HashSet 中 即使两个对象在以下情况下返回相同的值 hashCode 叫做 例如根据本文 https eclipsesource com blogs 2012 09 04 the 3 thi
  • 在 Hibernate 中创建 UPDATE RETURNING 查询

    在 Oracle 中 我们可以创建一个更新查询 该查询将使用 RETURNING 子句返回更新的记录 Hibernate中有类似的功能吗 除了数据库生成的值之外 Hibernate 显然不需要返回更新的实例 因为对象传递给Session s
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • BlackBerry SQLite:将一个 SQLite 数据库连接到另一个

    我正在尝试使用 SQLite 将一个 SQLite 数据库附加到 BlackBerry 上的另一个数据库附加数据库 http www sqlite org lang attach html命令 Database d1 d2 Statemen
  • Java 泛型:如何为泛型类型指定类类型?

    我有一个 POJO 指定为 MyClass u where U是泛型类型参数 我正在尝试编写一个接受类引用的实用方法Class u
  • 如何制作无限的jscrollpane?

    我之前已经实现过拖动滚动 但是创建无限滚动窗格的最佳方法是什么 当然不会有任何滚动条 我将实现拖动滚动 我想做的是在无限表面上实现动态加载 EDIT 当然 它实际上不会是无限的 我想问如何伪造它 您可以执行以下操作 AdjustmentCl
  • 打印 jasper 文件时执行报表 SQL 语句时出错

    我修改了一个旧项目 但无法确定这段代码有什么问题 使用下面的 jrxml它创造 jasper文件 当我打印 jasper 文件时 使用此代码JasperPrint jasperPrint JasperFillManager fillRepo
  • 如何从 Google Custom Search API 获取超过 100 个结果

    我正在尝试使用 Google Custom Search API 在 Java 中进行研究 因此 我需要为每个查询提供一个大的结果集 然而 我似乎仅限于前 100 个结果 这比我需要的要少得多 我使用这样的列表方法 list setStar
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • 无法映射 ftl 文件中的 jsonRequest 属性

    我想在 FTL 文件中映射下面的 json 文件市场和子市场字段 但是当我尝试下面的代码时 它没有映射 有人可以帮助我吗 我从 2 天开始就无法映射它 Json请求 ProcessOrderRequest prevalidationMode
  • 使用 Runtime.getRuntime().exec() 进行重定向不起作用

    我需要从程序执行命令 命令行是可以的 我在终端试了一下 但是在程序中不行 我从我的代码中添加一个副本 File dir new File videos String children dir list if children null Ei
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 如何使用剪辑来减少绘画时间?

    我正在尝试使用 Clip 来减少 CPU 负载 但剪辑在屏幕上留下了一些我似乎无法摆脱的垃圾 另外 打开和关闭剪辑似乎对 CPU 负载没有影响 在任一情况下 大部分时间似乎都花在重绘管理器和绘制缓冲图像上 import static jav

随机推荐

  • FindBugs作为eclipse的插件的使用

    目录 1 FindBugs是干嘛的 2 Eclipse如何安装FindBugs插件 3 Eclipse中如何使用FindBugs插件 注 本篇主要是讲FindBugsEclipse插件的使用
  • java连接多个mysql,JAVA:MySql:太多连接

    I think that my application is cursed debug goes where it wants and I don t know why Line by line debugging seems to ana
  • 【GOF23设计模式】_状态模式_UML状态图_酒店系统房间状态_线程对象状态切换JAVA250

    来源 http www bjsxt com 一 S03E250 01 GOF23设计模式 状态模式 UML状态图 酒店系统房间状态 线程对象状态切换 package com test state public interface State
  • 如何高效学习一门新技术

    如何高效学习一门新技术 最近着手学习WCF 举步维艰 故阅读了大量关于学习新技术方法的网页 最终整理如下 一共大家参考 对于这个较大的话题 我们分两个部分介绍 学习新技术的10个建议 和 学习新技术的具体行动 学习新技术的10个建议 尽管我
  • Python视频处理(1)——视频分镜头提取+视频处理

    目录 一 导出帧图像 二 判定相似度 1 均值哈希判定相似度 2 基于直方图相似度 三 视频处理 利用ffmpeg 1 截取视频1分钟 2 视频格式转换 3 多媒体格式转换 4 视频方向处理 5 其他命令代码整理 一 导出帧图像 将视频以帧
  • 关于mysql取余和取整的函数

    MySQL中整除和取余函数分别为 1 整除函数 DIV 或者 双斜杠 使用方法 SELECT 10 DIV 3 返回结果为 3 SELECT 10 3 返回结果为 3 2 取余函数 MOD 或者 百分号 使用方法 SELECT MOD 10
  • loop设备模拟nvme设备

    加载 nvme loop内核模块 需要内核支持 或者自己编译 nvme loop 相关模块 sudo modprobe nvme loop 生成 loop 文件 dd if dev zero of path to nvme fs bs 1M
  • Jenkins ——The server rejected the connection

    启动agent时 报如下错误 信息 Protocol JNLP4 connect encountered an unexpected exception java util concurrent ExecutionException org
  • HTK语音识别中的决策树

    1 为什么需要决策树 我们在使用HTK进行语音识别模型训练的过程中 首先进行的是单音素 单个高斯的模型训练 抛开单个高斯不说 单音素模型本身有很大缺点 没有考虑到本音素前后音素的发音对本音素的影响 比如 同样是一个音素iy 如果它前面的音素
  • 你好,面试官-秋招面经C++持续更新

    C 指针和引用的区别 指针常量和常量指针的区别 sizeof 和 strlen 的区别 const关键字 static关键字 C 中struct和class的区别 new malloc和deete free的区别 宏定义和typedef区别
  • C1 ARMv7-M Debug

    C1 1 Introduction to ARMv7 M debug This section describes the debug architecture for the ARMv7 M architecture profile Th
  • python消消乐游戏界面的实现:

    一 环境介绍 1 Python 版本 Python 消消乐游戏可以在 Python 2 7 和 Python 3 x 版本中运行 2 Pygame 模块 Python 消消乐游戏需要使用 Pygame 模块来实现游戏界面和图形绘制等功能 如
  • DP线和HDMI线区别,优缺点,传输显示器图像速率

    参考DP接口与HDMI接口各有什么优势 哪个更好 资料来源于网络 仅供参考 最近在x宝上买显示器的线 看到各种hdmi dp版本的线 2 0 dp1 4 4k 8k typec转三口hdmi 可把我看昏了 在网上收集了一些资料用于总结 以及
  • QMUI 学习一: 入门,如何添加QMUI框架到 android项目 ,并引入QMUI的主题Theme:

    用是最新的Android Studio 3 6 x的 下了新的QMUI Demo参考学习UI 先上效果图 如何添加QMUI框架并引用它的主题 1 添加框架 在app gradle里面添加依赖 implementation com qmuit
  • 感知器算法实现多类样本的线性分类(Matlab)

    原理 略 步骤 二分类问题 1 将第一类样本作为正样本 第二类样本作为负样本 首先 对样本的向量空间进行增广 即对n维向量x的首部或者尾部增加一个参数1 增广为 n 1 维向量 并对其进行规范化 即正样本不做处理 负样本的 n 1 维向量取
  • web buuctf [极客大挑战 2019]Knife1

    题目给出得信息量是一句话木马 文本里面有一个 菜刀 字眼 可以尝试一下用中国菜刀 现在大部分都是用蚁剑 测试连接 提示成功 将该数据添加到界面上 点进去 点到根目录 在最下面有一个flag文件 点开即可 这道题考点 1 一句话木马 2 中国
  • 液晶显示器汉字字模存储及显示

    一 3 种汉字字模存储和提取的方法 1 字模存放在程序存储器中 这种方法较为常用 针对程序不大或单片机无外部扩展数据存储区功能的情况 2 通过外扩的EEPROM 存储汉字字模数据 将其作为外部数据存储器进行寻址 采用哈佛结构的单片机 如80
  • 罗小黑用flash做的_Flash动画制作小黑人经典动画效果技巧介绍(图文)

    本教程是向大家介绍Flash动画制作小黑人经典动画效果技巧 教程很经典 介绍的非常详细 相信对学习Flash朋友有一定的帮助 转发过来 希望对大家有所帮助 解决思路 小黑人动作是典型的人物动作 我们利用小黑人可以练习我们对人物动作的掌握 因
  • 带优美外观的UserControl控件GroupBox

    http www myfirm cn news DotNetUserInterface 20080208095730391 html 写在前面 如果大家觉得 Net自带的GroupBox控件太差了 样子很不美观 而想用 Net强大的自定义功
  • 【MyBatis】 动态SQL——模糊查询 LIKE

    一 LIKE SELECT FROM t usr WHERE name like name SQL解析为 SELECT FROM t usr WHERE name like 海 可以看到 传参必须用 不能用 所以这样写的弊端就是不安全 不能