ORM介绍
- ORM(Object Relational Mapping, 对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术
- ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到数据库中
- ORM框架的本质是简化编程中操作数据库的编码
MyBatis-Plus介绍
- MyBatis是一款优秀的数据持久层ORM框架,被广泛地应用于应用系统
- MyBatis能够非常轻松灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的
POJO
(Plain Ordinary Java Object, 普通Java对象)与数据库中的表和字段进行映射关联 - MyBatis-Plus是一个MyBatis增强工具,在MyBatis的基础上做了增强,简化了开发
添加依赖
<!-- MyBatisPlus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
<depedency>
<!-- mysql驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<depedency>
<!-- 数据连接池 druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
<depedency>
全局配置
- 配置数据库相关信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false spring.datasource.username=root spring.datasource.password=root mybatis-plus.configuratuin.log-impl=org.apache.ibatis.logging.stdout.stdOutImpl
- 添加
@MapperScan
注解@SpringBootApplication @MapperScan("com.xx.mapper") public class MybatisplusDemoApplication{ public static void main(String[] args){ SpringApplication.run(MybatisplusDemoApplication.class, args); } }
多表查询
- 实现复杂关系映射,可以使用@Results注解、@Result注解、@One注解、@Many注解组合完成复杂关系的配置
注解 | 说明 |
---|---|
@Results | 代替<resultMap> 标签,该注解可以加入单个或多个@Result注解 |
@Result | 代替<id> 标签和<Result> 标签,@Result中可以使用以下属性:- column:数据表的字段名称 - property:类中对应的属性名 - one:与@One注解配合,进行一对一的映射 - many:与@Many注解配合,进行一对多的映射 |
@One | 代替<assocation> 标签,用于指定查询中返回的单一对象通过select属性指定用于多表查询的方法 使用格式:@Result(column=“”,property=“”,one=@One(select=“”)) |
@Many | 代替<collection> 标签,用于指定查询中返回的集合对象使用格式:@Result(column=“”,property=“”,many=@Many(select=“”)) |
分页查询
- 编写配置文件
@Configuration public class MyBatisPlusConfig{ @Bean public MybatisPlusInterceptor paginationInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); interceptor.addInnerInterceptor(paginationInterceptor); return interceptor; } }