MybatisPlus的查询方式

 条件构造器官方文档条件构造器 | MyBatis-Plus

由于MybatisPlus是对Dao层Mybatis的增强(简称MP)对Dao层提供好了增删改查等方法。

我们只需要继承 BaseMapper<实体类> 接口,使用@Mapper注解,便能得到里面的所有方法。

MP提供的部分方法测试:


@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {

    @Autowired
    private UserDao userDao;


    @Test
    //添加操作
    public void testSave(){
        User user = new User();
        user.setName("程序员");
        user.setPassword("123456");
        user.setAge(12);
        user.setTel("1566666666");
        userDao.insert(user);
    }

    @Test
    //删除
    public void testDelete(){
        userDao.deleteById(1576056004935659522L);
    }

    @Test
    //修改
    public void testUpdate(){
        User user = new User();
        user.setId(1L);
        user.setName("TOM");
        userDao.updateById(user);
    }

    @Test
    //查一个
    public void testGetById(){
        User user = userDao.selectById(2L);
        System.out.println(user);
    }




    @Test
    //查全部
    void testGetAll() {
        List<User> userList = userDao.selectList(null);
        for (User user : userList) {
            System.out.println(user);
        }
    }

    @Test
    //分页查询
    void testGetPage() {
        IPage<User> userIPage = new Page<>(1,2);
        userDao.selectPage(userIPage,null);
        System.out.println("当前页码值"+ userIPage.getCurrent());
        System.out.println("每页显示数" + userIPage.getSize());
        System.out.println("一共多少页" + userIPage.getPages());
        System.out.println("一共多少条" + userIPage.getTotal());
        System.out.println("数据" + userIPage.getRecords());

    }

对于用户的特殊条件查询,MP没有方法(但是程序员是万能的bushi

条件查询

@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {

    @Autowired
    private UserDao userDao;


    @Test
    //方式一:按条件查询
    void testGetAll1() {
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.lt("age",18);
        List<User> userList = userDao.selectList(wrapper);
        for (User user : userList) {
            System.out.println(user);
        }
    }

    @Test
    //方式二:Lambda格式按条件查询
    void testGetAll2() {
        QueryWrapper<User> wrapper = new QueryWrapper<User>();
        wrapper.lambda().lt(User::getAge,18);
        List<User> userList = userDao.selectList(wrapper);
        for (User user : userList) {
            System.out.println(user);
            }
    }

    @Test
    //方式三:Lambda格式按条件查询
    void testGetAll3() {
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
        lqw.lt(User::getAge, 18);
        List<User> userList = userDao.selectList(lqw);
        for (User user : userList) {
            System.out.println(user);
        }
    }

    //多条件查询
    @Test
        //1. 10~30岁之间
    void testGetAll4() {
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
        lqw.lt(User::getAge, 30); //lt()小于
        lqw.gt(User::getAge, 10); //gt()大于
        //链式编程
        //lqw.lt(User::getAge, 30).gt(User::getAge, 10);
        List<User> userList = userDao.selectList(lqw);
        for (User user : userList) {
            System.out.println(user);
        }
    }

    @Test
        //2. 小于10或者大于30   或 or()
    void testGetAll5() {
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
        lqw.lt(User::getAge, 10);
        lqw.or();
        lqw.gt(User::getAge, 30);
        //链式编程
        //lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);
        List<User> userList = userDao.selectList(lqw);
        for (User user : userList) {
            System.out.println(user);
        }
    }


    @Test
    //条件查询空值判定
    void testGetAll6() {
        //模拟数据
        UserQuery userQuery = new UserQuery();
        userQuery.setAge(10);
        userQuery.setAge2(30);

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
        //大于10
        lqw.gt( null != userQuery.getAge(),User::getAge,userQuery.getAge());
        //小于30
        lqw.lt( null != userQuery.getAge2(),User::getAge,userQuery.getAge2());
        List<User> userList = userDao.selectList(lqw);
        for (User user : userList) {
            System.out.println(user);
        }
    }

}

查询投影

//查询投影
    @Test
    // 1.按字段查询
    void testGetAll7(){
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
        lqw.select(User::getName,User::getAge,User::getPassword);
        List<User> userList = userDao.selectList(lqw);
        for (User user : userList) {
            System.out.println(user);
        }
    }

    @Test
    // 2.数据总量查询
    void testGetAll8(){
        QueryWrapper<User> QW = new QueryWrapper<User>();
        QW.select("count(*) as count");
        List<Map<String, Object>> userList = userDao.selectMaps(QW);
        for (Map<String, Object> stringObjectMap : userList) {
            System.out.println(stringObjectMap);
        }
    }

    @Test
        // 3.分组统计
    void testGetAll9(){
        QueryWrapper<User> QW = new QueryWrapper<User>();
        QW.select("count(*) as count", "tel");
        QW.groupBy("tel");
        List<Map<String, Object>> userList = userDao.selectMaps(QW);
        for (Map<String, Object> stringObjectMap : userList) {
            System.out.println(stringObjectMap);
        }
    }

查询条件

//查询条件
    @Test
    //等值查询 eq() 等同于 =
    void testGetAll10(){
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
        // name = Jerry 并且 Password = jerry
        lqw.eq(User::getName,"Jerry").eq(User::getPassword,"jerry");
        User user = userDao.selectOne(lqw);
        System.out.println(user);
    }

    @Test
    //范围查询 between()
    void testGetAll11(){
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
        // 10<= 年龄 <=30
        lqw.between(User::getAge,10,30);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);
    }

    @Test
    //模糊匹配 like()
    void testGetAll12(){
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
        // name带 J
        lqw.like(User::getName,"J");
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lioosir_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值