MyBatis-Plus简介和快速入门教程
简介
MyBatis-Plus是基于MyBatis的增强工具,提供了常用的增删改查、分页、乐观锁、逻辑删除等功能,简化了开发人员的工作,提高了开发效率。同时 MyBatis-Plus 也支持 Lambda 表达式查询、自动代码生成等高级功能。
MyBatis-Plus 的主要特点如下:
- 支持自动生成代码;
- 内置通用的增删改查功能;
- 自带分页插件;
- 支持 Lambda 表达式查询;
- 自带性能分析插件,可输出 SQL 语句以及所需时间。
快速入门教程
1. 引入依赖
在 pom.xml 中加入以下依赖:
<!-- MyBatis-Plus 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.x.x</version>
</dependency>
<!-- MySQL 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- MyBatis-Plus 分页插件依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.x.x</version>
</dependency>
其中,版本号请自行替换为最新版本。
2. 配置数据源
在 application.yml
中配置数据源:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
3. 创建实体类
创建一个实体类,例如 User
:
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("t_user")
public class User {
@TableId(type = IdType.AUTO)
private Integer id;
private String name;
private Integer age;
private String email;
}
@TableName
表示 MySQL 中的表名,@TableId
表示主键自增。
4. 创建 Mapper 接口
创建 UserMapper
接口:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
BaseMapper
是 MyBatis-Plus 内置的通用 Mapper,无需编写 XML。
5. 使用 MyBatis-Plus 进行 CRUD
创建测试类 TestMyBatisPlus
:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
@Slf4j
public class TestMyBatisPlus {
@Autowired
private UserMapper userMapper;
@org.junit.jupiter.api.Test
public void testInsert() {
User user = new User();
user.setName("张三");
user.setAge(18);
user.setEmail("zhangsan@example.com");
userMapper.insert(user);
}
@org.junit.jupiter.api.Test
public void testSelect() {
User user = userMapper.selectById(1);
log.info("user: {}", user);
}
@org.junit.jupiter.api.Test
public void testUpdate() {
User user = new User();
user.setId(1);
user.setName("李四");
user.setAge(20);
user.setEmail("lisi@example.com");
userMapper.updateById(user);
}
@org.junit.jupiter.api.Test
public void testDelete() {
userMapper.deleteById(1);
}
@org.junit.jupiter.api.Test
public void testSelectPage() {
Page<User> page = new Page<>(1, 10);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().gt(User::getAge, 18);
page = userMapper.selectPage(page, wrapper);
page.getRecords().forEach(user -> log.info("user: {}", user));
}
}
上述代码的作用是:插入一条记录,根据 ID 查询一条记录,更新一条记录,删除一条记录,分页查询记录。
6. 运行测试
运行 TestMyBatisPlus
即可进行测试。
示例
示例1:使用 Lambda 表达式查询
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().gt(User::getAge, 18);
List<User> userList = userMapper.selectList(wrapper);
该示例的作用是:查询年龄大于 18 岁的所有用户。
示例2:自动生成代码
在 pom.xml 中添加以下依赖:
<!-- MyBatis-Plus 自动生成代码依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.x.x</version>
</dependency>
在 application.yml
中添加以下配置:
mybatis-plus:
generator:
# 代码生成器的配置
global-config:
output-dir: src/main/java
file-override: true
author: MyBatis-Plus
# 数据源的配置
datasource:
url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
# 策略配置
strategy:
naming: underline_to_camel
column-naming: underline_to_camel
entity-lombok-model: true
controller-restful: true
super-entity-class: com.example.demo.entity.BaseEntity
# 公共父类
super-controller-class: com.example.demo.controller.BaseController
# 公共父类
include: t_user
# 要生成的表
# 包名配置
package-info:
parent: com.example.demo
moduleName: module
# 模板配置
template:
entity: templates/entity.java
controller: templates/controller.java
service: templates/service.java
serviceImpl: templates/serviceImpl.java
mapper: templates/mapper.java
xml: templates/xml.java.vm
然后在 src/main/resources 下创建目录 templates,并添加以下模板文件:
- templates/entity.java
- templates/controller.java
- templates/service.java
- templates/serviceImpl.java
- templates/mapper.java
- templates/xml.java.vm
最后,使用以下代码生成器类生成代码:
import com.baomidou.mybatisplus.generator.AutoGenerator;
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.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class CodeGenerator {
public static void main(String[] args){
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(new GlobalConfig()
.setAuthor("MyBatis-Plus")
.setOutputDir("src/main/java")
.setFileOverride(true));
autoGenerator.setPackageInfo(new PackageConfig()
.setModuleName("module")
.setParent("com.example.demo"));
autoGenerator.setStrategy(new StrategyConfig()
.setCapitalMode(true)
.setNaming(NamingStrategy.underline_to_camel)
.setColumnNaming(NamingStrategy.underline_to_camel)
.setEntityLombokModel(true)
.setRestControllerStyle(true)
.setSuperEntityClass("com.example.demo.entity.BaseEntity")
.setSuperControllerClass("com.example.demo.controller.BaseController")
.setInclude("t_user")
.setTablePrefix("t_"));
autoGenerator.setTemplate(new TemplateConfig()
.setEntity("templates/entity.java")
.setController("templates/controller.java")
.setService("templates/service.java")
.setServiceImpl("templates/serviceImpl.java")
.setMapper("templates/mapper.java")
.setXml(null));
autoGenerator.execute();
}
}
该示例的作用是:自动生成实体类、Mapper 接口、业务接口、业务实现类和控制器类,无需手动编写。
以上就是 MyBatis-Plus 的简介和快速入门教程,希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis-Plus简介和快速入门教程 - Python技术站