使用QueryRunner进行模糊查询参数数量报错问题,Like

在进行SQL模糊查询测试时遇到问题,发现查询报错是由于在构造SQL语句时,对字段值进行了不必要的转义,即在值的前后添加了单引号。为解决此问题,修改了参数传递方式,将查询条件直接设置为`%`包裹的参数,避免了手动添加引号导致的错误。现在,当查询条件存在时,会正确地将`%`符号添加到用户名两侧进行模糊匹配。
摘要由CSDN通过智能技术生成

今天在测试模糊查询时,sql语句自己测试明明没有错,debug了半天,终于发现问题所在。

原因:模糊查询进行了转义 %'字段'% 的值加上了 '' 导致查询报错

解决办法:String newUsername ="%"+username+"%";  将要传入的参数直接加上%%,作为一个整体参数传入

 @Override
    public List<User> getUserByCondition(String username, String gendar) throws SQLException {
        String sql = "select u_id as uid , u_name as username , u_password as upassword, u_sex as usex , " +
                "u_status as ustatus , u_code as code , u_email as email, u_role as urole from user ";
        if(StringUtils.isEmpty(gendar) &&  !StringUtils.isEmpty(username)){
            sql += " where u_name like ?";
            String newUsername = "%" + username + "%";
            return queryRunner.query(sql,new BeanListHandler<>(User.class),newUsername);
        }else if(!StringUtils.isEmpty(gendar) &&  StringUtils.isEmpty(username)){
            sql += " where u_sex = ?";
            return queryRunner.query(sql,new BeanListHandler<>(User.class),gendar);
        }else if(!StringUtils.isEmpty(gendar) &&  !StringUtils.isEmpty(username)){
            sql += " where u_name like ? and u_sex = ?";
            String newUsername = "%" + username + "%";
            System.out.println(sql);
            System.out.println(sql);
            return queryRunner.query(sql,new BeanListHandler<>(User.class),newUsername,gendar);
        }else{
            return queryRunner.query(sql,new BeanListHandler<>(User.class));
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值