Mybatis-Plus -03 Mybatis-Plus实现CRUD

Mybatis-Plus实现CRUD

    • 1 Insert增加
    • 2 ID生成策略
    • 3 Delete删除
    • 4 逻辑删除
    • 5 Update修改
    • 6 Select查询

Mybatis-Plus实现CRUD

  • 通用 CRUD 封装**BaseMapper (opens new window)**接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器
  • 参数 Serializable为任意类型主键 Mybatis-Plus不推荐使用复合主键约定每一张表都有自己的唯一id 主键
  • 对象 Wrapper为 条件构造器

1 Insert增加

插入一条记录

  • int insert(T entity);
//测试增加
@Test
public void testInsert(){
    User user = new User(null,"jack",30,"[email protected]");
    userMapper.insert(user);
}

此时,代码会出现异常。因为User类并没有设置ID,那么MP会使用ID生成策略自动生成一个ID。

这个ID是由雪花算法得到的,类型为Long类型,而实体类在中ID为Integer类型

2 ID生成策略

通过**@TableId(type = IdType.AUTO)** 注解进行指定

主键类型 参数说明
AUTO(0) 数据库ID自增(数据库使用自增)
NONE(1) 该类型为未设置主键类型(将跟随全局)
INPUT(2) 用户手动输入ID
ID_WORKER(3) 全局唯一ID (idWorker )
UUID(4) 全局唯一ID (UUID)
ID_WORKER_STR(5) 符串全局唯一ID (idWorker 的字符串表示)

3 Delete删除

根据 ID 删除

  • int deleteById(Serializable id)

删除(根据ID 批量删除)

  • int deleteBatchIds(@Param(Constants.COLLECTION) Collection idList)
//测试删除
@Test
public void testdeleteById(){
    userMapper.deleteById(6);
}
//测试批量删除
@Test
public void testdeleteBatchIds(){
    Integer[] ids = {1,2,3,4};
    userMapper.deleteBatchIds(Arrays.asList(ids));
}

4 逻辑删除

在开发中有些数据不能直接从数据库中进行删除。用户删除数据有时候管理员还需要查看!!!

那么在实际的开发中可以实现逻辑删除

实现:

  1. 在数据库中添加deleted字段(0表示未删除、1表示删除)
  2. 在实体上添加@TableLogic注解
@TableLogic
private Integer deleted;
//测试逻辑删除
@Test
public void testLogicDeleteById(){
    userMapper.deleteById(1);
}
# 执行sql语句为:
UPDATE user SET deleted=1 WHERE id=? AND deleted=0

添加逻辑删除属性后,查询中都会自动带上条件where deleted = 0

5 Update修改

根据 ID 修改(参数为实体类对象)

  • int updateById(@Param(Constants.ENTITY) T entity);
//测试修改
@Test
public void testUpdateById(){
    User user = new User(5,"rose",30,"[email protected]");
    userMapper.updateById(user);
}

6 Select查询

根据 ID 查询

  • T selectById(Serializable id);

查询(根据ID 批量查询)

  • List selectBatchIds(@Param(Constants.COLLECTION) Collection idList);

根据 entity 条件,查询全部记录

  • List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper);

根据 Wrapper 条件,查询总记录数

  • Integer selectCount(@Param(Constants.WRAPPER) Wrapper queryWrapper);
//测试根据id查询
@Test
public void testselectById(){
    User user = userMapper.selectById(1);
    System.out.println(user);
}
//查询(根据ID 批量查询)
@Test
public void testselectBatchIds(){
    List<User> userList = userMapper.selectBatchIds(Arrays.asList(1, 2, 3, 4));
    userList.forEach(System.out::println);
}
//根据 entity 条件,查询全部记录
@Test
public void testselectList(){
    List<User> userList = userMapper.selectList(null);
    userList.forEach(System.out::println);
}
//根据 Wrapper 条件,查询总记录数
@Test
public void testselectCount(){
    Integer count = userMapper.selectCount(null);
    System.out.println(count);
}

你可能感兴趣的:(Java,#,框架演进,mybatis,java,数据库)