文档章节

MyBatis占位符 #{ } 和 ${ }

IT-Mamba
 IT-Mamba
发布于 2018/08/01 15:02
字数 284
阅读 382
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

相同点:如果传入的是基本类型,那么括号里的变量名称可以随意命名。

             如果传入的是pojo对象,那么括号中的变量名称必须是pojo的属性名称。

不同点:#{}  占位符,占位

             ${}   拼接符,字符串原样拼接

能用#{} 的尽量少用 ${}  (因为${}不能防止sql注入)

如果使用order by 动态参数时需要使用 ${} ,因为使用${} 传的参数不带引号(比如 order by user_id),而通过#{}传的参数会带引号(比如order by “user_id” ) 

如果parameterType是int时,sql语句中必须用 #{}  

 

<select id="findUserByUserName" parameterType="string" resultType="project.book.pojo.User">

select * from User where username like '%${value}%'

</select>

 

<select id="findById"  parameterType="int"  resultType="project.book.pojo.User">     

 select * from User where id=#{id}   

</select>

 

<select id="getUserList" resultType="project.book.pojo.User">
        SELECT * from User
        <if test="id !=null">
            ORDER BY ${id}
        </if>
 </select>

© 著作权归作者所有

下一篇: MyBatis缓存
IT-Mamba
粉丝 10
博文 133
码字总数 56499
作品 0
惠州
程序员
私信 提问
【问题解决】MyBatis分页查询SQL Server2008时出现'@P0' 附近有语法错误

MyBatis分页查询SQL Server2008时出现’@P0’ 附近有语法错误” Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: ‘@P0’ 附近有语法错误。 错误如下: 出...

qq_26525215
2017/08/24
0
0
Mybatis3.4.x技术内幕(十八):Mybatis之动态Sql设计原本(下)

上一篇博文中,简要介绍了Mybatis动态sql的基本用法和基本设计结构,本篇博文重点阐述一些动态sql的技术细节,#{name}和${name}的区别,将在本篇博文中揭晓。也许读者早已了解它们之间的区别...

祖大俊
2016/08/21
1K
1
Spring如何整合Mybatis,源码不难嘛!

Spring整合Mybtais会进行如下的配置(条条大路通罗马,方式不唯一)。 短短不到20行代码,就完成了Spring整合Mybatis。 Amazing!!! 这背后到底发生了什么? 还要从MapperScannerConfigur...

温安适
11/03
155
0
Mybatis3.3.x技术内幕(九):Mybatis初始化流程(中)

Mybatis初始化流程,其实就是组装重量级All-In-One对象Configuration的过程,主要分为系统环境参数初始化和Mapper映射初始化。 上一节中,粗略讲述了Mybatis初始化的基本步骤,本节,将详细分...

祖大俊
2016/05/02
2.1K
1
用 mybatis-log-plugin 插件解决你的痛点

痛点概述 当我们在排查bug ,需要看执行的完整sql 时,在 console可以拿到如图的sql 然后手工一个一个的替换问号占位符后,去MySQL 执行,看sql有木有什么问题。如果sql简单,那比较好说, ...

蒋先生66
06/11
420
0

没有更多内容

加载失败,请刷新页面

加载更多

JVM性能调优的6大步骤,及关键调优参数详解

JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,...

一只会编程的狼
13分钟前
6
0
并发和并行性有什么区别?

并发和并行性有什么区别? 示例被赞赏。 #1楼 并发性:具有共享资源潜力的多个执行流 例如:两个线程争用一个I / O端口。 平行主义:将问题分成多个相似的块。 例如:通过在文件的每半部分上...

javail
15分钟前
4
0
(推荐使用)提高开发效率工具集合

提高开发效率工具集合(推荐使用) 一、Hutool工具类 官网地址:https://www.hutool.cn/ Github地址:https://github.com/looly/hutool/ Gitee 地址:https://gitee.com/loolly/hutool/ 文档参...

明德先生
19分钟前
4
0
java并发-缓存一致性协议和内存屏障的思考和理解

################这是之前的思考 内存屏障只是保证清空流水线,如何保证高速缓存的内容更新到最新或刷新到主存呢?这个问题突然想到了,不知道这个需要怎回答。 内存屏障保证的CPU执行执行序...

萧默
22分钟前
5
0
类型名称后面的括号是否与new有所不同?

如果“测试”是普通类,则之间是否有任何区别: Test* test = new Test; 和 Test* test = new Test(); #1楼 new Thing(); 很明显,您想要一个构造函数,而new Thing; 表示您不介意是否未调...

技术盛宴
46分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部