MyBatis-Plus从入门到实战,Lambda查询+注解配置+SpringBoot整合全解析
目录
- 1 什么是Mybatis-Plus
- 1.1 什么是mybatis-plus
- 1.2 官方愿景
- 1.3 特性
- 1.4 支持数据库
- 1.5 框架结构
- 2 快速入门
- 2.1 创建springboot项目
- 2.1.1 并引入依赖
- 2.1.3 编写配置文件
- 2.2 创建数据库以及表结构
- 2.3 开发实体类
- 2.4 开发mapper通用实现
- 2.5 测试
- 2.1 创建springboot项目
- 3 常用注解说明
- 3.1 @TableName注解
- 3.2 @TableId注解
1 什么是Mybatis-Plus
1.1 什么是mybatis-plus
MyBatis-Plus (opens new window)(简称 MP)是一个MyBatis(opens new window)的增强工具, 在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。- 官方文档链接 [[MyBatis-Plus (baomidou.com)
1.2 官方愿景
1.3 特性
无侵入: 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小: 启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作 强大的CRUD操作: 内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更 有强大的条件构造器,满足各类使用需求 支持Lambda形式调用: 通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成: 支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题 支持ActiveRecord模式: 支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere ) 内置代码生成器: 采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代 码,支持模板引擎,更有超多自定义配置等您来使用 内置分页插件: 基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询 分页插件支持多种数据库: 支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库 内置性能分析插件: 可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询 内置全局拦截插件: 提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作1.4 支持数据库
mysql 、 mariadb 、 oracle 、 db2 、 h2 、 hsql 、 sqlite 、 postgresql 、 sqlserver1.5 框架结构
2 快速入门
2.1 创建springboot项目
2.1.1 并引入依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency>注意: 不需要在引入mybatis的相关依赖,只引入这一个即可,当然数据库相关的驱动还的显式引入2.1.3 编写配置文件
#数据源配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3308/shiro?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=huang #mybatis-plus映射文件配置 mybatis-plus.type-aliases-package=com.huang.entity mybatis-plus.mapper-locations=classpath:mapper/*.xml2.2 创建数据库以及表结构
DROPTABLEIFEXISTS`user`;CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(255)DEFAULTNULL,`age`int(11)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;SETFOREIGN_KEY_CHECKS=1;2.3 开发实体类
@Data//lombok的注解用来生成get set 等相关方法publicclassUser{privateStringid;privateStringname;privateIntegerage;}2.4 开发mapper通用实现
import com.baomidou.mybatisplus.core.mapper.BaseMapper; //提供了各种CRUD方法 public interface UserDAO extends BaseMapper<User> { }2.5 测试
@Autowired private UserDAO userDAO; @Test void contextLoads() { List<User> users = userDAO.selectList(null); System.out.println(users); }3 常用注解说明
3.1 @TableName注解
描述:用来将实体对象与数据库表名完成映射 修饰范围:用在类上 常见属性: value:String类型,指定映射的表名 resultMap:String类型,用来指定XML配置中resultMap的id值 @Data //lombok的注解用来生成get set 等相关方法 @TableName(value = "user") public class User { private String id; private String name; private Integer age; }3.2 @TableId注解
描述: 主键注解 修饰范围: 用在属性上 常见属性: value:String类型,指定实体类中与表中对应的主键列名 type:枚举类型,指定主键生成类型AUTO(0),NONE(1),INPUT(2),ASSIGN_ID(3),ASSIGN_UUID(4),/** @deprecated */@DeprecatedID_WORKER(3),/** @deprecated */@DeprecatedID_WORKER_STR(3),/** @deprecated */@DeprecatedUUID(4);如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力