MyBatis模糊查询的4种实现方式

MyBatis模糊查询的4种实现方式1、根据姓名模糊查询员工信息1.1、方式一步骤一:编写配置文件步骤二:测试步骤三:分析此种方式需要在调用处手动的去添加“%”通配符。1.2、方式二说明:使用方式一可以实现模糊查询,但是有一点不方便的地方就是:在测试类中,调用selectList()方法传参时需要调用者手动的添加%号通配符,显然是麻烦的,能否在映射配置文件中直接将%号写好呢?有的朋友可能会这么想,好办,直接在配置文件中这么写:形如1:测试后发现,程序会报错,原因是:缺少单引号。这…

1、根据姓名模糊查询员工信息

1.1、方式一

步骤一:编写配置文件

MyBatis模糊查询的4种实现方式

 

步骤二:测试

MyBatis模糊查询的4种实现方式

 

步骤三:分析 此种方式需要在调用处手动的去添加“%”通配符。1.2、方式二

说明: 使用方式一可以实现模糊查询,但是有一点不方便的地方就是:在测试类中,调用selectList()方法传参时需要调用者手动的添加%号通配符,显然是麻烦的,能否在映射配置文件中直接将%号写好呢? 有的朋友可能会这么想,好办,直接在配置文件中这么写:形如1:

MyBatis模糊查询的4种实现方式

 

测试后发现,程序会报错,原因是:缺少单引号。

这个时候,有朋友可能会这样想了,那干脆加一个“单引号”不就得了,形如2:

形如2:

MyBatis模糊查询的4种实现方式

 

测试后发现,程序依然会报错,原因是:如果加上单引号,那么就当成是一个字符串,而#{ }写在字符串中不能识别,要改写成${ }这种形式。

即:形如3

形如3

MyBatis模糊查询的4种实现方式

 

分析: 通过使用“$”也可以实现。但是通过$的方式拼接的sql语句,不再是以占位符的形式生成sql,而是以拼接字符串的方式生成sql,这样做带来的问题是:会引发sql注入的问题。1.3、方式三

说明:通过前两种写法,虽然可以解决模糊查询的问题,但是还是不好,因为通过%的方式会引发sql注入的问题,现在的期望是:既能够解决sql注入又能在配置文件中写%该如何实现呢,可以借助mysql的函数。步骤一:编写映射文件

MyBatis模糊查询的4种实现方式

 

步骤二:测试 此步骤省略,比较简单。1.4、方式四

说明: 当然对于方式三,也可以使用$,不过需要特别留意单引号的问题。步骤一:编写配置文件

MyBatis模糊查询的4种实现方式

 

步骤二:测试 该步骤省略。2、总结

#{ }是预编译处理,MyBatis在处理#{ }时,它会将sql中的#{ }替换为?,然后调用PreparedStatement的set方法来赋值,传入字符串后,会在值两边加上单引号,使用占位符的方式提高效率,可以防止sql注入。${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中,可能引发sql注入。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219235.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Java XML XXE 底层防御

    Java XML XXE 底层防御JavaXML相关API是由JAXP定义了相关的XML的通用接口,常见包括DOM/SAX/STAX/XPATH的标准APIJavax.xml.parsers ->DOM/SAXJavax.xml.stream ->STAXJavax.xml.xpath  ->XPATHJavax.xml.bind  ->JAXBjavax.xml.ws

    2022年7月20日
  • aspectjweaver AspectJ

    aspectjweaver AspectJ基于aop的依赖jar包,可以实现切面过滤拦截。依赖包:<!–https://mvnrepository.com/artifact/org.aspectj/aspectjweaver–><dependency><groupId>org.aspectj</groupId><artifactId>asp…

    2022年7月12日
  • js获取元素到文档区域document的(横向、纵向)坐标的两种方法

    js获取元素到文档区域document的(横向、纵向)坐标的两种方法获取页面中元素到文档区域document的横向、纵向坐标的两种方法及其比较在js控制元素运动的过程中,对于页面元素坐标位置的获取是经常用到的,这里主要总结下两种方法:一:通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现在阅读javascript高级程序设计第三版DOM部分时,了解到要获取某个元素在页面上的偏移量,需要将这个元素的offsetLeft和offsetTop与其offsetParent的相同属性相加,一直循环直至根元素。所以,要得到

    2022年7月19日
  • linux 常用命令大全及其详解_linux命令分类

    linux 常用命令大全及其详解_linux命令分类一.基础知识1.1liunx系统的文件结构/dev设备文件/etc大多数配置文件/home普通用户的家目录/lib32位函数库/lib6464位库/media手动临时挂载点/mnt手动临时挂载点/opt第三方软件安装位置/proc进程信息及硬件信息/root临时设备的默认挂载点/sbin系统管理命令/srv

    2022年10月30日
  • 巨量算数 – 抖音用户画像[通俗易懂]

    巨量算数 – 抖音用户画像[通俗易懂]2020年8月,巨量算数发布最新抖音用户画像,需要完整报告请关注公众号回复“2020年抖音用户画像”即可获取!如果大家身边也有需要这些资料的人,在分享的同时,麻烦也关注下该公众号“1NEDAY”吧免责声明:所有资源来自网友分享。一.此次发布的资料,大部分是网友从网上搜集分享而来,其版权均归原作者及其网站所有,如果您对本站所载视频作品版权的归属存有异议,请立即通知我,我将在第一时间予以删除,同时向你表示歉意!二.不论何种情形,本站都不对任何由于使用或无法使用..

    2022年4月29日
  • ORACLE备份恢复

    ORACLE备份恢复目录一、关于备份与恢复 二、逻辑备份(expdp和impdp) 三、物理备份 四、数据库日常备份计划及脚本参考一、关于备份与恢复1、备份定义备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本2、备份分类从物理与逻辑的角度来分类:从物理与逻辑的,备份可以分为物理备份和逻辑备份。物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物…

    2022年7月17日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号