Mybatis总结

1.映射配置文件中#与$的区别,总结如下:
(1) [color=red]#是把传入的数据当作字符串,如# number,#传入的是20(数字),则生成的sql语句是这样,order by "20",这当然会报错;[/color]
(2) [color=red]$传入的数据直接生成在sql里,如# number ,#传入的是20,则sql语句生成是这样,orderby 20,这就对了;[/color]
(3) #方式能够很大程度防止sql注入;
(4) $方式无法防止sql注入;
(5) $方式一般用于传入数据库对象.例如传入表名;
所以,一般能用#的就别用$。

2. <![CDATA[ ]]> 标记避免Sql中与xml规范相冲突的字符对xml映射文件的合法性造成影响
<![CDATA[price_from >= #{price}]]>
3.Sql标签:
<sql id=”userColumns”> 
id,username,password
</sql>

[color=red]这个元素可以被用来定义可重用的SQL代码段,可以包含在其他语句中。[/color]
举例:
这个SQL片段可以被包含在其他语句中,例如:
<select id=”selectUsers” parameterType=”int” resultType=”hashmap”> 
select <include refid=”userColumns”/>
from some_table
where id = #{id}
</select>

4.selectKey的使用
在insert语句中在Oracle经常使用序列、在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键。
使用myBatis的selectKey标签可以实现这个效果。
keyProperty :[color=red]selectKey 语句生成结果需要设置的属性。即返回给对象的值[/color]
resultType : 生成结果类型,MyBatis 允许使用基本的数据类型,包括String 、int类型。
order 1:BEFORE,会先选择主键,然后设置keyProperty,再执行insert语句;
2:AFTER,就先运行insert 语句再运行selectKey 语句。 取值:BEFORE,AFTER
statementType:MyBatis 支持STATEMENT,PREPARED和CALLABLE 的语句形式, 对应Statement ,PreparedStatement 和CallableStatement 响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值