Mybatis-plus(简称MP),基于Mybatis的增强工具,保留了Mybatis的所有功能,同时增加了通用的CRUD,条件构造器,分页插件等等实用工具
特性
- 即拿即用:通过通用Mapper和Service,无需编写XML既可以完成单表CURE操作
- Lambda支持:使用Lambda表达式构建查询条件,避免硬编码字段名,提升代码安全性
- 更多的主键策略:支持多种主键生成方式,如雪花算法,自增等等
- 分页插件:内置分页插件,支持多种数据库,简化分页查询操作
与Mybatis相比
- 提供大量自动化功能,如通用的CRUD,条件构造器,分页支持极大减少操作代码,提高开发效率
- Mybatis需手动编写SQL,编写XML文件和映射接口DAO
快速入门
日志配置
- mybatis-plus:
- # mapper配置文件
- mapper-locations: classpath:mapper/*.xml
- # resultType别名,没有这个配置resultType包名要写全,配置后只要写类名
- type-aliases-package: com.mashang.springboot04.domain
- //
- configuration:
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
复制代码 添加依赖与配置application.yml
- 本人使用SpringBoot 2.7.18,JDK1.8:导入的依赖如下
- <dependency>
- <groupId>com.baomidou</groupId>
- mybatis-plus-boot-starter</artifactId>
- <version>3.5.3.2</version>
- </dependency>
复制代码- # 也是springboot的配置文件,两个都可以用
- server:
- port: 8080
- servlet:
- #配置根路径
- context-path: /
- # 配置数据源
- spring:
- datasource:
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/xiaomi_store?userSSL=false;serverTimezone=Asia/Shanghai
- username: root
- password: root
- mybatis-plus:
- # mapper配置文件
- mapper-locations: classpath:mapper/*.xml
- # resultType别名,没有这个配置resultType包名要写全,配置后只要写类名
- type-aliases-package: com.mashang.springboot03.domain
复制代码 定义实体类与Mapper接口
实体类
- 在实体类上使用Mybatis-plus的注解
- @TableName()→指定数据库查询的表,不添加默认将类名改为下划线型数据库名
- @TableId(name,type)→用于给主键标记,name为数据库对应名,用于指定自增算法
- 雪花算法(Snowflake)是由Twitter开源的一种分布式ID生成算法.其核心思想是将64位的long型ID分为四个部分,分别为:符号位,时间戳,工作机器ID,序列号
- @Data
- @TableName("user") // 指定数据库表名
- public class User {
- @TableId(type = IdType.AUTO) // 主键自增
- private Long id;
- private String name;
- private Integer age;
- }
复制代码 Mapper接口
- Mapper接口需继承BaseMapper类,则此接口即可获得所有基本的CRUD方法
- public interface UserMapper extends BaseMapper<User> {
- // 如果需要扩展自定义方法,也可以在此添加
- }
复制代码 Service层与Service实现层
MP也提供了IService接口和ServiceImpl类方便在Service层使用封装好的CRUD方法
Service层
- public interface UserService extends IService<User> {
- // 可以在此定义更多业务方法
- }
复制代码 ServiceImpl层
- 继承 ServiceImpl 和实现 IService 接口,可以直接调用封装好的 CRUD 方法
- @Service
- public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
- // 继承了 ServiceImpl 后,已拥有 BaseMapper 中所有的 CRUD 方法
- }
复制代码 BaseMapper接口中常用的CRUD方法
- 即Mapper层中的常见方法,已经集成好了,直接操作数据库的原子性方法
插入操作
- // 插入一条记录
- int insert(T entity);
复制代码 查询操作
[code]// 根据 ID 查询T selectById(Serializable id);// 根据 entity 条件,查询一条记录T selectOne(@Param(Constants.WRAPPER) Wrapper queryWrapper);// 查询(根据ID 批量查询)List selectBatchIds(@Param(Constants.COLLECTION) Collection |