数据库对前端下拉框select的不同值进行判断查询

"本文记录了一位开发者在毕业设计中遇到的Spring MVC参数传递与MyBatis动态SQL判断问题。在尝试实现根据下拉框选择查询不同结果时,初学者遇到了错误。首先,形参值在if判断语句中应使用&_parameter_,而非#{number}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人小白一个,还在努力追寻大佬的脚步,有表达错误的地方,环境大家指出,积极改正

最近在毕业设计的时候,想实现下拉框选择不同的值,后台拿到值后在数据库进行判断查询不同的结果

大概像这样的东西。假设从页面中拿到的值是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) &lt;= date(字段名);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值