mybatis 数值类型的参数!=‘‘ 会怎样

博客内容讲述了在应用dto,bo,vo时出现的一个问题,由于类型不匹配导致的映射失败。在status字段中,虽然实际为integer类型,但在进行条件判断时误将其当作string处理,引发了错误。作者强调了在编写测试表达式时要注意类型检查,尤其是对于数字类型,不应额外检查是否为空字符串。此外,还提醒在处理数据类型时要确保正确性,避免类似问题的发生。

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

 此处status为integer类型,但是在做传参数判断时当成了string看待

结果:

status=0 ,test=false

  <if test="status!=null and status !=''">
                and book.status= #{status}
 </if>

结论:

 1   在应用dto ,bo,vo时,要主要类型匹配,单独名称相同,映射失败!

 2  在写test表达式时,也要考虑类型,数字类型可别多此一举,加上空串的验证!!

@Select({"<script> ", "SELECT mbl.id,mbl.battery_id,mbl.battery_kind,mbl.create_time,mbl.battery_work_mode,mbl.battery_soc", ",mbl.sn,mbl.longitude_direction,mbl.longitude,mbl.latitude_direction,mbl.latitude", ",mbl.province_id,mbl.city_id,mbl.district_id,mt.project_id" , ",mbl.battery_soft_version,mbl.battery_error_code,mbl.upload_time " , " FROM my_battery_info_lastest mbl " , " LEFT JOIN mqtt_triad mt ON mt.client_id = mbl.battery_id " , " WHERE 1=1 " , "<when test='hwid!=null and hwid!=\"\"'> ", // "AND mbl.battery_id = #{hwid} " , " <![CDATA[ AND mbl.battery_id LIKE CONCAT('%',#{hwid},'%') ]]> ", "</when> ", " <when test='batteryKind != null'> ", " and mbl.battery_kind=#{batteryKind} ", " </when> ", "<when test='sn!=null and sn!=\"\"'> ", " <![CDATA[ AND mbl.sn LIKE CONCAT('%',#{sn},'%') ]]> ", "</when> ", "<when test='workModes!=null and workModes!=\"\"'> ", "<![CDATA[ AND mbl.battery_work_mode in ${workModes} ]]> ", "</when> ", "<when test='errCodeMin!=null'> ", // "<![CDATA[ AND mbl.batteryErrorCode >= ${errCodeMin} ]]> ", " AND <![CDATA[ CONVERT(mbl.battery_error_code,signed) >= #{errCodeMin,jdbcType=INTEGER} ]]>", "</when> ", "<when test='errCodeMax!=null'> ", // "<![CDATA[ AND mbl.batteryErrorCode <= ${errCodeMax} ]]> ", " AND <![CDATA[ CONVERT(mbl.battery_error_code,signed) <= #{errCodeMax,jdbcType=INTEGER} ]]>", "</when> ", "<when test='projectId!=null and projectId!=\"\"'> ", "AND mt.project_id = #{projectId} " , "</when> ", "<when test='projects!=null and projects!=\"\"'> ", " AND mt.project_id in (${projects}) " , "</when> ", "<when test='onlineStartTime!=null and onlineStartTime!=\"\"'> ", "<![CDATA[ AND DATE_FORMAT(mbl.upload_time,'%Y-%m-%d %H:%i:%s') >= #{onlineStartTime} ]]> " , "</when> ", "<when test='onlineEndTime!=null and onlineEndTime!=\"\"'> ", "<![CDATA[ AND DATE_FORMAT(mbl.upload_time,'%Y-%m-%d %H:%i:%s') < #{onlineEndTime} ]]> " , "</when> ", "<when test='startTime!=null and startTime!=\"\"'> ", "<![CDATA[ AND DATE_FORMAT(mbl.create_time,'%Y-%m-%d') >= #{startTime} ]]> " , "</when> ", "<when test='endTime!=null and endTime!=\"\"'> ", "<![CDATA[ AND DATE_FORMAT(mbl.create_time,'%Y-%m-%d') < #{endTime} ]]> " , "</when> ", "<when test='proviceId!=null and proviceId!=\"\"'> ", "AND mbl.province_id = #{proviceId} " , "</when> ", "<when test='cityId!=null and cityId!=\"\"'> ", "AND mbl.city_id = #{cityId} " , "</when> ", "<when test='districtId!=null and districtId!=\"\"'> ", "AND mbl.district_id = #{districtId} ", "</when> ", "<when test='sort!=null and sort!=\"\"'> ", "ORDER BY mbl.upload_time DESC ", "</when> ", "<when test='limit!=null and limit!=\"\"'> ", " ${limit} ", "</when> ", "</script>"})改成按照battery_work_mode =16、17、1、33、48、49、255 排序分页
最新发布
08-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值