mybatis源码阅读之5:mybatis底层参数封装过程

上一篇  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缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值