MyBatis动态拼接SQL,MyBatisPlus条件构造器

时间:2025-04-11 14:41:27

目录

一MyBatis动态拼接SQL

1:if标签

2、where标签

3:foreach标签

二 MyBatisPlus条件构造器

2.1使用QueryWrapper进行各种条件构造

2.1.1案例一组装条件查询

2.1.2、例2:组装排序条件

2.1.3、例3:组装删除条件

2.1.4、例4:条件的优先级

2.1.5实现子查询

2.2常用的QueryWrapper查询语法总结


一MyBatis动态拼接SQL

1:if标签

<select  resultType="User">
        <include ref></include>
        <where>
            <if test="money!=null and money!=''">
                and money>1000
            </if>
        </where>
    </select>

2where标签

<select  resultType="User">
        <include ref></include>
        <where>
            <if test="money!=null and money!=''">
                and money>1000
            </if>
        </where>
    </select>

where标签的作用是可以自动处理掉第一个and

3:foreach标签

<select  resultType="User">
        <include ref></include>
         <where>
             <foreach collection="ids" open="and id in(" item="id" separator="," close=")">
                 #{id}
             </foreach>

         </where>

    </select>

二 MyBatisPlus条件构造器

2.1使用QueryWrapper进行各种条件构造

2.1.1案例一组装条件查询

 @RequestMapping("/hello15")
    //查询用户名中包含a和余额在1000-9000之间的用户信息
    public List<User> text15(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        ("user_name","a");
        ("money",1000,9000);
        ("password","111");
        List<User> list = (queryWrapper);
        return list;

    }

2.1.2、例2:组装排序条件

 @RequestMapping("/hello16")
    public  List<User> text16(){
        //根据用户余额降序排序,如果遇到相同余额的则按照id升序排序
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper
                .orderByDesc("money")
                .orderByAsc("id");
        List<User> list = (queryWrapper);
        return list;
    }

2.1.3、例3:组装删除条件

 @RequestMapping("/hello17")
    public int text17(){
        //删除余额为空的用户信息
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        queryWrapper
                .isNull("money");
        int count = (queryWrapper);
        return  count;
    }

2.1.4、例4:条件的优先级

  @RequestMapping("/hello18")
    public int text18(){
        //修改余额大于1000并且用户名等于admin或者余额为空的用户信息
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper
                .gt("money",1000)
                .eq("user_name","admin")
                .or().isNull("money");
        //通过对象set方法修改信息
        User user = new User();
        ("大胖");
        ("888");
        int count = (user, queryWrapper);
        return count;
    }

2.1.5实现子查询

@RequestMapping("/hello19")
    public List<User> text19(){
        //查询余额大于3等于3000的用户信息
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        ("id","select id from t_user where money>=3000");
        List<User> list = (queryWrapper);
        return list;
    }

2.2常用的QueryWrapper查询语法总结

() 小于
() 小于等于
() 大于
() 大于等于
() 等于
() 不等于
(“属性”,“值”) 模糊查询%值%
(“属性”,“值”) 模糊查询不包含%值%
(“属性”,“值”) 模糊查询%值 以什么结尾
(“属性”,“值”) 模糊查询 值% 以什么开始
() 值为空或者为null
() 值不为空 或者为null
(“属性”,“条件”,“条件”) 符合多个条件的值
(“属性”,“条件”,“条件”) 不符合多个条件的值
() 或者
() 和
(sql语句) 符合sql语句的值
(sql语句) 不符合SQL语句的值