Mybatis中如何查询时间段内的数据
来源:互联网 发布:ubuntu搜狗输入法安装 编辑:程序博客网 时间:2024/06/07 23:40
最后一个是正确的,前边的三个是可能遇到的坑,给大家展示一下,如果不需要的,可以直接跳到最后看:
有时候我们需要查询一张表内一段时间内操作的数据,大家很容易就想到了 between ? and ? 这个 句型的sql 对不对? ,如果现在需要两个参数(比如一个开始日期,一个结束日期)来传递,需求是选择一个参数或者两个参数都可以查询,但是如下边这个条件判断使用and连接,此时需要两个参数都要有,才会有查询结果,当其中有一个日期参数为空的时候,这个sql就不会被执行,必须要两个参数才可以查询,这与我们的需求不符合,所以不可取,
<if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''"> stock_bill.bill_date between #{beginDate} and #{endDate} </if>
现在我们将其中的两个条件之间的and 改为or试一试
<if test="beginDate != null and beginDate != '' or endDate != null and endDate != ''"> AND stock_bill.bill_date between #{beginDate} and #{endDate} </if>
此时如果输入两个日期参数同样可以查询到对应的数据,但是如果只输入一个开始日期参数,此时查询结果为空,通过打印sql,我们可以看到只有一个开始日期,没有结束日期,between ? and ? 的两个日期参数不完整,一个参数为空,所以这个sql 就发生了错误,这显然与我们的初衷不符合,所以这个方法也不可取,打印sql如下:
看来想要通过一个参数就可以查询到对应的数据,使用between?and ?是不行的,我只好放弃了between? and? ,而把他们都拆开来。代码如下:
<if test="beginDate != null and beginDate != ''"> AND stock_bill.bill_date >= #{beginDate}</if><if test="endDate != null and endDate != ''">AND stock_bill.bill_date <= #{endDate}</if>
此时的我又遇到了另外的坑,报错信息如下
The content of elements must consist of well-formed character data or markup. 这个错误是说我的><号不符合xml规范,仔细一想真是,脑子不够用了,这么简单地错误都出来了,看来真是不能心急,于是把>< 号使用了<![CDATA[ ]]>标签括起来,代码如下:
<if test="beginDate != null and beginDate != ''">AND stock_bill.bill_date <![CDATA[>=]]> #{beginDate}</if> <if test="endDate != null and endDate != ''">AND stock_bill.bill_date <![CDATA[<=]]>#{endDate}</if>
ok,然后启动之后,我只选择开始时间,只选择结束时间,同时选择开始时间和结束时间,发现查询的结果都是正确的。
- Mybatis中如何查询时间段内的数据
- MySQL中查询一段日期内指定时间段的数据
- Sqlite查询时间段内的数据问题解决!
- orale 查询两个时间段内的数据
- 【机房收费系统】如何查询固定时间段内的数据MSHflexGrid
- orcle中时间段数据的查询
- mysql数据库查询某个时间段内数据的方法
- Oracle查询某段日期内某个时间段的数据
- Oracle查询某段日期内某个时间段的数据
- mybatis查询mysql的时间段
- mybatis的时间段动态查询
- Mybatis中xml文件的时间段动态查询
- oracle中查找某个时间段内的数据
- oracle 如何固定查询一个时间段的数据
- 在一个时间段内的间隔查询
- oracle+hibernate 时间段内查询的方法:
- mongodb存储日期时间格式的数据,并且快速查询出某一个时间段内的数据
- mybatis中如何查询一对多的关联列表数据
- java--String转化各种进制
- 数据解析
- EF操作-删除记录
- synchronized锁的理解
- JVM调优总结(6):新一代的垃圾回收算法
- Mybatis中如何查询时间段内的数据
- ipython + notebook
- Ribbon的使用
- 廖雪峰的Python—sorted
- 面试有感
- centos6.8下无法使用lsof命令"-bash: lsof: command not found"
- codeforces 787A the monster(扩展欧几里得做法+暴力做法)
- window10下php7 nginx mysql redis 开发环境快速搭建
- opencv技术