MybatisPlus #{param}和${param}的用法详解

 更新时间:2020年09月08日 09:35:01   作者:大佬,站住别动.  
这篇文章主要介绍了MybatisPlus #{param}和${param}的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

作用

mybatis-plus接口mapper方法中的注解(如@Select)或者xml(如)传入的参数是通过#{param}或者${param}来获取值。

区别

1.解析方式:

#{param}:会进行预编译,而且进行类型匹配,最后进行变量替换,括号中可以添加映射类型如
#{param,javaType=int,jdbcType=NUMERIC}

${param}:只实现字符串拼接,并不进行数据类型匹配

${param}表达式主要用户获取配置文件数据,DAO接口中的参数信息,当 $ 出现在映射文件的 SQl 语句中时创建的不是预编译的 SQL ,而是字符串的拼接有可能会导致 SQL 注入的问题,所以一般使用 $ 接收 DAO 参数时,这些参数一般是字段名,表名等.例如 order by {column}

${} 获取 DAO 参数数据时,参数必须使用 @param 注解进行修饰

#{} 获取 DAO 参数数据时,假如参数个数多于一个,可有选择的使用@param

2.使用

#{param}:变量值的传递,必须使用#,使用#{param}就等于使用了PrepareStatement这种占位符的形式,提高效率。可以防止sql注入等等问题。

#{param}方式一般用于传入where条件参数值

@Select(
"<script>" +
"select * from student where id= #{param,javaType=int,jdbcType=NUMERIC}"+
"</script> ")

${param}:$只是只是简单的字符串拼接,要特别小心sql注入问题,对应非变量部分,只能用$。$方式一般用于传入数据库对象,比如这种group by 字段 ,order by 字段,表名,字段名等没法使用占位符的就需要使用${param}

<select id="getStatistics" resultType="map">
 select count(*) from t_statistic group by ${param}
</select>

到此这篇关于MybatisPlus #{param}和${param}的用法详解的文章就介绍到这了,更多相关MybatisPlus #{param}和${param}内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot GET和POST请求参数获取方式小结

    Springboot GET和POST请求参数获取方式小结

    Spring Boot GET和POST请求参数获取是开发人员经常需要解决的问题,本文主要介绍了Springboot GET和POST请求参数获取方式小结,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • JAVA 中Spring的@Async用法总结

    JAVA 中Spring的@Async用法总结

    这篇文章主要介绍了JAVA 中Spring的@Async用法总结的相关资料,需要的朋友可以参考下
    2017-03-03
  • 详解SpringBoot如何自定义一个Starter

    详解SpringBoot如何自定义一个Starter

    小伙伴们曾经可能都经历过整天写着CURD的业务,都没写过一些组件相关的东西,这篇文章记录一下SpringBoot如何自定义一个Starter。原理和理论就不用多说了,可以在网上找到很多关于该方面的资料,这里主要分享如何自定义
    2022-11-11
  • mybatisplus isNotNull不生效问题及解决

    mybatisplus isNotNull不生效问题及解决

    这篇文章主要介绍了mybatisplus isNotNull不生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java synchronized线程交替运行实现过程详解

    Java synchronized线程交替运行实现过程详解

    这篇文章主要介绍了Java synchronized线程交替运行实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • SSM框架实现分页和搜索分页的示例代码

    SSM框架实现分页和搜索分页的示例代码

    本篇文章主要介绍了SSM框架实现分页和搜索分页的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Mybatis的@select和@SelectProvider注解方式动态SQL语句解读

    Mybatis的@select和@SelectProvider注解方式动态SQL语句解读

    这篇文章主要介绍了Mybatis的@select和@SelectProvider注解方式动态SQL语句,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • mybatis批量添加,批量更新之前如何判断是否已经存在

    mybatis批量添加,批量更新之前如何判断是否已经存在

    这篇文章主要介绍了mybatis批量添加,批量更新之前如何判断是否已经存在,具有很好的参考价值,希望对的有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Java位运算和逻辑运算的区别实例

    Java位运算和逻辑运算的区别实例

    Java位运算和逻辑运算的区别实例,请参考下面代码,希望对你有所帮助
    2013-02-02
  • Java基础:彻底搞懂java多线程

    Java基础:彻底搞懂java多线程

    篇文章主要介绍了Java多线程的相关资料,帮助大家更好的理解和学习Java线程相关知识,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-08-08

最新评论