尚硅谷MyBatisPlus学习记录3


我正在往河里撒沙子。

一、wapper介绍

wapper继承关系
Wrapper : 条件构造抽象类,最顶端父类
AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
QueryWrapper : Entity 对象封装操作类,不是用lambda语法
UpdateWrapper : Update 条件封装,用于Entity对象更新操作
AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper : Lambda 更新封装Wrapper

二、AbstractWrapper

1.ge、gt、le、lt、isNull、isNotNull

代码如下(示例):

    //1、ge 大于且等于、gt 大于、le 小于且等于、lt 小于、isNull 字段为null 、isNotNull 字段不为null
    @Test
    public void testSelect1(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//        queryWrapper.lt("age",21);
//        queryWrapper.isNull("age");
//        queryWrapper.isNotNull("version");
        List<User> users = userMapper.selectList(queryWrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

2.eq、ne

代码如下(示例):

    //2、eq 内容相同、ne 内容不同
    @Test
    public void testSelect2(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("name", "台灯");
        queryWrapper.ne("name","爱情");
        List<User> users = userMapper.selectList(queryWrapper);
        for (User user : users) {
            System.out.println(user);
        }
//        User user = userMapper.selectOne(queryWrapper);
    }

3.between、notBetween

    @Test
    public void testSelect3(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//        queryWrapper.between("age",20,26);
        queryWrapper.notBetween("age",20,30);
        List<User> users = userMapper.selectList(queryWrapper);
        Integer integer = userMapper.selectCount(queryWrapper);
        System.out.println(integer);
        System.out.println(users);
    }

4、allEq

@Test
    public void testSelect4(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        HashMap<String, Object> map = new HashMap<>();
        map.put("name","台灯");
        map.put("id",1597452393308487681L);
        map.put("age",null);
        queryWrapper.allEq(map);
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);

    }

5.like、notLike、likeLeft、likeRight

@Test
    public void testSelect5(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//        queryWrapper.like("name","i");
        queryWrapper.notLike("email","e").likeRight("name","l");
        List<Map<String, Object>> list = userMapper.selectMaps(queryWrapper);
        list.forEach(System.out::println);
    }

6.in、notIn、inSql、notinSql、exists、notExists

in、notIn:
notIn(“age”,{1,2,3})—>age not in (1,2,3)
notIn(“age”, 1, 2, 3)—>age not in (1,2,3)
inSql、notinSql:可以实现子查询
例: inSql(“age”, “1,2,3,4,5,6”)—>age in (1,2,3,4,5,6)
例: inSql(“id”, “select id from table where id < 3”)—>id in (select id from table where id < 3)

    @Test
    public void testSelect6(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//        queryWrapper.in("age",20,28,26);
        queryWrapper.inSql("id","select id from user where id in (1,2,3)");
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

7.or、and

不调用or则默认认为使用and连

//or、and 注:这是使用的是updateWrapper
    @Test
    public void testUpdate1(){
        //修改值
        User user = new User();
        user.setAge(99);
        user.setName("我的饮水杯");

        //修改条件   不调用or,默认调用and
        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
        userUpdateWrapper.like("name","a")
                .or()
                .between("age",20,25);
        int result = userMapper.update(user, userUpdateWrapper);
        System.out.println("修改了"+result+"行");

    }

8.嵌套or、嵌套and

这里使用了lambda表达式,or中的表达式最后翻译成sql时会被加上圆括号

	@Test
    public void testUpdate2(){
        User user = new User();
        user.setAge(30);
        user.setName("NewRuik");

        //修改条件
        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
        userUpdateWrapper.like("name","Rui")
                .or(Sum -> Sum.eq("name","Sum").ne("age",20));
        int update = userMapper.update(user, userUpdateWrapper);
        System.out.println(update);
    }

9.orderBy、orderByDesc、orderByAsc

	@Test
    public void testOrder(){
        QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
        userQueryWrapper.orderByAsc("age")
                .orderByDesc("id");
        List<User> users = userMapper.selectList(userQueryWrapper);
        users.forEach(System.out::println);
    }

10.last

//10.last 这个就不赘述了,容易找出sql注入的危险,且可以使用其他的代替。
    @Test
    public void testSelectListLast() {

        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.last("limit 1");

        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

11.指定要查询的列

@Test
    public void testSelectListColumn(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("id", "name", "age");
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);

    }

12.set、setSql

    @Test
    public void testSetsql(){
        //修改值
        User user = new User();
        user.setAge(999);

        //修改条件
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.like("name","水")
                .set("name","耳机")
                .setSql("email = '123456@qq.com'");
        int update = userMapper.update(user,updateWrapper);
        System.out.println("修改的行数为:"+ update);
    }

总结

个人随便写写。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值