MyBatis-Plus
简称
MP
是一个
MyBatis
的增强工具,在
MyBatis
的基础上只做增强不做改变,为简化开发、提高效率而生
官方文档:
https://baomidou.com/
Hello MP
添加依赖
<!-- 如果没有整合SpringBoot,则需要引入这个依赖,通过注解进行开发,并手工添加所需要的配置
-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.5.3.1</version>
</dependency>
使用
MP
可以有对应的映射文件,也可以没有映射文件
- 如果需要对sql语句进行优化,则可以添加映射元文件;如果没有需要sql语句优化,则省略 mapper.xml文件
- 在 MyBatis 的基础上只做增强不做改变。过去MyBatis的用法在MP中仍旧有效
- 具体执行的sql语句可以由MP生成
定义实体类
- @TableName添加在实体类上,用于标识实体类所对应的表名注解,标识实体类对应的表
- @TableId是主键注解,用于在属性上标识对应的注解
- value用于指定对应的主键字段名,如果不指定,则和属性名称一致
- type是IdType枚举类型,用于指定主键生成策略
- AUTO数据库ID自增
- NONE意思是无状态,该类型为未设置主键类型。注解里等于跟随全局,全局里约等于
- INPUT
- INPUT是在执行insert操作之前自行 set 主键值
- ASSIGN_ID采用雪花算法生成主键值,应该是string类型
- ASSIGN_UUID采用UUID生成字符串值充当主键
- 不建议使用的三种算法:ID_WORKER分布式全局唯一 ID 长整型类型、UUID是32位UUID字 符串、ID_WORKER_STR是分布式全局唯一 ID 字符串类型
- @TableField属性上的针对字段的注解,用于非主键类型的属性
- value用于定义当前属性对应的数据库字段名
- exist标识该属性是否为数据库表字段,因为如果不加配置则默认属性都是有同名的对应字段
- jdbcType用于声明对应的JDBC 类型,该默认值不代表会按照该值生效
- numericScale用于指定小数点后保留的位数
@Data
@TableName("tb_users")
public class User implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
private String username;
private String password;
@TableField(exist = false)
private String repassword;
private String email;
}
添加
mapper
接口,注意使用
MP
时
mapper.xml
可有可无
- MP提供了一个父接口BaseMapper,其中包含了常见的CRUD的方法
public interface UserMapper extends BaseMapper<User> {
}
使用自动扫描进行mapper接口的注册,在主类上添加自动扫描注解即可
@MapperScan("com.yan.dao")
@SpringBootApplication
public class DemoApplication
MP
针对业务层提供了
IService
接口,和对应的实现类
ServiceImpl
,在具体开发中可以通过继承
IService接口来定义业务接口
public interface IUserServ extends IService<User> {
}
定义业务实现类
@Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
@Service
public class UserServImpl extends ServiceImpl<UserMapper, User> implements
IUserServ {
}
在控制台上打印输入所执行的
sql
语句
mybatis-plus.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl