MyBatis mybatis需要常注意的问题

本文深入探讨MyBatis框架中parameterType参数传递方式,对比#{}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.parameterType传入参数

1.接收参数的方式有两种:

     #{}预编译:#{} 只是表示占位,与参数的名字无关,如果只有一个参数,可以使用任意参数名接收参数值,会自动对应

     ${}非预编译(直接的sql拼接,不能防止sql注入):使用${} 去接收参数信息,在一个参数时,默认情况下必须使用${value}获取参数值,

最终解决方案:

在接口方法中的参数前,添加@Param注解指定参数名

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

#{} 预编译 编译成占位符? 防止sql注入 不需要关注数据类型 一个参数时,可以使用任意参数名接收参数

${} 非预编译 直接的字符串的拼接 不可以防止sql注入 需要关注数据类型 一个参数,必须使用value接收参数 @Param

二.ResultMap

 

三.SQL片段

 

很多时候同一个sql片段,可能在很多映射文件里都有使用,这就需要添加一个映射文件,用来统一定义sql片段。

如下,在resource目录下新增CommonSQL.xml文件:

四.一对多和多对多  resultMap的两种写法

 

 五.如果sql语句中出现’<’的解决方案

1、使用xml中的字符实体

2、使用<![CDATA[ < ]]>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值