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[ < ]]>

猜你喜欢

转载自blog.csdn.net/m0_38068812/article/details/87869998