找回密码
 立即注册
首页 业界区 业界 Mybatis-Plus知识点详解

Mybatis-Plus知识点详解

葛雅隽 2025-6-2 00:31:50
Mybatis-plus(简称MP),基于Mybatis的增强工具,保留了Mybatis的所有功能,同时增加了通用的CRUD,条件构造器,分页插件等等实用工具
特性


  • 即拿即用:通过通用Mapper和Service,无需编写XML既可以完成单表CURE操作
  • Lambda支持:使用Lambda表达式构建查询条件,避免硬编码字段名,提升代码安全性
  • 更多的主键策略:支持多种主键生成方式,如雪花算法,自增等等
  • 分页插件:内置分页插件,支持多种数据库,简化分页查询操作
与Mybatis相比


  • 提供大量自动化功能,如通用的CRUD,条件构造器,分页支持极大减少操作代码,提高开发效率
  • Mybatis需手动编写SQL,编写XML文件和映射接口DAO
快速入门

日志配置


  • 日志输出到标准输出流中
  1. mybatis-plus:
  2.   # mapper配置文件
  3.   mapper-locations: classpath:mapper/*.xml
  4.   # resultType别名,没有这个配置resultType包名要写全,配置后只要写类名
  5.   type-aliases-package: com.mashang.springboot04.domain
  6.   //
  7.   configuration:
  8.     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
复制代码
添加依赖与配置application.yml


  • 本人使用SpringBoot 2.7.18,JDK1.8:导入的依赖如下
  1.         <dependency>
  2.             <groupId>com.baomidou</groupId>
  3.             mybatis-plus-boot-starter</artifactId>
  4.             <version>3.5.3.2</version>
  5.         </dependency>
复制代码

  • application.yml如下:
  1. # 也是springboot的配置文件,两个都可以用
  2. server:
  3.   port: 8080
  4.   servlet:
  5.     #配置根路径
  6.     context-path: /
  7. # 配置数据源
  8. spring:
  9.   datasource:
  10.     driver-class-name: com.mysql.cj.jdbc.Driver
  11.     url: jdbc:mysql://localhost:3306/xiaomi_store?userSSL=false;serverTimezone=Asia/Shanghai
  12.     username: root
  13.     password: root
  14. mybatis-plus:
  15.   # mapper配置文件
  16.   mapper-locations: classpath:mapper/*.xml
  17.   # resultType别名,没有这个配置resultType包名要写全,配置后只要写类名
  18.   type-aliases-package: com.mashang.springboot03.domain
复制代码
定义实体类与Mapper接口

实体类


  • 在实体类上使用Mybatis-plus的注解
  • @TableName()→指定数据库查询的表,不添加默认将类名改为下划线型数据库名
  • @TableId(name,type)→用于给主键标记,name为数据库对应名,用于指定自增算法

    • 雪花算法(Snowflake)是由Twitter开源的一种分布式ID生成算法.其核心思想是将64位的long型ID分为四个部分,分别为:符号位,时间戳,工作机器ID,序列号

  1. @Data
  2. @TableName("user")  // 指定数据库表名
  3. public class User {
  4.     @TableId(type = IdType.AUTO)  // 主键自增
  5.     private Long id;
  6.     private String name;
  7.     private Integer age;
  8. }
复制代码
Mapper接口


  • Mapper接口需继承BaseMapper类,则此接口即可获得所有基本的CRUD方法
  1. public interface UserMapper extends BaseMapper<User> {
  2.     // 如果需要扩展自定义方法,也可以在此添加
  3. }
复制代码
Service层与Service实现层

MP也提供了IService接口和ServiceImpl类方便在Service层使用封装好的CRUD方法
Service层


  • extends(继承)IService接口
  1. public interface UserService extends IService<User> {
  2.     // 可以在此定义更多业务方法
  3. }
复制代码
ServiceImpl层


  • 继承 ServiceImpl 和实现 IService 接口,可以直接调用封装好的 CRUD 方法
  1. @Service
  2. public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  3.     // 继承了 ServiceImpl 后,已拥有 BaseMapper 中所有的 CRUD 方法
  4. }
复制代码
BaseMapper接口中常用的CRUD方法


  • 即Mapper层中的常见方法,已经集成好了,直接操作数据库的原子性方法
插入操作
  1. // 插入一条记录
  2. 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

相关推荐

您需要登录后才可以回帖 登录 | 立即注册