-
Mybatis-plus:Mybatis增强工具,只做增强,不作改变,简化开发,提高效率。
-
Mybatis-plus特点:
-
无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性
-
依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring
-
损耗小:启动即会自动注入基本CRUD,性能基本无损耗,直接面向对象操作
-
通用CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
-
多种主键策略:支持多达4种主键策略(内含分布式唯一ID生成器),可自由配置,完美解决主键问题
-
支持ActiveRecord:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作
-
支持代码生成:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎
-
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
-
内置分页插件:基于Mybatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于写基本List查询
-
内置性能分析插件:可输出Sql语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询
-
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,预防误操作
-
-
MyBatis-Plus快速入门
- 引入依赖
<!-- Mybatis-Plus启动器 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
- 实体类的编写(要让实体类与数据库表一一对应)
@Data @EqualsAndHashCode(callSuper = false) @TableName("user")//若数据库表名与类名不一致需要指定 public class User { /** * 主键,自增,如果不管则为雪花算法 */ @TableId(value = "id",type = IdType.AUTO) private Long id; /** * 姓名 */ @TableField(value = "name", condition = SqlCondition.LIKE) private String name; /** * 年龄 */ @TableField(condition = "%s<#{%s}") private Integer age; /** * 邮箱 */ private String email; /** * 直属上级id */ private Long managerId; /** * 创建时间 */ private Date createTime; /* * 备注(不与数据库字段对应,表中没有这个字段) # transient 不参与序列化 */ @TableField(exist = false) private String remark; }
- 继承接口
public interface UserMapper extends BaseMapper<User> { }
- mybatis plus相关配置
# mybatis-plus相关配置 mybatis-plus: # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置) mapper-locations: classpath:mapper/*.xml # 以下配置均有默认值,可以不设置 global-config: db-config: #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; id-type: auto #字段策略 IGNORED:"忽略判断" NOT_NULL:"非 NULL 判断") NOT_EMPTY:"非空判断" field-strategy: NOT_EMPTY #数据库类型 db-type: MYSQL configuration: # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射 map-underscore-to-camel-case: true # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段 call-setters-on-nulls: true # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl