在操作数据库时,查询是最常用的语句,模糊查询也是数据库SQL中使用频率很高的SQL语句,利用MyBatis框架来进行更加灵活的模糊查询,有如下三种方式:

(1)直接传参法
       直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中。

如下所示:


public void selectBykeyWord(String keyword) {
String id = "%" + keyword + "%";
String roleType = "%" + keyword + "%";
String roleName = "%" + keyword + "%";
userDao.selectBykeyWord(id,roleName,roleType);
}

dao层接口如下:


List<RoleEntity> selectBykeyWord(@Param("id") String id,@Param("roleName") String roleName,@Param("roleType") String roleType);

<select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">
SELECT * FROM t_role WHERE role_name LIKE #{roleName}
OR id LIKE #{id}
OR role_type LIKE #{roleType}
</select>

执行时打印的sql如下:


SELECT * FROM t_role WHERE role_name LIKE '%why%'
OR id LIKE '%why%'
OR role_type LIKE '%why%'

注意:此方法可以完成模糊查询任务,但是不推荐,因为与Java代码耦合了,不利于维护和修改。


(2)mysql的CONCAT()函数
MySQL的CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一。用法:CONCAT(str1,str2,...)

dao层接口如下:


List<RoleEntity> selectBykeyWord(@Param("keyword") String keyword);

mapper文件如下所示:


<select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">
SELECT * FROM t_role WHERE role_name LIKE CONCAT('%',#{keyword},'%')
OR id LIKE CONCAT('%',#{keyword},'%')
OR role_type LIKE CONCAT('%',#{keyword},'%')
</select>

注意:执行效果与上面的直接传参一样,但比直接传参法更好,因为与代码解耦了,但是此方法只针对mysql数据库所用,如果换成Oracle数据库则需要修改sql代码,因此此方法不通用,但可以使用。


(3)mybatis的bind元素
mybatis针对这种情况作出了调整,提供了一个bind元素,此元素可以跨越数据库限制,也就是说不管是mysql还是Oracle数据库都可以通用模糊查询。

dao层接口如下:


List<RoleEntity> selectBykeyWord(@Param("keyword") String keyword);

mapper文件如下:


<select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">
<!--keyword就是传入的参数,bind相当于是一个参数,这个参数的值就是value拼接出来的值-->
<bind name="pattern" value="'%' + keyword + '%'" />
SELECT * FROM t_role WHERE role_name LIKE #{pattern}
OR id LIKE #{pattern}
OR role_type like #{pattern}
</select>

MyBatis中模糊查询LIKE的三种方式相关推荐

  1. mysql mybatis模糊查询语句_详解MyBatis模糊查询LIKE的三种方式

    模糊查询也是数据库SQL中使用频率很高的SQL语句,使用MyBatis来进行更加灵活的模糊查询. 直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keywo ...

  2. MyBatis模糊查询like的三种方式

    MyBatis可以灵活的模糊查询 方法一 手动拼接 public void select1(String name) {String name = "%" + name+ &quo ...

  3. .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...

    这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋 ...

  4. python读取图像数据流_浅谈TensorFlow中读取图像数据的三种方式

    本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片 ...

  5. html中常见表达颜色的三种方式

    html中常见表达颜色的三种方式 网页中经常应用到各种颜色,这关乎界面美观以及整体的设计感,那么,具体应用到哪几种表达方式,接下来让我们一起看看: 1 英文单词表示(局限):red(红),blue(蓝 ...

  6. JS-01-在HTML中嵌入JavaScript代码的三种方式

    JS-01-在HTML中嵌入JavaScript代码的三种方式 1.JavaScript概述 Web的组成有HTML.CSS还有即将要学习的JavaScript(简称JS). CSS和JS主要是服务于 ...

  7. 在HTML 中嵌入 JS 代码的三种方式

    一,在HTML中嵌入JS代码的第一种方式:行间事件 行间事件是指将JavaScript函数写到HTML元素中的执行事件. 1.JavaScript 是一种事件驱动型的编程语言,通常都是在发生某个事件的 ...

  8. JavaScript——关于JavaScript、在HTML中嵌入JS代码的三种方式、变量

    文章目录 JavaScript 01 关于JavaScript 1.1 JS的发展历史 1.2 JS的特性 1.3 JS的组成 1.4 JSP和JS的区别 02 在HTML中嵌入JS代码的三种方式 2 ...

  9. windows系统中查看linux分区的三种方式

    双系统中windows查看linux分区的三种方式 一.这个算是大家早有耳闻的啦,就是使用Explore2fs这个工具,可以去 http://www.chrysocome.net/explore2fs ...

最新文章

  1. 妹妹生了个女儿,纪念一下
  2. 机器学习--Hoeffding Inequality--界定概率边界
  3. AOJ0033 Ball【贪心+序列处理】
  4. uva1025城市里的间谍
  5. LeetCode精讲题 10正则表达式匹配(动态规划)
  6. Visual Studio 2017 调试 windows server 2016 Docker Container
  7. android最新知识点总结,学习android之 知识点总结
  8. 波利亚对教师日常工作的看法:〈教师十诫〉
  9. 管理感悟:经历不是经验,套路才是
  10. 神经结构化学习 4 图像分类的对抗性学习Adversarial learning for image classification
  11. ‘’vr‘’全景抓鸡游戏总结
  12. Python下载小说 -XXOO
  13. 数字IC面试高频考点之跨时钟域信号处理
  14. redit高可用持久
  15. 单位冲激信号和数字信号处理
  16. jsp中img显示本地图片
  17. bzoj3990【SDOI2015】排序
  18. valuable的用法_valuable是什么意思_valuable的翻译_音标_读音_用法_例句_爱词霸在线词典...
  19. SQLite的事务处理
  20. IPMI/BMC 简介和使用

热门文章

  1. 前台拼接中文参数乱码提交400报错后台无响应
  2. Nginx之代理详解
  3. java实现毒app,[毒】APP体验一览
  4. Vue中父子及非父子组件之间的通信方法
  5. Android实习札记(2)---妙用View的keepScreenOn保持屏幕常亮
  6. h264编码与视频丢帧丢包,目标拖影,区域颜色丢失
  7. 邓应海:美前财长发出警告,大行情不断!最新黄金走势分析
  8. win10分辨率不能调整_大师为你详解 win10系统photoshop制作金属字的方法介绍 -win10使用教程...
  9. oracle 内置时间加减,Oracle 时间加减
  10. java求最小公倍数