MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)

条件构造器

一般都是用service层的方法,因为比mapper层的全。十分重要:Wrapper 记住查看输出的SQL进行分析

相当于创建一个构造器对象,然后讲需要查询or更新的条件写在里面,最后打包给mapper or service层的插入、更新方法

下图是Wapper的子类,QueryWrapperUpdateWrapper是一般的Wrapper,AbstractLambdaWrapper 是lambda语法糖的链式操作(两者选择一种使用即可)

MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)_第1张图片

下图是wrapper的条件方法,就不一一介绍了,下面举了六个就基本例子 

MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)_第2张图片

1、测试一 

@Test
public void testWrapper1() {
    //参数是一个wrapper ,条件构造器,和刚才的map对比学习!
    //查询name不为空,email不为空,age大于18的用户
    QueryWrapper wrapper = new QueryWrapper<>();
    wrapper
        .isNotNull("name")
        .isNotNull("email")
        .ge("age",18);
    List userList = userMapper.selectList(wrapper);
    userList.forEach(System.out::println);
}

测试二

@Test
public void testWrapper2() {
    //查询name=wsk的用户
    QueryWrapper wrapper = new QueryWrapper<>();
    wrapper.eq("name","wsk");
    //查询一个数据selectOne,若查询出多个会报错
    //Expected one result (or null) to be returned by selectOne(), but found: *
    //若出现多个结果使用list或map
    User user = userMapper.selectOne(wrapper);//查询一个数据,若出现多个结果使用list或map
    System.out.println(user);
}

测试三

@Test
public void testWrapper3() {
    //查询age在10-20之间的用户
    QueryWrapper wrapper = new QueryWrapper<>();
    wrapper.between("age", 10, 20);//区间
    Integer count = userMapper.selectCount(wrapper);//输出查询的数量selectCount
    System.out.println(count);
}

测试四

@Test
public void testWrapper4() {
    //模糊查询
    QueryWrapper wrapper = new QueryWrapper<>();
    wrapper
        .notLike("name","s")
        .likeRight("email","qq");//qq%  左和右?
    List> maps = userMapper.selectMaps(wrapper);
    maps.forEach(System.out::println);
}

测试五

@Test
public void testWrapper5() {
    //模糊查询
    // SELECT id,name,age,email,version,deleted,create_time,update_time 
    //FROM user 
    //WHERE deleted=0 AND id IN 
    //(select id from user where id<5)
    QueryWrapper wrapper = new QueryWrapper<>();
    //id 在子查询中查出来
    wrapper.inSql("id","select id from user where id<5");
    List objects = userMapper.selectObjs(wrapper);
    objects.forEach(System.out::println);
}

测试六

@Test
public void testWrapper6() {
    QueryWrapper wrapper = new QueryWrapper<>();
    //通过id进行降序排序
    wrapper.orderByDesc("id");
    List userList = userMapper.selectList(wrapper);
    userList.forEach(System.out::println);
}

你可能感兴趣的:(后端,java,数据库,开发语言,系统架构,jvm)