MyBatis Plus 3.x 基础配置与使用指南
发布时间: 2023-12-20 06:32:03 阅读量: 111 订阅数: 21
mybatis-plus.zip
# 第一章:MyBatis Plus 3.x 简介
## 1.1 MyBatis Plus 3.x 简介
MyBatis Plus 3.x 是一个用于简化 MyBatis 操作的增强工具库,它在原生 MyBatis 的基础上进行了扩展,提供了更为便捷和强大的功能。
## 1.2 为什么选择 MyBatis Plus 3.x
MyBatis Plus 3.x 提供了许多便捷的功能,包括但不限于:
- 简化 CRUD 操作
- 提供方便的查询构造器
- 支持多种高级查询功能
- 提供代码生成器,减少手写代码量
- 集成了许多优秀的第三方扩展模块
## 1.3 MyBatis Plus 3.x 与原生 MyBatis 的区别
相较于原生 MyBatis,MyBatis Plus 3.x 提供了更为简洁和便捷的操作方式,使得开发者能够更快速地进行数据访问层的开发。同时,MyBatis Plus 3.x 还提供了许多实用的功能和扩展,为开发者提供了更多选择和灵活性。
## 第二章:MyBatis Plus 3.x 安装与配置
MyBatis Plus 3.x 是一个优秀的持久层框架,它在 MyBatis 的基础上进行了扩展,在简化了开发的同时也提供了更强大的功能。在本章中,我们将介绍如何安装和配置 MyBatis Plus 3.x,并将其集成到项目中。
### 2.1 安装 MyBatis Plus 3.x
在项目中使用 MyBatis Plus 3.x 首先需要将其添加到项目的依赖中。如果你使用 Maven 进行项目管理,可以在 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
```
如果你使用 Gradle 进行项目管理,可以在 build.gradle 文件中添加以下依赖:
```java
implementation 'com.baomidou:mybatis-plus-boot-starter:3.4.0'
```
### 2.2 配置 MyBatis Plus 3.x
在使用 MyBatis Plus 3.x 之前,需要进行一些基本的配置。首先,在 application.properties 或 application.yml 文件中配置数据源信息:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatis_plus_demo
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
```
然后,创建一个配置类,配置 MyBatis Plus 3.x 的分页插件和逻辑删除插件:
```java
@Configuration
@MapperScan("com.example.demo.mapper")
public class MyBatisPlusConfig {
@Bean
public PaginationInnerInterceptor paginationInnerInterceptor() {
return new PaginationInnerInterceptor();
}
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
}
```
### 2.3 集成 MyBatis Plus 3.x 到项目中
最后,我们需要将 MyBatis Plus 3.x 集成到项目中。在 Spring Boot 主程序上添加 `@MapperScan` 注解,指定 Mapper 接口所在的包:
```java
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
### 第三章:MyBatis Plus 3.x 基础使用
MyBatis Plus 3.x 提供了许多方便快捷的方法来进行基础的数据库操作,接下来我们将介绍一些基础使用的内容。
#### 3.1 基本 CRUD 操作
MyBatis Plus 3.x 提供了一些简单易用的方法来进行 CRUD 操作,下面是一些常见的示例:
```java
// 插入数据
User user = new User();
user.setName("John");
user.setAge(25);
user.setEmail("john@example.com");
userMapper.insert(user);
// 根据ID查询
User queryUser = userMapper.selectById(1);
// 更新数据
queryUser.setName("Mike");
userMapper.updateById(queryUser);
// 删除数据
userMapper.deleteById(1);
```
上面代码中 `User` 是一个实体类,`userMapper` 是 MyBatis Plus 3.x 自动生成的 Mapper 接口。
#### 3.2 实体类与数据库表的映射
在 MyBatis Plus 3.x 中,实体类与数据库表的映射是通过注解来实现的,例如:
```java
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
// 省略 getter 和 setter 方法
}
```
上面的代码中,`@TableName` 注解用来指定该实体类对应的数据库表,`@TableId` 注解用来指定表的主键,这些注解可以大大简化实体类的编写和维护工作。
#### 3.3 查询构造器的使用
MyBatis Plus 3.x 提供了灵活的查询构造器,可以方便地构建复杂的查询条件,例如:
```java
// 简单查询
List<User> userList = userMapper.selectList(null);
// 条件查询
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 20).like("name", "J");
List<User> userList = userMapper.selectList(queryWrapper);
```
在以上示例中,`QueryWrapper` 是条件构造器的类,可以通过它来灵活构建查询条件,大大简化了查询操作的编写。
### 第四章:MyBatis Plus 3.x 高级功能
在本章中,我们将介绍 MyBatis Plus 3.x 的高级功能,包括分页查询、条件构造器的使用以及自定义 SQL 的操作。
#### 4.1 分页查询
在实际开发中,经常会遇到需要对数据库进行分页查询的情况。MyBatis Plus 3.x 提供了方便的分页查询功能,可以轻松地实现分页查询操作。
```java
// 示例代码 - Java
// 创建分页查询条件
Page<User> page = new Page<>(1, 10); // 第一页,每页显示10条记录
// 执行分页查询
IPage<User> userPage = userMapper.selectPage(page, null);
// 获取分页查询结果
List<User> userList = userPage.getRecords();
```
上述代码中,我们首先创建了一个分页查询的条件 Page,然后使用 selectPage 方法执行分页查询,最后通过 getRecords 方法获取查询结果。
#### 4.2 条件构造器的使用
在实际开发中,经常会根据不同的条件动态构造 SQL 查询语句。MyBatis Plus 3.x 提供了方便的条件构造器功能,可以灵活地构造各种复杂的查询条件。
```java
// 示例代码 - Java
// 创建条件构造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 添加查询条件
queryWrapper.eq("age", 25)
.like("name", "Jack")
.between("create_time", "2022-01-01", "2022-12-31");
// 执行条件查询
List<User> userList = userMapper.selectList(queryWrapper);
```
上述代码中,我们使用 QueryWrapper 类创建了一个条件构造器,然后通过 eq、like、between 等方法添加不同的查询条件,最后使用 selectList 方法执行条件查询。
#### 4.3 自定义 SQL
除了使用 MyBatis Plus 3.x 提供的方法外,我们还可以自定义 SQL 查询语句来实现更加灵活和复杂的操作。
```java
// 示例代码 - Java
@Select("SELECT * FROM user WHERE age > #{age} AND create_time > #{createTime}")
List<User> customQuery(@Param("age") Integer age, @Param("createTime") String createTime);
```
上述代码中,我们使用 @Select 注解自定义了一条 SQL 查询语句,其中可以传入参数,并通过 #{} 形式引用参数,实现自定义查询操作。
## 第五章:MyBatis Plus 3.x 代码生成器
在本章中,我们将介绍如何使用 MyBatis Plus 3.x 代码生成器,并讨论代码生成器的作用以及配置与使用注意事项。
### 5.1 代码生成器的作用
MyBatis Plus 3.x 代码生成器可以帮助快速生成包括实体类、Mapper 接口、Service 类以及Controller 类等各个层次的代码。通过代码生成器,可以大大减少手动编写重复代码的工作量,提高开发效率。
### 5.2 使用 MyBatis Plus 3.x 代码生成器
#### 步骤一:引入相关依赖
首先,确保在项目的 `pom.xml` 文件中引入 MyBatis Plus 3.x 代码生成器的依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
```
#### 步骤二:编写代码生成器配置类
```java
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class CodeGenerator {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_demo?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
mpg.setDataSource(dsc);
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
gc.setAuthor("Your Name");
gc.setOpen(false);
mpg.setGlobalConfig(gc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.mybatisplusdemo");
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setInclude("your_table_name");
strategy.setControllerMappingHyphenStyle(true);
mpg.setStrategy(strategy);
// 执行生成
mpg.execute();
}
}
```
### 5.3 代码生成器配置与使用注意事项
- 在使用代码生成器前,务必确保数据库连接信息的准确性,并清楚指定要生成代码的数据表名称。
- 代码生成器生成的代码可以通过自定义模板进行定制,以满足个性化需求。
- 生成的代码可以进一步进行修改和优化,特别是在涉及业务逻辑的部分。
通过以上步骤,即可轻松使用 MyBatis Plus 3.x 代码生成器快速生成相关代码,提高开发效率。
### 6. 第六章:MyBatis Plus 3.x 整合其他框架
MyBatis Plus 3.x 在实际项目中常常需要与其他框架进行整合,本章将介绍如何将 MyBatis Plus 3.x 整合到常见的框架中。
#### 6.1 整合 Spring Boot
在 Spring Boot 项目中使用 MyBatis Plus 3.x,首先需要引入相关依赖,并在配置文件中进行必要的配置。
1. 首先,在 pom.xml 文件中引入 MyBatis Plus 3.x 以及数据库驱动的相关依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
```
2. 在 application.properties 或 application.yml 中配置数据源和 MyBatis Plus 3.x 的相关属性:
```yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&serverTimezone=UTC
username: root
password: root
mybatis-plus:
mapper-locations: classpath*:/mapper/**Mapper.xml
```
3. 创建实体类、Mapper 接口以及 Service 类,在 Service 类中注入并使用 MyBatis Plus 3.x 的通用 CRUD 方法。
通过以上步骤,就可以将 MyBatis Plus 3.x 整合到 Spring Boot 项目中。
#### 6.2 整合 Spring MVC
在 Spring MVC 项目中使用 MyBatis Plus 3.x,同样需要引入相关依赖,并在配置文件中进行必要的配置。
1. 首先,在 pom.xml 文件中引入 MyBatis Plus 3.x 以及数据库驱动的相关依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
```
2. 在 Spring MVC 的配置文件中配置数据源、MyBatis Plus 3.x 的 SqlSessionFactoryBean 以及 Mapper 扫描器:
```java
@Configuration
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactory.setMapperLocations(resolver.getResources("classpath*:/mapper/**Mapper.xml"));
return sqlSessionFactory.getObject();
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
scannerConfigurer.setBasePackage("com.example.mapper");
return scannerConfigurer;
}
}
```
3. 创建实体类、Mapper 接口以及 Service 类,在 Service 类中注入并使用 MyBatis Plus 3.x 的通用 CRUD 方法。
通过以上步骤,就可以将 MyBatis Plus 3.x 整合到 Spring MVC 项目中。
#### 6.3 整合其他相关框架
MyBatis Plus 3.x 也可以与其他框架进行整合,比如 Spring Cloud、Quarkus 等,方法类似于整合到 Spring Boot 中的步骤。根据不同框架的特点,可能会有一些具体的配置差异,但整体上步骤是相似的。
0
0