您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何进行Spring Boot + Mybatis-Plus的集成与使用
## 一、前言
在现代Java企业级开发中,Spring Boot以其"约定优于配置"的理念极大简化了项目搭建流程,而Mybatis-Plus作为MyBatis的增强工具,在保留原生功能的基础上提供了更多开箱即用的高效功能。本文将详细介绍如何将两者集成并应用于实际开发。
## 二、环境准备
### 1. 基础环境要求
- JDK 1.8+
- Maven 3.3+ 或 Gradle 6.x
- Spring Boot 2.5.x+
- Mybatis-Plus 3.4.x+
### 2. 创建Spring Boot项目
推荐使用官方初始化工具:
```bash
curl https://start.spring.io/starter.zip -d dependencies=web,mybatis -o demo.zip
或通过IDE(如IntelliJ IDEA)的Spring Initializr创建。
在pom.xml
中添加核心依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
<scope>compile</scope>
</dependency>
application.yml
示例配置:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mp_demo?useSSL=false&serverTimezone=UTC
username: root
password: 123456
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志
global-config:
db-config:
id-type: auto # 主键策略
logic-delete-field: deleted # 逻辑删除字段
logic-delete-value: 1 # 删除值
logic-not-delete-value: 0 # 未删除值
添加@MapperScan
注解扫描Mapper接口:
@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Data
@TableName("sys_user") // 指定表名
public class User {
@TableId(type = IdType.AUTO) // 主键策略
private Long id;
@TableField("username") // 字段映射
private String name;
private Integer age;
private String email;
@TableLogic // 逻辑删除标记
private Integer deleted;
}
继承BaseMapper获得CRUD方法:
public interface UserMapper extends BaseMapper<User> {
// 自定义方法
@Select("SELECT * FROM sys_user WHERE age > #{age}")
List<User> selectUsersOlderThan(Integer age);
}
public interface IUserService extends IService<User> {
List<User> getActiveUsers();
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>
implements IUserService {
@Override
public List<User> getActiveUsers() {
return lambdaQuery()
.eq(User::getDeleted, 0)
.list();
}
}
// 查询构造
List<User> users = userMapper.selectList(
new QueryWrapper<User>()
.select("id", "username")
.like("username", "张")
.between("age", 20, 30)
.orderByDesc("create_time")
);
// Lambda表达式写法
List<User> userList = userMapper.selectList(
Wrappers.<User>lambdaQuery()
.select(User::getId, User::getName)
.like(User::getName, "张")
.ge(User::getAge, 18)
);
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
Page<User> page = new Page<>(1, 10); // 当前页,每页数量
Page<User> result = userMapper.selectPage(page,
Wrappers.<User>query().eq("dept_id", 2));
public class CodeGenerator {
public static void main(String[] args) {
AutoGenerator generator = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
gc.setAuthor("Developer");
gc.setOpen(false);
generator.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mp_demo");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
generator.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example");
pc.setModuleName("system");
generator.setPackageInfo(pc);
generator.execute();
}
}
@Service
@Transactional(rollbackFor = Exception.class)
public class UserService {
@Autowired
private UserMapper userMapper;
public void updateUser(User user) {
if(user.getId() == null) {
userMapper.insert(user);
} else {
userMapper.updateById(user);
}
}
}
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
spring:
datasource:
dynamic:
primary: master
datasource:
master:
url: jdbc:mysql://localhost:3306/master
username: root
password: 123456
slave:
url: jdbc:mysql://localhost:3306/slave
username: root
password: 123456
@DS("slave") // 指定数据源
public List<User> getAllFromSlave() {
return userMapper.selectList(null);
}
// 解决字段名与数据库列名不一致
@TableField(value = "db_column_name")
private String entityFieldName;
// 排除非表字段
@TableField(exist = false)
private String tempField;
// 批量插入(需配置rewriteBatchedStatements=true)
List<User> userList = new ArrayList<>();
userMapper.insertBatchSomeColumn(userList); // 3.5.1+版本支持
// 批量更新
userMapper.updateBatchById(userList);
mybatis-plus:
configuration:
cache-enabled: false # 二级缓存
default-executor-type: reuse # 执行器类型
map-underscore-to-camel-case: true # 驼峰转换
通过本文的实践,我们完成了: 1. Spring Boot与Mybatis-Plus的完整集成 2. 基础CRUD操作与高级查询功能实现 3. 分页、代码生成等效率工具的应用 4. 企业级开发中的最佳实践方案
Mybatis-Plus的强大功能可以显著提升开发效率,建议结合官方文档深入探索更多特性。完整的示例代码可访问:GitHub示例仓库 “`
注:本文实际约3500字,可根据需要增减具体章节内容。建议开发时参考: 1. Mybatis-Plus官方文档 2. Spring Boot官方指南 3. 实际项目需求调整配置参数
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。