Mybatis-Plus -03 Mybatis-Plus实现CRUD

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,"jack@qq.com");
    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<? extends Serializable> 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,"rose@qq.com");
    userMapper.updateById(user);
}

6 Select查询

根据 ID 查询

  • T selectById(Serializable id);

查询(根据ID 批量查询)

  • List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

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

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

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

  • Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> 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);
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yinying293

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

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

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

打赏作者

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

抵扣说明:

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

余额充值