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模糊查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springcloud中Feign超时提示Read timed out executing POST的问题及解决方法

    springcloud中Feign超时提示Read timed out executing

    Feign接口调用分两层,Ribbon的调用和Hystrix调用,理论上设置Ribbon的时间即可,但是Ribbon的超时时间和Hystrix的超时时间需要结合起来,这篇文章给大家介绍springcloud之Feign超时提示Read timed out executing POST问题及解决方法,感兴趣的朋友一起看看吧
    2024-01-01
  • SpringCloud客户端的负载均衡Ribbon的实现

    SpringCloud客户端的负载均衡Ribbon的实现

    微服务架构,不可避免的存在单个微服务有多个实例,这篇文章主要介绍了SpringCloud客户端的负载均衡Ribbon的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Java中SPI的一些理解

    Java中SPI的一些理解

    这篇文章主要介绍了Java中SPI的一些理解,帮助大家更好的理解和学习Java的相关知识,感兴趣的朋友可以了解下
    2020-12-12
  • Java程序运行之JDK,指令javac java解读

    Java程序运行之JDK,指令javac java解读

    这篇文章主要介绍了Java程序运行之JDK,指令javac java,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • IDEA中配置文件模板的添加方法

    IDEA中配置文件模板的添加方法

    这篇文章主要介绍了IDEA中配置文件模板的添加方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 通过实例了解Java jdk和jre的区别

    通过实例了解Java jdk和jre的区别

    这篇文章主要介绍了通过实例了解Java jdk和jre的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • SpringBoot框架实现切换启动开发环境和测试环境

    SpringBoot框架实现切换启动开发环境和测试环境

    这篇文章主要介绍了SpringBoot框架实现切换启动开发环境和测试环境,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java Servlet输出中文乱码问题解决方案

    Java Servlet输出中文乱码问题解决方案

    这篇文章主要介绍了Java Servlet输出中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Kafka Producer中的消息缓存模型图解详解

    Kafka Producer中的消息缓存模型图解详解

    Kafka中消息是以Topic进行分类的,生产者生产消息,消费者消费消息,都是面向Topic的,下面这篇文章主要给大家介绍了关于Kafka Producer中消息缓存模型的相关资料,需要的朋友可以参考下
    2022-04-04
  • Java启动命令大全(汇总)

    Java启动命令大全(汇总)

    Java启动命令是所有java应用程序的入口,通过它来启动Java运行时环境,并加载相关的class,本文希望做一个Java启动命令的汇总,和各位同道分享,也便于日后作为自己的参考
    2023-09-09

最新评论