mybatis注解动态sql注入map和list方式(防sql注入攻击)
目录
- 网上的教程
- 我的教程(防sql注入攻击)
- 注入Map
- 注入List
- 封装foreach
- mybatis防止sql注入的循环map写法
网上的教程
- 配置xml
- 注解中写xml脚本@Select()
- 使用Java类中的Java方法拼写sql语句(不防sql注入攻击的纯字符串拼接)
我的教程(防sql注入攻击)
注入Map
Mapper层代码
@Repositorypublic interface ManageMapper { @SelectProvider(type = ManageProvider.class, method = "queryDevices") List
Service层代码
@Service("manageService")public class ManageServiceImpl implements ManageService { @Resource private ManageMapper manageMapper; @Override public List
【mybatis注解动态sql注入map和list方式(防sql注入攻击)】SqlProvider代码
public class ManageProvider { public String queryDevices() {String sql = new SQL().SELECT("TERMINALNUM, ORGCODE, DEVICETYPENO, DEVICENAME").FROM("S_DEVICE_INFO").WHERE("DEVICETYPENO = #{devicetypeno}").WHERE("ORGCODE IN (#{map.1-1}, #{map.1-2})").toString(); return sql; }}
注入List
Mapper层代码
@Repositorypublic interface ManageMapper { @SelectProvider(type = ManageProvider.class, method = "queryDevices") List
Service层代码
@Service("manageService")public class ManageServiceImpl implements ManageService { @Resource private ManageMapper manageMapper; @Override public List
SqlProvider代码
public class ManageProvider { public String queryDevices(Map params) {//String sql = new SQL()//.SELECT("TERMINALNUM, ORGCODE, DEVICETYPENO, DEVICENAME")//.FROM("S_DEVICE_INFO")//.WHERE("DEVICETYPENO = #{devicetypeno}")//.WHERE("ORGCODE IN (#{list[0]}, #{list[1]})")//.toString(); //return sql; @SuppressWarnings("unchecked")List
封装foreach
像xml foreach标签一样使用foreach方法
请看mybatis注解动态sql中foreach工具方法
mybatis防止sql注入的循环map写法
${k} = #{condition[${k}]}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- SpringBoot调用公共模块的自定义注解失效的解决
- 动态组件与v-once指令
- 生活与游戏日记(第182篇)(〔成长瞬间〕关注解决问题2019.10)
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- iview|iview upload 动态改变上传参数