MyBatis中模糊查询LIKE的三种方式
在操作数据库时,查询是最常用的语句,模糊查询也是数据库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的三种方式相关推荐
- mysql mybatis模糊查询语句_详解MyBatis模糊查询LIKE的三种方式
模糊查询也是数据库SQL中使用频率很高的SQL语句,使用MyBatis来进行更加灵活的模糊查询. 直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keywo ...
- MyBatis模糊查询like的三种方式
MyBatis可以灵活的模糊查询 方法一 手动拼接 public void select1(String name) {String name = "%" + name+ &quo ...
- .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...
这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋 ...
- python读取图像数据流_浅谈TensorFlow中读取图像数据的三种方式
本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片 ...
- html中常见表达颜色的三种方式
html中常见表达颜色的三种方式 网页中经常应用到各种颜色,这关乎界面美观以及整体的设计感,那么,具体应用到哪几种表达方式,接下来让我们一起看看: 1 英文单词表示(局限):red(红),blue(蓝 ...
- JS-01-在HTML中嵌入JavaScript代码的三种方式
JS-01-在HTML中嵌入JavaScript代码的三种方式 1.JavaScript概述 Web的组成有HTML.CSS还有即将要学习的JavaScript(简称JS). CSS和JS主要是服务于 ...
- 在HTML 中嵌入 JS 代码的三种方式
一,在HTML中嵌入JS代码的第一种方式:行间事件 行间事件是指将JavaScript函数写到HTML元素中的执行事件. 1.JavaScript 是一种事件驱动型的编程语言,通常都是在发生某个事件的 ...
- JavaScript——关于JavaScript、在HTML中嵌入JS代码的三种方式、变量
文章目录 JavaScript 01 关于JavaScript 1.1 JS的发展历史 1.2 JS的特性 1.3 JS的组成 1.4 JSP和JS的区别 02 在HTML中嵌入JS代码的三种方式 2 ...
- windows系统中查看linux分区的三种方式
双系统中windows查看linux分区的三种方式 一.这个算是大家早有耳闻的啦,就是使用Explore2fs这个工具,可以去 http://www.chrysocome.net/explore2fs ...
最新文章
- 妹妹生了个女儿,纪念一下
- 机器学习--Hoeffding Inequality--界定概率边界
- AOJ0033 Ball【贪心+序列处理】
- uva1025城市里的间谍
- LeetCode精讲题 10正则表达式匹配(动态规划)
- Visual Studio 2017 调试 windows server 2016 Docker Container
- android最新知识点总结,学习android之 知识点总结
- 波利亚对教师日常工作的看法:〈教师十诫〉
- 管理感悟:经历不是经验,套路才是
- 神经结构化学习 4 图像分类的对抗性学习Adversarial learning for image classification
- ‘’vr‘’全景抓鸡游戏总结
- Python下载小说 -XXOO
- 数字IC面试高频考点之跨时钟域信号处理
- redit高可用持久
- 单位冲激信号和数字信号处理
- jsp中img显示本地图片
- bzoj3990【SDOI2015】排序
- valuable的用法_valuable是什么意思_valuable的翻译_音标_读音_用法_例句_爱词霸在线词典...
- SQLite的事务处理
- IPMI/BMC 简介和使用
热门文章
- 前台拼接中文参数乱码提交400报错后台无响应
- Nginx之代理详解
- java实现毒app,[毒】APP体验一览
- Vue中父子及非父子组件之间的通信方法
- Android实习札记(2)---妙用View的keepScreenOn保持屏幕常亮
- h264编码与视频丢帧丢包,目标拖影,区域颜色丢失
- 邓应海:美前财长发出警告,大行情不断!最新黄金走势分析
- win10分辨率不能调整_大师为你详解 win10系统photoshop制作金属字的方法介绍 -win10使用教程...
- oracle 内置时间加减,Oracle 时间加减
- java求最小公倍数