MyBatis mybatis需要常注意的问题
一.parameterType传入参数
1.接收参数的方式有两种:
#{}预编译:#{} 只是表示占位,与参数的名字无关,如果只有一个参数,可以使用任意参数名接收参数值,会自动对应
${}非预编译(直接的sql拼接,不能防止sql注入):使用${} 去接收参数信息,在一个参数时,默认情况下必须使用${value}获取参数值,
最终解决方案:
在接口方法中的参数前,添加@Param注解指定参数名
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
#{} 预编译 编译成占位符? 防止sql注入 不需要关注数据类型 一个参数时,可以使用任意参数名接收参数
${} 非预编译 直接的字符串的拼接 不可以防止sql注入 需要关注数据类型 一个参数,必须使用value接收参数 @Param
二.ResultMap
三.SQL片段
很多时候同一个sql片段,可能在很多映射文件里都有使用,这就需要添加一个映射文件,用来统一定义sql片段。
如下,在resource目录下新增CommonSQL.xml文件:
四.一对多和多对多 resultMap的两种写法
五.如果sql语句中出现’<’的解决方案
1、使用xml中的字符实体
2、使用<![CDATA[ < ]]>