MyBatisPlus使用教程
MyBatisPlus顾名思义便是对MyBatis的加强版,但两者本身并不冲突(只做增强不做改变):
引入它并不会对原有工程产生影响,启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作!!
1、使用方式
它的使用方式也很简单:
1.1 引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
注:这里的依赖引入之后就不需要引入mybatis的依赖了
1.2 构建mapper接口
public interface UserMapper extends BaseMapper<User> {
}
注:这里需要让mapper接口继承BaseMapper<>
,且泛型要写上实体类
实体类代码(可自行编写):
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;
}
数据库(可自行搭建):
测试一下:
@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
注解进行指定表名:
@Data
@TableName("tb_user")
public class User {
}
2.2 @TableId
指定Id字段及其相关配置
对于Id字段,它一般用于描述主键,同时它也有一些属性需要添加,如自增长,可以通过@TableId
进行指定:
- IdType.AUTO:数据库自增长
- IdType.INPUT:通过set方法自行输入
- IdType.ASSIGN:分配ID
@TableId(value="id", type = IdType.AUTO)
private Long id;
2.3 @TableField
指定普通字段及其相关配置
@TableField
一般用于以下场景:
- 成员变量与数据库字段名不一致
- 成员变量以is开头,且是布尔值
- 成员变量与数据库关键字冲突,如order
- 成员变量不是数据库字段
@TableField("username")
private String name; // 名字与数据库表中字段不同
@TableField(exist = false)
private String address; // 数据库表中不存在
以上便是MyBatisPlus的基本使用教程了!!对于MyBatisPlus的来说,它更适合于单表操作,如果需要对多表进行复杂操作则需使用MyBatis!!