Mybatis# $ 及SQL 踩坑
来源:互联网 发布:福昕pdf软件套装 编辑:程序博客网 时间:2024/06/05 18:03
今天遇到这样一个问题下面是我服务器日志中打印的SQL
SELECT COUNT(not_notice.id)FROM not_notice not_noticeWHERE 1 = 1AND not_notice.state IN (?)AND not_notice.pk_uc_company = ?打印传入的参数是这样的
Parameters: 1,3,4(String), 1(Integer)实际数据库执行查询语句是是90条 可是在接收到数据是67条 。SQL没有问题啊
我的Mybatis XML是这样写的
SELECTCOUNT(not_notice.id)FROMnot_notice not_noticeWHERE1 = 1<if test="noticeQuery.sendtime != null"><![CDATA[ AND not_notice.sendtime >= #{noticeQuery.sendtime}]]> </if> AND not_notice.state IN (#{noticeQuery.states})<if test="noticeQuery.content != null and noticeQuery.content != ''">AND (not_notice.title LIKE CONCAT('%',#{noticeQuery.content},'%')OR not_notice.text LIKE CONCAT('%',#{noticeQuery.content},'%'))</if><if test="noticeQuery.starttime != null and noticeQuery.sendtime != null"><![CDATA[ AND not_notice.sendtime >= #{noticeQuery.starttime} AND not_notice.sendtime <= #{noticeQuery.endtime}]]></if>AND not_notice.pk_uc_company = #{noticeQuery.companyId}然后就一直盯着看 突然想到 #在mybatis会把参数在引号(' '),但是我想 ‘1,3,4’ 这样的条件传入应该查询不到呀 后来测试 竟然能查询到下面是执行的SQL
SELECT * FROM not_notice not_notice WHERE 1 = 1 AND not_notice.state IN ('1,3,4') AND not_notice.pk_uc_company = 1查询到的确实是67条 也就是满足第一个 1 这个条件 在逗号前终止了
后来我把 #{noticeQuery.sates}这个改为了¥{noticeQuery.state}的方式原样传入 结果就正常了。
说一下Mybatis # $的区别
#在Mybatis 中有预编译的功能,也就是我们在JavaWeb中先把要执行的SQL 进行格式校验 也就是调用了PreparedStatement这个接口 有预编译功能 可以防止SQL注入攻击,在实际的工作中大都使用这样表达式。
$是原生转入SQL的参数中,不进行预编译,采用此方式传入的参数不可以暴露到服务接口参数中,防止SQL注入攻击。
阅读全文
0 0
- Mybatis# $ 及SQL 踩坑
- mybatis使用及动态sql
- MyBatis执行动态sql及存储过程
- Mybatis查看完整SQL及执行性能
- Mybatis输入输出映射及动态sql
- MyBatis的配置及打印SQL语句
- Mybatis配置及动态SQL语句标签
- Mybatis学习(十二)mybatis理解动态sql及sql片段
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- Mybatis打印不出SQL及Maven仓库
- mybatis-config.xml配置文件及sql分页查询的实现
- 通用mapper生成sql及mybatis使用过程
- 判断是否保持函数依赖
- 深度掌握SVG路径path的贝塞尔曲线指令
- 树莓派播放音频杂音问题
- hadoop 2.x 安装和配置
- 搜集的一些不错的技术分享和知识整理的网站
- Mybatis# $ 及SQL 踩坑
- java创建数组、HashMap
- c#操作Office 警告:方法和非方法之间存在二义性
- Android 当前比较新的框架组合,Retrofit,OKHttp,RXJava的一些简单使用
- XPath学习:基本语法
- 归并排序
- 深入理解正则表达式
- 今晚8点!UWA六月直播第二弹-Unity引擎渲染效率全解析
- JS事件捕获与冒泡