Mysql语句:前端传入参数,数据库判断参数是否为空从而选择是全部查找还是按参数查找

联表查询,两张表,一张是table表,一张db表,根据数据库的名字查其下属的所有表。
遇到mybatis错误:There is no getter for property named ‘xxx’ in ‘class java.lang.String’

首先在DAO层接口加上@Param(“dbName”)

 List<TkvTable> selectByDBName(@Param("dbName") String dbName);

SQL语句

 <select id="selectByDBName" resultType="TkvTable" parameterType="String">
    select
     t.id,
     t.name,
     t.ctime,
     t.uptime,
     t.cuser,
     t.upuser,
     t.item_count,
     t.database_id,
     d.name as db_name
    from
     tkv_table t INNER JOIN tkv_database d ON t.database_id=d.id
    where 1=1
     <if test="dbName != null and dbName != ''">
       and d.name like #{dbName}
     </if>
  </select>
<if test="dbName != null and dbName != ''">
       and d.name like #{dbName}
     </if>

这里的dbName要和接口里的参数相对应,要注意是d.name不是name

再举个例子:

List queryByRangeOfTime(@Param(“minTime”) Long min, @Param(“maxTime”) Long max);

  <select id="queryByRangeOfTime" parameterType="Long" resultType="NoiseMessage">
  
    select * from noise_message
    
    where collect_time >= #{minTime} and collect_time <![CDATA[ <= ]]> #{maxTime}
    
    order by collect_time desc
    
</select>

注意Param(“???”)的参数和SQL语言参数一致

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值