MybatisPlus 使用教程

MyBatisPlus使用教程

文章目录

MyBatisPlus顾名思义便是对MyBatis的加强版,但两者本身并不冲突(只做增强不做改变):

引入它并不会对原有工程产生影响 ,启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作!!

1、使用方式

它的使用方式也很简单:

1.1 引入依赖

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

注:这里的依赖引入之后就不需要引入mybatis的依赖了

1.2 构建mapper接口

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

注:这里需要让mapper接口继承BaseMapper<>,且泛型要写上实体类

实体类代码(可自行编写):

java 复制代码
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.itheima.mp.enums.UserStatus;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public class User {

    /**
     * 用户id
     */
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 注册手机号
     */
    private String phone;

    /**
     * 详细信息
     */
    private UserInfo info;

    /**
     * 使用状态(1正常 2冻结)
     */
    private UserStatus status;

    /**
     * 账户余额
     */
    private Integer balance;

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

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}

数据库(可自行搭建):

测试一下:

java 复制代码
@SpringBootTest
class UserMapperTest {

    @Autowired
    private UserMapper userMapper;
	
     @Test
    void testInsert() {
        User user = new User();
        user.setId(5L); // 可见这里在未配置注解或xml的情况下也可直接调用方法
        user.setUsername("XiaoMi"); 
        user.setPassword("123");
        user.setPhone("10086");
        user.setBalance(200);
        user.setInfo(UserInfo.of(24, "英文老师", "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);
    }

}

按上述步骤来即可执行成功!!相较于mybatis需要编写注解或xml,mybatisplus在接口继承之后就能够直接调用相关的方法来进行CURD,节省了许多重复工作,这对于快速开发来说很有帮助!!

2、常用注解

MyBatisPlus 是通过扫描实体类(即BaseMaper<>泛型),并基于反射获取实体类信息来作为数据库信息,如果直接使用该实体类的话有几个前提条件:

  • 默认以类名驼峰转下划线作为表名
  • 默认把名为id的字段作为主键
  • 默认把变量名按驼峰方式转下划线作为表的字段名

若上述条件有差异,则需要通过注解的方式来调整:

2.1 @TableName

用于指定表名称及全局配置

类名与表名不一致 (驼峰转换后不一致)会报错,需要通过@TableName注解进行指定表名:

java 复制代码
@Data
@TableName("tb_user")
public class User {
}

2.2 @TableId

指定Id字段及其相关配置

对于Id字段,它一般用于描述主键,同时它也有一些属性需要添加,如自增长,可以通过@TableId进行指定:

  • IdType.AUTO:数据库自增长
  • IdType.INPUT:通过set方法自行输入
  • IdType.ASSIGN:分配ID
java 复制代码
@TableId(value="id", type = IdType.AUTO)
private Long id;

2.3 @TableField

指定普通字段及其相关配置

@TableField一般用于以下场景:

  • 成员变量与数据库字段名不一致
  • 成员变量以is开头,且是布尔值
  • 成员变量与数据库关键字冲突,如order
  • 成员变量不是数据库字段
java 复制代码
@TableField("username")
private String name; // 名字与数据库表中字段不同

@TableField(exist = false)
private String address; // 数据库表中不存在

以上便是MyBatisPlus的基本使用教程了!!对于MyBatisPlus的来说,它更适合于单表操作,如果需要对多表进行复杂操作则需使用MyBatis!!

相关推荐
九皇叔叔4 天前
【06】SpringBoot3 MybatisPlus 修改(Mapper)
java·spring boot·mybatis·mybatisplus
九皇叔叔7 天前
【02】SpringBoot3 MybatisPlus 加入日志功能
java·mysql·mybatis·日志·mybatisplus
子非鱼92112 天前
MyBatisPlus快速上手
数据库·spring boot·mybatisplus
DCTANT18 天前
【原创】使用更优雅的方式改造MyBatisPlus逻辑删除插件
spring boot·后端·mysql·kotlin·mybatis·mybatisplus
回忆是昨天里的海1 个月前
Spring boot接入视图时的问题
mysql·mybatisplus·视图
咘噜biu1 个月前
多租户动态数据源插件dynamic-datasource简介
java·mybatisplus·动态数据源·多租户
阿拉斯攀登2 个月前
MyBatis-Plus 全面介绍 & Spring Boot 集成实战
java·spring boot·mybatisplus·mp
LSL666_2 个月前
mybatisplus入门案例
数据库·mysql·mybatisplus
fanruitian2 个月前
springboot-mybatisplus-demo
spring boot·后端·mybatis·mybatisplus
草原印象2 个月前
Spring Boot Spring MVC MyBatis MyBatis Plus框架编写项目实战案例
spring boot·spring·mybatis·springmvc·mybatisplus