本人小白一个,还在努力追寻大佬的脚步,有表达错误的地方,环境大家指出,积极改正
最近在毕业设计的时候,想实现下拉框选择不同的值,后台拿到值后在数据库进行判断查询不同的结果
大概像这样的东西。假设从页面中拿到的值是1,那我就把这个值定义为形参String number
传给数据库。然后自信满满地在mapping配置文件中写下
<if test="#{number} == '1' " >
and to_days(osj) = to_days(now());
</if>
<if test="#{number} == '7' " >
and week(osj) = week(now());
</if>
这样的语句。胸有成竹的开始测试,然而想象很美好,现实却很骨感,报了下面的错
There is no getter for property named 'XXX' in 'class java.lang.String'
被现实狠狠地上了一课。于是就可以排查反思,发现是在接受形参值的时候出了问题。在if判断语句中需要将#{number}改成_parameter
去判断。改完之后满心欢喜,想着可以歇一歇了,于是又开始了新一轮的测试。可是却依然报错,然后只能继续排查,不敢停下脚步。发现
是在判断是否相等的时候外边要''单引号,里面要用""双引号。贴下我最终的判断语句
<if test='_parameter =="1"' >
and to_days(osj) = to_days(now());
</if>
<if test='_parameter =="7"' >
and week(osj) = week(now());
</if>
另外,给大家贴下查询一天内,一周内,一月内的查询语句
一天内: select * from 表名 where to_days(字段名) = to_days(now());
一周内: select * from 表名 where week(字段名) = week(now());
一月内: select * from 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(字段名);