【MybatisPlus】快速入门

配置

在application.yaml中修改jdbc参数:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mp
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root

引入依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

使用

MybatisPlus提供了一个BaseMapper接口,其中已经实现了单表的CRUD:

在这里插入图片描述

我们自定义的Mapper只要实现了这个BaseMapper,就无需自己实现单表CRUD了。

泛型中的 User 就是与数据库对应的 Java 类(PO)。

MybatisPlus根据PO实体的信息来推断出表的信息,从而生成SQL的。默认情况下:

  • MybatisPlus会把PO实体的类名驼峰转下划线作为表名
  • MybatisPlus会把PO实体的所有变量名驼峰转下划线作为表的字段名,并根据变量类型推断字段类型
  • MybatisPlus会把名为id的字段作为主键
public interface UserMapper extends BaseMapper<User> {
}

编写测试类:

这里可以结合 MybatisX 插件提高开发效率

如果使用了 Junit ,可以直接在 service 类名上 alt+ enter,可以看到一个 create test,然后根据自己所选的配置就可以生成 对应的测试类了。
这里要注意:我们要将测试类的包名和上面的包名保持一致。

然后在为 下面的 user 设置值时,可以用一个插件 generateAllSetter,快速生成 setter。之后在 user 按 alt + enter,就可以看到一个 generate all setter with default value ,选择就可快速创建 setter。

@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 testSelectByIds() {
        List<User> users = userMapper.selectBatchIds(List.of(1L, 2L, 3L, 4L, 5L));
        users.forEach(System.out::println);
    }

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

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

上面说到 MybatisPlus 会自动把PO实体的类名驼峰转下划线作为表名。但是如果我们在数据库字段本身就使用了驼峰命名,那么就需要关闭自动转换配置。

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false

在这里插入图片描述
常用注解:

以下是Mybatisx自动生成的model。包含常用注解:@TableName,@TableId, @TableField。

/**
 * 用户表
 * @TableName user
 */
@TableName(value ="user")
@Data
public class User implements Serializable {
    /**
     * 
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户昵称
     */
    private String username;

    /**
     * 账号
     */
    private String userAccount;

    /**
     * 用户头像
     */
    private String avatarUrl;

    /**
     * 性别
     */
    private Integer gender;

    /**
     * 密码
     */
    private String userPassword;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 状态 0-正常
     */
    private Integer userStatus;

    /**
     * 电话
     */
    private String phone;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 是否删除
     */
    @TableLogic
    private Integer isDelete;

    /**
     * 用户角色 0 - 普通用户 1 - 管理员
     */
    private Integer userRole;

    /**
     * 用户编号
     */
    private String userCode;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}

@Tablename:

  • 描述:表名注解,标识实体类对应的表
  • 使用位置:实体类

TableName注解除了指定表名以外,还可以指定很多其它属性:

在这里插入图片描述

@TableId:

  • 描述:主键注解,标识实体类中的主键字段
  • 使用位置:实体类的主键字段

TableId注解支持两个属性:

在这里插入图片描述

IdType支持的类型有:

在这里插入图片描述

@TableField:

描述:普通字段注解

一般情况下我们并不需要给字段添加@TableField注解,一些特殊情况除外:

  • 成员变量名与数据库字段名不一致
  • 成员变量是以isXXX命名,按照JavaBean的规范,MybatisPlus识别字段时会把is去除,这就导致与数据库不符。
  • 成员变量名与数据库一致,但是与数据库的关键字冲突。使用@TableField注解给字段名添加转义字符:``

支持的其它属性如下:

在这里插入图片描述

其他相关配置:MybatisPlus配置

比如逻辑删除:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秀秀_heo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值