Mybatis-plus常用方法总结(便携查看)

1. 单表增删改查

class GgktDemoApplicationTests {
    //注入mapper
    @Autowired
    private UserMapper userMapper;
    //1.查询
    @Test
    public void findAll(){
        List<User> users = userMapper.selectList(null);
        for (User user:users
             ) {
            System.out.println(user);
        }
    }
    //2.插入
    @Test
    public void addUser(){
        User user=new User();
        user.setName("xiaoming");
        user.setAge(10);
        user.setEmail("23232930.com");
        //加入的行数
        int rows=userMapper.insert(user);
        System.out.println("rows:"+rows);
        //添加成功之后生成id值,回传到user对象里面
        System.out.println(user);
    }
    //3.修改操作
    @Test
    public void updateUser(){
        //根据id查询
        User user = userMapper.selectById(2);
        //设置修改值
        user.setName("zhangkai");
        //调用方法修改
        int rows=userMapper.updateById(user);
        System.out.println(rows);
    }
    //5 id删除
    @Test
    public void deleteId(){
        int rows = userMapper.deleteById(2);
        System.out.println("id删除行数"+rows);
    }
    //6 批量删除
    @Test
    public void deleteBatchIds(){
        int rows = userMapper.deleteBatchIds(Arrays.asList(1, 3));
        System.out.println("批删除行数"+rows);
    }
}

2. 分页查询(使用较多)

class GgktDemoApplicationTests {
    //注入mapper
    @Autowired
    private UserMapper userMapper;
    //4分页查询
    @Test
    public void findPage(){
        //创建Page对象,传递两个参数
        //当前页----- 每页显示记录数(1当前,3每页)
        Page<User> page = new Page<>(1, 3);
        //调用mp方法事项分页
        userMapper.selectPage(page,null);
        //IPage<User> page1 = userMapper.selectPage(page, null);
        List<User> list = page.getRecords();
        System.out.println(list);
        System.out.println(page.getCurrent());
        System.out.println(page.getPages());
        System.out.println(page.getSize());
        System.out.println(page.getTotal());
        System.out.println(page.hasNext());
        System.out.println(page.hasPrevious());
    }
}

3. 主键生成策略

1.ID_WORKER

MyBatis-Plus默认的主键策略是:ID_WORKER 全局唯一ID

2.自增策略

//data注解对应lombok使用get,set方法
@Data
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
    //逻辑删除标志 0--1,添加注解,注解是以Mybatis-plus封装的TableLogic
    @TableLogic
    private Integer deleted;
}
//其他主键
public enum IdType {  
    //数据库ID自增 IdType.AUTO(0)
    AUTO(0),
  	//该类型为未设置主键类型
    NONE(1),
	//用户输入ID   IdType.INPUT(0)
    //该类型可以通过自己注册自动填充插件进行填充   
    INPUT(2),
    //全局唯一ID (纯数字,比UUID更方便排序)    
    ASSIGN_ID(3),
  	//全局唯一ID (UUID)
    ASSIGN_UUID(4),
    /** @deprecated */
    @Deprecated
    ID_WORKER(3),
    /** @deprecated */
    @Deprecated
    ID_WORKER_STR(3),
    /** @deprecated */
    @Deprecated
    UUID(4);
    private final int key;
    private IdType(int key) {
        this.key = key;
    }
    public int getKey() {
        return this.key;
    }
}

4.逻辑删除

实体类需要添加注解依赖

//data注解对应lombok使用get,set方法
@Data
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
    //逻辑删除标志 0--1,添加注解,注解是以Mybatis-plus封装的TableLogic
    @TableLogic
    private Integer deleted;
}

application.properties配置文件中配置,有默认,一样的话不需要配置

在这里插入图片描述

5.Mybatis-plus对service层的封装

原始注入controller->service->mapper

@Service
public class UserServiceImpl implements UserService {
    //注入mapper
    //@Autowired
    //private UserMapper userMapper;

}
public interface UserService {
}

Mybatis-plus对service层的封装

public interface UserService extends IService<User> {
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>implements UserService {
    //注入mapper
    //@Autowired
    //private UserMapper userMapper;
}

逻辑删除,删除后数据库表中对应的delete列变成1,并且findAll()方法不会再查询出来该条信息内容,但是信息仍在表里。

//5 id删除
    @Test
    public void deleteId(){
        int rows = userMapper.deleteById(2);
        System.out.println("id删除行数"+rows);
    }

6. 条件查询(使用较多,重要)

下面列出一些常用方法

eq --> equal等于
ne--> not equal不等于
gt --> greater than大于
lt --> less than小于
ge --> greater than or equal 大于等于
le --> less than or equal 小于等于
in --> in 包含(数组)
isNull --> 等于null
between --> 在2个条件之间(包括边界值)
like-->%XX%、likeLeft-->%XX、likeRight-->XX%
orderByDesc-->降序、orderByAsc-->升序

部分方法代码

@Test
public void query1(){
    //首先需要创建QueryWrapper对象
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    //ge、gt、le、lt
    //ge两个参数:第一个参数为表字段名称,第二个参数是大于小于。。。的值age>10
    wrapper.ge("age",20);
    List<User> userList = userMapper.selectList(wrapper);
    System.out.println(userList);
}
//3.queryWrapper--like:%To%、likeLeft:%To、likeRight:To%**
    @Test
    public void query3(){
        //首先需要创建QueryWrapper对象
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        //like、likeLeft、likeRight
        //like两个参数:第一个参数为表字段列名称,第二个参数值--模糊值
        wrapper.like("name","To");
        List<User> userList = userMapper.selectList(wrapper);
        System.out.println("执行结果>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
        System.out.println(userList);
    }
//4.queryWrapper--orderByDesc降序、orderByAsc升序**
    @Test
    public void query4(){
        //首先需要创建QueryWrapper对象
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        //orderByDesc、orderByAsc
        //orderByDesc一个参数:第一个参数为表字段列名称,
        wrapper.orderByDesc("name");
        List<User> userList = userMapper.selectList(wrapper);
        System.out.println("执行结果>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
        System.out.println(userList);
    }

LambdaQueryWrapper基本和QueryWrapper用法一致,只是写法不同

//5.LambdaqueryWrapper
@Test
public void LambdaQueryWrapper(){
    //首先需要创建LambdaQueryWrapper对象
    LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
    //wrapper.eq(User::getName,"Tom");
    //wrapper.ge(User::getAge,20);
    wrapper.likeLeft(User::getName,"om");
    //查询调用
    List<User> userList = userMapper.selectList(wrapper);
    System.out.println("执行结果>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
    System.out.println(userList);
}
r.ge(User::getAge,20);
    wrapper.likeLeft(User::getName,"om");
    //查询调用
    List<User> userList = userMapper.selectList(wrapper);
    System.out.println("执行结果>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
    System.out.println(userList);
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐