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种实现方式相关推荐

  1. mybatis中的${} 与 #{}实际使用-模糊查询的几种实现方式

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

  2. 模糊查询like两种使用方式

    1.Java中组装好 在Java中,把like的内容组装好,把这个内容传入sql语句. public List<Student> quaryByName1(String uname) {S ...

  3. MyBatis实现模糊查询的三种方式

    MyBatis实现模糊查询的三种方式 准备 模糊查询 方式一 方式二 方式三 由于#{}是占位符本身,自带单引号,所以在模糊查询时需要一些技巧. 准备 数据库表 bean 模糊查询 以查询出所有用户名 ...

  4. mybatis中LIKE模糊查询的几种写法以及注意点(亲测第三种CONCAT()函数的)

    mybatis中对于使用like来进行模糊查询的几种方式: (1)使用${...} 注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错 org.mybatis. ...

  5. mybatis中LIKE模糊查询的几种写法以及注意点

    From: https://blog.csdn.net/zhenwei1994/article/details/81876278 mybatis中对于使用like来进行模糊查询的几种方式: (1)使用 ...

  6. Java里模糊查询的英文_MyBatis实现模糊查询的几种方式

    在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...

  7. mybatis模糊查询like语句怎么写

    写法为:1.使用"${...}",语法为"like '${...}'":2.使用"#{...}",语法为"like '#{...} ...

  8. java中模糊查询sql怎么写,mybatis模糊查询sql,

    mybatis模糊查询sql, 今天下午做的一个功能,要用到模糊查询,字段是description,刚开始我的写法用的是sql中的模糊查询语句, 但是这个有问题,只有将字段的全部值传入其中,才能查询, ...

  9. mysql中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示.  比如 SELECT * FROM [user ...

最新文章

  1. TabLayout让Fragment在ViewPager中的滑动切换更优雅
  2. SQL逗号分隔的字段统计(摘自网络)
  3. wsl Java开发_微软开源 WSL 样本,在 Windows 上体验 Linux
  4. 【hdu 6396】Swordsman
  5. java 读取 文件 short_Java RandomAccessFile readShort()方法
  6. Netflix的快速产品集成测试
  7. Ajax爬取今日头条街拍美女
  8. 一个完整的Java Web项目需要掌握哪些技术
  9. sqlite3用法详解
  10. 图像压缩算法python_Python基于opencv的图像压缩算法实例分析
  11. 信托购买高搜索产品容易推10元[奥运]门槛
  12. 外包,你是外包不是正式员工,麻烦不要随便吃公司零食
  13. C语言九:位域(位域声明、位域的定义和位域变量的说明、对于位域定义的几点说明:、位域的使用)、typedef(typedef vs #define)、强制类型转换(整数提升、常用的算术转换)
  14. 将jmeter响应结果中部分数据保存到本地文件
  15. 调试工具message_noconfirm与messa…
  16. 【American English】美式发音,英语发音,美国音音标列表及发音
  17. (附源码)ssm+mysql+基于SSM框架的图片分享及评价网站设计与实现 毕业设计201524
  18. python的各种推导式_各种推导式(comprehensions)
  19. 一次学神and农夫and“i春秋”的心理交锋
  20. matlab中欠定方程组超定方程组_【七年级】28二元一次方程组应用——列表与画图...

热门文章

  1. [转载] Scanner和bufferreader读取控制台字符的区别
  2. [转载] Java三元运算符示例
  3. [转载] Python进阶:设计模式之迭代器模式
  4. php 文字超出画布,input实现文字超出省略号(代码示例)
  5. 语句拼接_第2课:一个周末学会R语言数据处理:表拆分和拼接
  6. 如何安装_如何安装吸顶灯?吸顶灯安装注意事项
  7. 场效应管原理_场效应管——不就是一个电控开关?
  8. iOS设置拍照retake和use按钮为中文简体
  9. Redis笔记之基本数据结构 链表
  10. Python检查特定值是否包含在列表中