MybatisPlus-快速入门

介绍

官网介绍:简介 | MyBatis-Plus

作用:提高单表CRUD操作的效率

快速开始

实现下列功能:

  1. 新增用户功能
  2. 根据id查询用户
  3. 根据id批量查询用户
  4. 根据id更新用户
  5. 根据id删除用户

引入MybatisPlus的起步依赖

MyBatisPlus官方提供了starter,其中集成了Mybatis和MybatisPlus的所有功能,并且实现了自动装配效果。

因此我们可以用MybatisPlus的starter代替Mybatis的starter,也就是说,引入了下面这个依赖后就可以同时使用Mybatis和MybatisPlus:

XML 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

定义Mapper

自定义的Mapper继承MybatisPlus提供的BaseMapper接口:

java 复制代码
public interface UserMapper extends BaseMapper<User> {

}

这个Mapper里什么都不用写,User是自定义的实体类,对应user表

演示(基于单元测试)

java 复制代码
@SpringBootTest
class UserMapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    void testInsert() {
        User user = new User();
        user.setId(5L);
        user.setUsername("Lucy");
        user.setPassword("123");
        user.setPhone("18688990011");
        user.setBalance(200);
        user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");
        user.setCreateTime(LocalDateTime.now());
        user.setUpdateTime(LocalDateTime.now());
        userMapper.insert(user);
    }

    @Test
    void testSelectById() {
        User user = userMapper.selectById(5L);
        System.out.println("user = " + user);
    }


    @Test
    void testQueryByIds() {
        List<User> users = userMapper.selectBatchIds(List.of(1L, 2L, 3L, 4L));
        users.forEach(System.out::println);
    }

    @Test
    void testUpdateById() {
        User user = new User();
        user.setId(5L);
        user.setBalance(20000);
        userMapper.updateById(user);
    }

    @Test
    void testDeleteUser() {
        userMapper.deleteById(5L);
    }
}

新增用户功能:userMapper.insert(user);

根据id查询用户:userMapper.selectById(5L);

根据id批量查询用户:userMapper.selectBatchIds(List.of(1L, 2L, 3L, 4L));

根据id更新用户:userMapper.updateById(user);

根据id删除用户:userMapper.deleteById(5L);

解释

mp如何找到数据库中对应的表以及表内字段的?------3个约定

1.类名驼峰转下划线作为表名

例:类名User->表名user;类名UserInfo->表名user_info

2.名为id的字段作为主键

3.变量名驼峰转下划线作为表的字段名

例:类内变量名username->表内字段名username;类内变量名createTime->表内字段名create_time

常用注解

如果实体类和对应的表不满足3个约定,则需要用到注解来进行配置

MybatisPlus中比较常用的几个注解如下:

  • @TableName:用来指定表名
  • @Tableld:用来指定表中的主键字段信息
  • @TableField:用来指定表中的普通字段信息

@TableName

当实体类的类名和表名不满足约定时,在实体类上添加**@TableName("表名")**

@TableId

当实体类中主键对应的变量名不为id时,在该变量名上添加**@TableId(value = "id")**

@TableId还有3种type属性:

IdType枚举:

  • AUTO:数据库自增长
  • INPUT:通过set方法自行输入
  • ASSIGN_ID(默认):分配 ID,接口ldentifierGenerator的方法nextld来生成id,默认实现类为DefaultldentifierGenerator雪花算法

@TableField

使用@TableField的常见场景:

  • 成员变量名与数据库字段名不一致:@TableField("数据库字段名")
  • 成员变量名以is开头,且是布尔值:@TableField("数据库字段名")
  • 成员变量名与数据库关键字冲突(转义):@TableField("` 数据库字段名**`**")
  • 成员变量不是数据库字段:@TableField(exist = false)

常用配置

官网:配置 | MyBatis-Plus

大部分并不需要我们去配置,走默认就行,如果需要配置,可以查看官网或者通过idea的提示进行配置

相关推荐
3GPP仿真实验室2 分钟前
【MATLAB源码】CORDIC-QR :基于Cordic硬件级矩阵QR分解
开发语言·matlab·矩阵
知南x19 分钟前
【Ascend C系列课程(高级)】(1) 算子调试+调优
c语言·开发语言
忆~遂愿22 分钟前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Ro Jace1 小时前
计算机专业基础教材
java·开发语言
代码游侠1 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
mango_mangojuice1 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
程序员侠客行1 小时前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
devmoon1 小时前
运行时(Runtime)是什么?为什么 Polkadot 的 Runtime 可以被“像搭积木一样”定制
开发语言·区块链·智能合约·polkadot·runtmie
时艰.1 小时前
Java 并发编程 — 并发容器 + CPU 缓存 + Disruptor
java·开发语言·缓存
丶小鱼丶1 小时前
并发编程之【优雅地结束线程的执行】
java