MySQL 之 sql查询参数丢失,因为参数类型与表字段类型不一致

28 篇文章 0 订阅
<select id="getNewsCount" parameterType="com.dxm.dto.NewsPageDto" resultType="Integer">
    select count(*) from  news 
    <where> 
        <if test="status!=null and status!='' ">
             status=#{status}
        </if>
    </where>
</select>

  select count(*) from news  where status=? .   

sql语句的参数值出现了丢失的情况

仔细分析是因为数据类型的原因

 

解答:

 

字段 status在表中是 int型而属性 status 在NewsPageDto 对象中是 String类型,故造成status值丢失,sql出错。

将实体的status属性改为与数据库字段status类型一致,因为是int类型,去掉sql中if 判断 status!='' 的 。 

<select id="getNewsCount" parameterType="com.dxm.dto.NewsPageDto" resultType="Integer">

select count(*) from news

 <where>

  <if test="status!=null > status=#{status} </if>

</where>

</select>

 

注意:int 型数据 在sql 的if 判断中只需要判断 !=null 即可。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值