1)#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。#{}可以接收简单类型值或pojo属性值。如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
(2)${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
注:
(1)简单类型就是不是自己定义的类型
(2)模糊查询:'%${value}%' 不可漏掉单引号
mybatis 中的转义符问题:
在mapper ***.xml中的sql语句中,不能直接用大于号、小于号要用转义字符
解决方法:
1、转义字符串
小于号 < <
大于号 > >
和 & &
单引号 ' '
双引号 " "
2、使用<![CDATA[ 你的sql语句 ]]>(sql语句中的<where><if>等标签不会被解析)
如:
<![CDATA[
select * from
(select t.*, ROWNUM as rowno from tbl_user t where ROWNUM <= #{page.end,jdbcType=DECIMAL}) table_alias
where table_alias.rowno >#{page.start,jdbcType=DECIMAL}
]]>
本文介绍了MyBatis中#{}和${}的使用。#{}是占位符号,可自动进行类型转换,能防SQL注入;${}用于拼接SQL串,不进行类型转换。还提到简单类型及模糊查询注意事项。此外,讲解了MyBatis中SQL语句转义符问题及解决方法,如使用转义字符串或<![CDATA[ ]]>
1214

被折叠的 条评论
为什么被折叠?



