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

目录

一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 id="selectByMoney" resultType="User">
        <include refid="user_sql"></include>
        <where>
            <if test="money!=null and money!=''">
                and money>1000
            </if>
        </where>
    </select>

2where标签

<select id="selectByMoney" resultType="User">
        <include refid="user_sql"></include>
        <where>
            <if test="money!=null and money!=''">
                and money>1000
            </if>
        </where>
    </select>

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

3:foreach标签

<select id="selectUserById" resultType="User">
        <include refid="user_sql"></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>();
        queryWrapper.like("user_name","a");
        queryWrapper.between("money",1000,9000);
        queryWrapper.eq("password","111");
        List<User> list = dao.selectList(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 = dao.selectList(queryWrapper);
        return list;
    }

2.1.3、例3:组装删除条件

 @RequestMapping("/hello17")
    public int text17(){
        //删除余额为空的用户信息
        QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
        queryWrapper
                .isNull("money");
        int count = dao.delete(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();
        user.setUserName("大胖");
        user.setPassword("888");
        int count = dao.update(user, queryWrapper);
        return count;
    }

2.1.5实现子查询

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

2.2常用的QueryWrapper查询语法总结

queryWrapper.lt() 小于
queryWrapper.le() 小于等于
queryWrapper.gt() 大于
queryWrapper.ge() 大于等于
queryWrapper.eq() 等于
queryWrapper.ne() 不等于
queryWrapper.like(“属性”,“值”) 模糊查询%值%
queryWrapper.notLike(“属性”,“值”) 模糊查询不包含%值%
queryWrapper.likeLeft(“属性”,“值”) 模糊查询%值 以什么结尾
queryWrapper.likeRight(“属性”,“值”) 模糊查询 值% 以什么开始
queryWrapper.isNull() 值为空或者为null
queryWrapper.isNotNull() 值不为空 或者为null
queryWrapper.in(“属性”,“条件”,“条件”) 符合多个条件的值
queryWrapper.notIn(“属性”,“条件”,“条件”) 不符合多个条件的值
queryWrapper.or() 或者
queryWrapper.and() 和
queryWrapper.sql(sql语句) 符合sql语句的值
queryWrapper.notSql(sql语句) 不符合SQL语句的值

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值