MybatisPlus #{param}和${param}的用法详解
作者:大佬,站住别动. 发布时间:2023-02-02 13:08:10
作用
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>
来源:https://blog.csdn.net/qq_31683583/article/details/105653063


猜你喜欢
- springboot创建线程池两种方式1.使用static代码块创建这样的方式创建的好处是当代码用到线程池的时候才会初始化核心线程数具体代码
- Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。Field 成员变量的介
- 事件:定义了事件成员的类允许通知其他其他对象发生了特定的事情。具体的说,定义了事件成员的类能提供以下功能1.方法能登记它对事件的关注2.方法
- 一、首先在Spring Boot项目中,手动添加异常方法进行测试@Transactional(rollbackFor=Exception.c
- 命名空间提供了一种从逻辑上组织类的方式,防止命名冲突。几种常见语言C++命名空间是可以嵌套的嵌套的命名空间是指定义在其他命名空间中的命名空间
- 一:软键盘自动弹出。private EditText top_middle;//输入框//-------------------------
- 本次主要分享的是3个免费的二维码接口的对接代码和测试得出的注意点及区别,有更好处理方式多多交流,相互促进进步;最近在学习JavsScript
- Java.util.Collections类下有一个静态的shuffle()方法,如下:1)static void shuffle(List
- 编写按钮属性首先再values/themes 或者values/style在文件下编写按钮属性buttonBarPositiveButton
- 对于简单的场景来讲,在MEF中导入依赖模块非常简单,只要用ImportAttribute标记依赖的成员,MEF模块会自动找到并创建该模块。但
- 可空类型用途主要是从数据库读取数据有可能为空,而不是插入使用,插入数据都要进行验证,如果要插入数据库的null,则使用DBNull.valu
- 思维导图一、为什么要学习 DialogFragment你还在用 Dialog 吗?你还在经常烦恼于屏幕翻转的时候,Dialog 的各种奇葩情
- 在upload.jsp页面中将多个文件域对象命名为相同的名字,这样在action中就可以将多个文件域解析成一个数组,数组的大小就是文件域的个
- 先来看看要实现的效果图:对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,百度,360,机锋,应用宝等等,当我们想上线
- C++中的动态数组(Dynamic Array)是指动态分配的、可以根据需求动态增长占用内存的数组。为了实现一个动态数组类的封装,我们需要考
- 一、Spring Boot Admin 的概念 Spring Boot Admin是一个
- 使用flatMap列出子目录前面已经看到如何列出指定目录下的文件了。我们再来看下如何遍历指定目录的直接子目录(深度为1),先实现一个简单的版
- 模式介绍命令模式(Command Pattern) :在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被
- 前几天,收到 AS 发布的 3.0 更新,就迫不及待的更新了,更新后发现整个界面的画风都变了,和 IDEA 更像了本人是命令行重度使用患者,
- 功能介绍功能:群聊+私发+上线提醒+下线提醒+查询在线用户文件Utils需要用maven导入下面两个包 <dependency>