MyBatis-Plus学习笔记

本文档详细介绍了MyBatis-Plus的使用,包括它的介绍、创建项目、主要特性如实体类注解、CRUD操作、逻辑删除、查询与分页、条件构造器、乐观锁和悲观锁的实现,以及性能分析插件和代码生成器的使用。通过对AbstractWrapper、QueryWrapper和UpdateWrapper等类的深入讲解,帮助开发者更好地理解和运用MyBatis-Plus。
摘要由CSDN通过智能技术生成

MyBatis-Plus学习笔记

Mybatis-Plus介绍

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高 效率而生。

官网:https://mybatis.plus/ 或 https://mp.baomidou.com/

创建MP项目

根据官网方法,新建项目,导入MP的包即可。

特点

基础的curd很简单

带条件的加上wapper就行

注意:

在mybaits plus插入数据后会自动回填

对于id有一串数据

mybatis plus的主键id生成算法:雪花算法

数据库中的主键一定要设置为自增的

实体类注解的使用

id上加上

@TableId(type = IdType.AUTO)
private Long id;

特定不可用的上加上注解:

@TableField(select = false)
private String password;

和数据库对应不上的字段加上

@TableField("email")
private String mail;

创建时间要加入的注解

@TableField(fill = FieldFill.INSERT)
private Date  createTime;

更新时间要加入的注解

@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

插入操作

// 测试插入
@Test
public void testInsert(){
   
    User user = new User();
    user.setName("张三");
    user.setAge(3);
    user.setEmail("123456789@qq.com");
    int result = userMapper.insert(user); // 帮我们自动生成id
    System.out.println(result); // 受影响的行数
    System.out.println(user); // 发现,id会自动回填
}

删除操作

    // 测试删除
    @Test
    public void testDeleteById() {
   
        userMapper.deleteById(1240620674645544965L);
    }

    // 通过id批量删除
    @Test
    public void testDeleteBatchId() {
   
        userMapper.deleteBatchIds(Arrays.asList(1240620674645544961L, 1240620674645544962L));
    }

    // 通过map删除
    @Test
    public void testDeleteMap() {
   
        HashMap<String, Object> map = new HashMap<>();
        map.put("name", "张三");
        userMapper.deleteByMap(map);
    }

一、物理删除
在Mp中,没有指定(配置)逻辑删除时,我们所做的删除都是物理删除。

1、根据Id删除

@Test
public void testDeleteById(){
   
    int result = userMapper.deleteById(5L);
system.out.println(result);
}

2、批量删除

@Test
public void testDeleteBatchIds() {
   
    int result = userMapper.deleteBatchIds(Arrays.asList(8, 9, 10));
system.out.println(result);
}

3、简单的条件删除

使用map构造删除的条件,只能构造等于的关系条件,一般不使用这个,使用wrapper进行

@Test
public void testDeleteByMap() {
   
    HashMap<String, Object> map = new HashMap<>();
    map.put("name", "Helen");
    map.put("age", 18);
    int result = userMapper.deleteByMap(map);
	system.out.println(result);
}

逻辑删除

1.在数据库中新建 deleted字段

2、在实体类中添加属性

@TableLogic //逻辑删除
private Integer deleted;

3.在config中配置

// 逻辑删除组件!
@Bean
public ISqlInjector sqlInjector() {
   
return new LogicSqlInjector();
}

4.在配置文件中添加配置(application.properties)

# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1 # 删除了的用1表示
mybatis-plus.global-config.db-config.logic-not-delete-value=0 # 没删除的用0表示

5.测试

发现删除操作,最终是使用的update语句

普通查询

使用Map

    // 测试查询
    @Test
    public void testSelectById() {
   
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }

    // 测试批量查询!
    @Test
    public void testSelectByBatchId() {
   
        List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
        users.forEach(System.out::println);
    }

    // 按条件查询之一使用map操作
    @Test
    public void testSelectByBatchIds() {
   
        HashMap<String, Object> map = new HashMap<>();
        // 自定义要查询
        map.put("name", "张三");
        map.put("age", 3);
        List<User> users = userMapper.selectByMap(map);
        users.forEach(System.out::
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值