MyBatis
- 单个参数:MB不会做特殊处理,直接使用#{id}取出参数值
- 多个参数:MB会做特殊处理,将参数封装成一个map,键为param1-paramn,使用#{param1}取出参数值(局限性:如果参数数量过多,会导致参数名混乱)
- 命名参数:(明确指定封装参数时map的key,多个参数会被封装成一个map,key为注解指定的值,value为参数值)在参数列表使用注解@Param(“id”)将参数命名,可以直接使用#{id}取值
- 如果多个参数是业务逻辑的数据模型,可以直接传入POJO,使用#{属性值},获取传入的属性值
- Map:如果多个参数不是业务模型中的数据,没有对应的POJO,不经常使用,为了方便,可以传入map,#{key},取出map中对应的值。
- TO(Transfer Object):如果多个参数不是业务模型中的数据,但是经常使用,建议使用编写一个TO(数据传输对象):
- page{
- int index;
- int size;
}
应用场景:
参数值的获取
- #{}:以预编译的形式,将参数设置到sql语句中,PreparedStatement,防止sql注入。
- ${}:直接拼接在sql语句中,会有安全问题
- 大多数使用#{},在原生sql不支持占位符预编译位置(分表、排序等),使用${}
- #{}更多的用法:
喜欢的话可以点点关注,或者添加作者微信,欢迎随时来撩