mybatis $ 和# 的区别
2017-09-09 21:01
239 查看
${}和#{}
相同点:都可以获取map的值或pojo中对象属性的值。
不同点:#{}以预编译的形式,将参数设置在sql中,类似PrepareStatement。在sql中会是一个问号。可防止sql注入。
${}将值取出直接拼装在sql语句中。
一般表名动态(分表),或排序字段为动态时(按某个字段排序),使用${}
例如:select id,last_name lastName,email,gender from tbl_employee where id=${id} and last_name=#{lastName}
解析后:select id,last_name lastName,email,gender from tbl_employee where id=2 and last_name=?
#{}还有更丰富的用法就是可以传参数:
javaType、 jdbcType、 mode(存储过程)、 numericScale、
resultMap、 typeHandler、 jdbcTypeName、 expression(未来准备支持的功能);
jdbcType通常需要在某种特定的条件下被设置:
在我们数据为null的时候,有些数据库可能不能识别mybatis对null的默认处理。比如Oracle(报错);
JdbcType OTHER:无效的类型;因为mybatis对所有的null都映射的是原生Jdbc的OTHER类型,oracle不能正确处理;
由于全局配置中:jdbcTypeForNull=OTHER;oracle不支持;两种办法
1、#{email,jdbcType=NULL};
2、jdbcTypeForNull=NULL
<setting name="jdbcTypeForNull" value="NULL"/>
相同点:都可以获取map的值或pojo中对象属性的值。
不同点:#{}以预编译的形式,将参数设置在sql中,类似PrepareStatement。在sql中会是一个问号。可防止sql注入。
${}将值取出直接拼装在sql语句中。
一般表名动态(分表),或排序字段为动态时(按某个字段排序),使用${}
例如:select id,last_name lastName,email,gender from tbl_employee where id=${id} and last_name=#{lastName}
解析后:select id,last_name lastName,email,gender from tbl_employee where id=2 and last_name=?
#{}还有更丰富的用法就是可以传参数:
javaType、 jdbcType、 mode(存储过程)、 numericScale、
resultMap、 typeHandler、 jdbcTypeName、 expression(未来准备支持的功能);
jdbcType通常需要在某种特定的条件下被设置:
在我们数据为null的时候,有些数据库可能不能识别mybatis对null的默认处理。比如Oracle(报错);
JdbcType OTHER:无效的类型;因为mybatis对所有的null都映射的是原生Jdbc的OTHER类型,oracle不能正确处理;
由于全局配置中:jdbcTypeForNull=OTHER;oracle不支持;两种办法
1、#{email,jdbcType=NULL};
2、jdbcTypeForNull=NULL
<setting name="jdbcTypeForNull" value="NULL"/>
相关文章推荐
- mybatis和hibernate的区别(keep update)
- mybatis框架中的#和$的区别
- mybatis中#{}和${}的区别
- MyBatis中resultType和resultMap的区别
- mybatis中的#和$的区别
- Mybatis Sql语句#{},和 ${}传参的区别
- mybatis和hibernate本质区别和应用场景
- mybatis中"#"和"$"的区别
- MyBatis中#和$的区别
- iBatis与MyBatis区别2
- 面试之jpa和mybatis的区别
- MyBatis中使用#和$书写占位符有什么区别?
- mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译
- mybatis入门--#{}和${}的区别
- mybatis中"#"和"$"的区别
- SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别
- Hibernate与mybatis的区别
- Mybatis 中$与#的区别
- mybatis中#与$符号在防止数据注入上的区别
- MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别