mybatis模糊查询之bind标签和concat函数用法详解

 更新时间:2022年08月29日 17:08:43   作者:小野驴丶  
大家都知道bind 标签可以使用 OGNL 表达式创建一个变量井将其绑定到上下文中,接下来通过本文给大家介绍了mybatis模糊查询——bind标签和concat函数用法,需要的朋友可以参考下

1.二种方式都可以用来模糊查询,都能预防 SQL 注入。但是在更换数据库情况下,bind标签通用。

<if test=” userName != null and userName !=””>
 and userName like concat('%' ,#{userName},'%')
</if>

2.使用concat函数连接字符串,在mysql中这个函数支持多个参数,但是在oracle中这个函数只支持2个参数,由于不同数据库之间的语法差异,更换数据库,这些语法就需要重写。可以用bind标签来避免更换数据库所带来的一些麻烦。

eg.MyBatis在Oracle数据库下用concat函数模糊查询之参数个数无效错误,因为数据库换成了Oracle,在模糊查询数据的时候突然发现报错了

select * from SYS_MENU where url like concat('%',#{roleName},'%')

实际上oracle中不支持concat的三个参数的拼接,需要更正为

select * from SYS_MENU where url like concat(concat('%',#{roleName}),'%')

或者使用

select * from SYS_MENU where url like '%' || #{roleName} || '%';

bind标签使用:

bind 标签可以使用 OGNL 表达式创建一个变量井将其绑定到上下文中。

<bind name= " userNameBind ” value = ”' % '+ userNarne + ' %'” />
 <if test=” userName != null and userName !=””>
 and userName like #{userNameBind}
</if>

bind 标签的两个属性都是必选项
name 为绑定到上下文的变量名, value 为 OGNL 表达式。
创建一个 bind标签的变量后 , 就可以在下面直接使用,使用 bind 拼接字符串不仅可以避免因更换数据库而修改 SQL,也能预防 SQL注入,还能实现多个引用userNameBind

到此这篇关于mybatis模糊查询之bind标签和concat函数用法的文章就介绍到这了,更多相关mybatis模糊查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入探究SpringBoot中的Sleuth用法

    深入探究SpringBoot中的Sleuth用法

    Sleuth是一个分布式跟踪系统,用于跟踪应用程序中的请求和操作,在本文中,我们将探讨SpringBoot中的Sleuth是什么,以及如何使用它来跟踪应用程序中的请求和操作,感兴趣的小伙伴跟着小编一起来探讨吧
    2023-07-07
  • Java基于中介者模式实现多人聊天室功能示例

    Java基于中介者模式实现多人聊天室功能示例

    这篇文章主要介绍了Java基于中介者模式实现多人聊天室功能,详细分析了中介者模式的概念、原理以及使用中介模式实现多人聊天的步骤、操作技巧与注意事项,需要的朋友可以参考下
    2018-05-05
  • java网上图书商城(8)订单模块3

    java网上图书商城(8)订单模块3

    这篇文章主要为大家详细介绍了java网上图书商城,订单模块第三篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Spring Cloud Zuul路由网关服务过滤实现代码

    Spring Cloud Zuul路由网关服务过滤实现代码

    这篇文章主要介绍了Spring Cloud Zuul路由网关服务过滤实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot中的maven插件spring-boot-maven-plugin使用

    SpringBoot中的maven插件spring-boot-maven-plugin使用

    这篇文章主要介绍了SpringBoot中的maven插件spring-boot-maven-plugin使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • SpringBoot集成ElasticSearch(ES)实现全文搜索功能

    SpringBoot集成ElasticSearch(ES)实现全文搜索功能

    Elasticsearch是一个开源的分布式搜索和分析引擎,它被设计用于处理大规模数据集,它提供了一个分布式多用户能力的全文搜索引擎,本文将给大家介绍SpringBoot集成ElasticSearch(ES)实现全文搜索功能,需要的朋友可以参考下
    2024-02-02
  • zookeeper的Leader选举机制源码解析

    zookeeper的Leader选举机制源码解析

    这篇文章主要为大家介绍了zookeeper的Leader选举源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • spring data jpa如何使用自定义repository实现类

    spring data jpa如何使用自定义repository实现类

    这篇文章主要介绍了spring data jpa如何使用自定义repository实现类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 使用@Value注解从配置文件中读取数组

    使用@Value注解从配置文件中读取数组

    这篇文章主要介绍了使用@Value注解从配置文件中读取数组的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot整合Minio的过程(支持公有及私有bucket)

    SpringBoot整合Minio的过程(支持公有及私有bucket)

    Bucket 是存储Object的逻辑空间,每个Bucket之间的数据是相互隔离的,对用户而言,相当于存放文件的顶层文件夹,这篇文章主要介绍了SpringBoot整合Minio的过程(支持公有及私有bucket),需要的朋友可以参考下
    2025-03-03

最新评论