MyBatis:模糊查询的4种实现方式
1、根据姓名模糊查询员工信息
1.1、方式一
步骤一:编写配置文件
步骤二:测试
步骤三:分析 此种方式需要在调用处手动的去添加“%”通配符。
1.2、方式二
说明: 使用方式一可以实现模糊查询,但是有一点不方便的地方就是:在测试类中,调用selectList()方法传参时需要调用者手动的添加%号通配符,显然是麻烦的,能否在映射配置文件中直接将%号写好呢? 有的朋友可能会这么想,好办,直接在配置文件中这么写:
形如1:
测试后发现,程序会报错,原因是:缺少单引号。
这个时候,有朋友可能会这样想了,那干脆加一个“单引号”不就得了,形如2:
形如2:
测试后发现,程序依然会报错,原因是:如果加上单引号,那么就当成是一个字符串,而#{ }写在字符串中不能识别,要改写成${ }这种形式。
即:形如3
形如3
分析: 通过使用“$”也可以实现。但是通过$的方式拼接的sql语句,不再是以占位符的形式生成sql,而是以拼接字符串的方式生成sql,这样做带来的问题是:会引发sql注入的问题。
1.3、方式三
说明:通过前两种写法,虽然可以解决模糊查询的问题,但是还是不好,因为通过%的方式会引发sql注入的问题,现在的期望是:既能够解决sql注入又能在配置文件中写%该如何实现呢,可以借助mysql的函数。
步骤一:编写映射文件
步骤二:测试 此步骤省略,比较简单。
1.4、方式四
说明: 当然对于方式三,也可以使用$,不过需要特别留意单引号的问题。
步骤一:编写配置文件
步骤二:测试 该步骤省略。
总结
#{ }是预编译处理,MyBatis在处理#{ }时,它会将sql中的#{ }替换为?,然后调用PreparedStatement的set方法来赋值,传入字符串后,会在值两边加上单引号,使用占位符的方式提高效率,可以防止sql注入。${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中,可能引发sql注入。
MyBatis:模糊查询的4种实现方式相关推荐
- mybatis中的${} 与 #{}实际使用-模糊查询的几种实现方式
直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中. public void selec ...
- 模糊查询like两种使用方式
1.Java中组装好 在Java中,把like的内容组装好,把这个内容传入sql语句. public List<Student> quaryByName1(String uname) {S ...
- MyBatis实现模糊查询的三种方式
MyBatis实现模糊查询的三种方式 准备 模糊查询 方式一 方式二 方式三 由于#{}是占位符本身,自带单引号,所以在模糊查询时需要一些技巧. 准备 数据库表 bean 模糊查询 以查询出所有用户名 ...
- mybatis中LIKE模糊查询的几种写法以及注意点(亲测第三种CONCAT()函数的)
mybatis中对于使用like来进行模糊查询的几种方式: (1)使用${...} 注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错 org.mybatis. ...
- mybatis中LIKE模糊查询的几种写法以及注意点
From: https://blog.csdn.net/zhenwei1994/article/details/81876278 mybatis中对于使用like来进行模糊查询的几种方式: (1)使用 ...
- Java里模糊查询的英文_MyBatis实现模糊查询的几种方式
在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...
- mybatis模糊查询like语句怎么写
写法为:1.使用"${...}",语法为"like '${...}'":2.使用"#{...}",语法为"like '#{...} ...
- java中模糊查询sql怎么写,mybatis模糊查询sql,
mybatis模糊查询sql, 今天下午做的一个功能,要用到模糊查询,字段是description,刚开始我的写法用的是sql中的模糊查询语句, 但是这个有问题,只有将字段的全部值传入其中,才能查询, ...
- mysql中模糊查询的四种用法介绍
下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user ...
最新文章
- TabLayout让Fragment在ViewPager中的滑动切换更优雅
- SQL逗号分隔的字段统计(摘自网络)
- wsl Java开发_微软开源 WSL 样本,在 Windows 上体验 Linux
- 【hdu 6396】Swordsman
- java 读取 文件 short_Java RandomAccessFile readShort()方法
- Netflix的快速产品集成测试
- Ajax爬取今日头条街拍美女
- 一个完整的Java Web项目需要掌握哪些技术
- sqlite3用法详解
- 图像压缩算法python_Python基于opencv的图像压缩算法实例分析
- 信托购买高搜索产品容易推10元[奥运]门槛
- 外包,你是外包不是正式员工,麻烦不要随便吃公司零食
- C语言九:位域(位域声明、位域的定义和位域变量的说明、对于位域定义的几点说明:、位域的使用)、typedef(typedef vs #define)、强制类型转换(整数提升、常用的算术转换)
- 将jmeter响应结果中部分数据保存到本地文件
- 调试工具message_noconfirm与messa…
- 【American English】美式发音,英语发音,美国音音标列表及发音
- (附源码)ssm+mysql+基于SSM框架的图片分享及评价网站设计与实现 毕业设计201524
- python的各种推导式_各种推导式(comprehensions)
- 一次学神and农夫and“i春秋”的心理交锋
- matlab中欠定方程组超定方程组_【七年级】28二元一次方程组应用——列表与画图...
热门文章
- [转载] Scanner和bufferreader读取控制台字符的区别
- [转载] Java三元运算符示例
- [转载] Python进阶:设计模式之迭代器模式
- php 文字超出画布,input实现文字超出省略号(代码示例)
- 语句拼接_第2课:一个周末学会R语言数据处理:表拆分和拼接
- 如何安装_如何安装吸顶灯?吸顶灯安装注意事项
- 场效应管原理_场效应管——不就是一个电控开关?
- iOS设置拍照retake和use按钮为中文简体
- Redis笔记之基本数据结构 链表
- Python检查特定值是否包含在列表中