上一篇 mybatis增删改查注意点
下一篇 mybatis缓存
上节讲了mybatis对各种参数的封装,本节说说mybatis底层是如何对参数进行特殊处理来封装参数的。
先补充一个点:
#{}与${}取值有什么不同?
#{}:是以预编译的方式将参数设置到sql中,具有防止sql注入的功能,即具有PreparedStatement防注入的功能
#{}更丰富的用法:
制定参数规则:javaType,jdbcType,mode(存储过程),numericScale,resultMap,typeHandler,jdbcTypeNamed等
其中,jdbcType通常在某种特定的条件下被设置,例如:在我们的数据为null的时候,有些数据库不能识别mybatis对null的默认处理,比如Oracle数据库,对null的处理会报错。
${}:取出值直接拼装在sql中
总结:
大多数情况下,我们都用#{}取值,
但是针对分库分表时查询的表名时,以后通过${}获取表名去查询指定表中数据,例如
select * from ${tableName} order by ${orderby1},${orderby1}
下面开始说本文的重点:参数封装
上一篇 mybatis增删改查注意点
下一篇 mybatis缓存