千家信息网

#IT明星不是梦#【从0开始Web开发实战】SpringBo

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,目录:1. SpringBoot集成MyBatis和MyBatisPlus2. 配置和运行代码生成工具3. 单元测试Service和Mapper的CRUD功能函数4. REST接口调用数据库读写功能5
千家信息网最后更新 2026年10月31日#IT明星不是梦#【从0开始Web开发实战】SpringBo

目录:

1. SpringBoot集成MyBatis和MyBatisPlus

2. 配置和运行代码生成工具

3. 单元测试Service和Mapper的CRUD功能函数

4. REST接口调用数据库读写功能

5. 问答:MyBatis Plus Generator生成entity没有get/set函数?


SpringBoot是使用最多的Java开发框架,特点是自动化配置依赖模块,提供的一系列starter脚手架便于使用,充分体现了"开箱即用"和"约定优于配置"原则。


MyBatis是一个数据库持久层框架,采用ORM架构,映射实体和数据库,对JDBC进行封装,支持定制化SQL、存储过程以及高级映射,使得开发者只需关注SQL语句和CRUD操作,而不需要处理驱动加载、创建和管理连接等复杂的过程。


MyBatis通过xml或注解的方式将要执行的操作配置起来,并通过Java对象和SQL动态参数映射,生成要执行的SQL语句,MyBatis框架执行后将结果映射为Java对象返回。


MyBatis Plus对MyBatis进一步增强、简化开发和提高效率。本文分享MyBatis Plus和代码生成器的集成方法,对Service和Mpper功能单元测试,并封装一个测试接口。



代码文件

功能要点

SpringBoot集成MyBatis, MyBatisPlus

pom.xml

引入MyBatis和MyBatis Plus依赖:mybatis-spring-boot-starter, mybatis-plus-boot-starter, mybatis-plus-generator

application.yml

配置数据源

代码生成工具

MyBatisPlusGenerator.java

MyBatis Plus提供了易用高效的代码生成工具,配置路径和包名称。

生成代码文件

entity, mapper, service

继承基类BaseMapper和IService封装的CRUD功能函数

单元测试

MapperTest.java, ServiceTest.java

测试CRUD操作

功能调用

CheckController.java

增加REST接口/chk/db,测试数据库读写功能


项目代码:https://github.com/jextop/StarterApi/

MyBatis-Plus官网:https://mybatis.plus/guide/


一,SpringBoot集成MyBatis和MyBatisPlus

1. 新建SpringBoot项目时,选中MyBatis,将自动添加MyBatis依赖。

2. 在pom.xml中添加MyBatis Plus和Generator依赖。注意运行代码生成工具时,需要一个页面模板库,示例使用freemarker。


org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1


com.baomidou
mybatis-plus-boot-starter
3.3.0


com.baomidou
mybatis-plus-generator
3.3.0


org.springframework.boot
spring-boot-starter-freemarker

3. 在application.yml中配置数据源:

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC
username: root
password: root


二,配置和运行代码生成工具

1. MyBatis Plus提供了一个功能强大的代码生成工具AutoGenerator,在代码中修改文件路径和包名称:MyBatisPlusGenerator.java

2. 注意StrategyConfig.setEntityLombokModel(),Lombok默认为打开模式,建议设置为false,由于lombok对代码侵入程度较大并且依赖IDE插件,谨慎使用。

3. 运行MyBatisPlusGenerator.main(),生成器可以放在一个独立的项目中。

4. 生成entity, mapper和service,继承基类BaseMapper和IService封装的CRUD功能函数。

三,单元测试Mapper和Service的CRUD功能函数

CRUD是创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)4种数据库操作的首字母缩写,LogServiceImpl实现IService接口,聚合LogMapper功能:

测试LogService的读写数据库功能:

@SpringBootTest
public class LogServiceTest {
@Autowired
LogServiceImpl logService;

@Test
public void testSave() {
boolean ret = logService.save(new Log() {{
setSummary(String.format("service: %s", new Date()));
}});

LogUtil.info(ret);
Assertions.assertTrue(ret);
}

@Test
public void testList() {
List ret = logService.list(new QueryWrapper()
.orderByDesc("id")
.last(true, "limit 2")
);

ret.forEach(LogUtil::info);
Assertions.assertFalse(ret.isEmpty());
}
}


四,REST接口调用数据库读写功能

1. 增加RestController:CheckController.java

2. 增加REST接口/chk/db,调用mapper读写数据库

@GetMapping(value = "/chk/db")
public Object db(@RequestAttribute(required = false) String ip) {
// Write a log to db
Log log = new Log() {{
setSummary(String.format("db_test_%s_%s_数据库", ip, new Date()));
}};
logMapper.insert(log);

// Read log from db
Log ret = logMapper.selectOne(new QueryWrapper()
.orderByDesc("id")
.eq("summary", log.getSummary())
);
Integer count = logMapper.selectCount(null);

return new HashMap, Object>() {{
put("chk", "db");
put("msg", log.getSummary());
put("status", log.getSummary().equals(ret.getSummary()));
put("count", count);
}};
}

3. Postman调用接口示例


五,问答:MyBatis Plus Generator生成entity没有get/set函数?

代码生成器在生成Entity时,策略配置提供了一个lombok属性,可以指定是否使用lombok模式,对应属性访问器的生成方式。

l MyBatis Plus提供的代码生成器示例,打开了lombok模式:

l 生成的Entity包含@Data注解,将自动生成get/set函数

@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class Log extends BaseEntity {
private static final long serialVersionUID = 1L;

private Integer ops;

private String summary;

}


由于lombok对代码侵入程度较大并且依赖IDE插件,在不使用lombok时,只需设置属性关闭即可:StrategyConfig.setEntityLombokModel(false);

l StrategyConfig默认是关闭lombok模式

l 设置为false或者删除该行代码,生成的Entity将生成get/set函数

public class Auth extends BaseEntity {
private static final long serialVersionUID = 1L;

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

--------------------------------

如果您觉得这篇文章对您有帮助,请点个"赞",博主感激不尽!

Jext技术社区专注领域:软件工程实践,JIRA研发管理,分布式系统架构,软件质量保障。

生成 代码 功能 数据 数据库 配置 函数 测试 接口 代码生成 工具 单元 模式 生成器 封装 运行 开发 属性 文件 框架 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 易互联网科技有限公司 互联网 科技创业 奇酷互联网科技公司 壹账通互联网科技 菲比寻常互联网科技 广西拼得多互联网科技有限公司 太原新华互联网科技学校怎么样 科技赋能互联网健康 互联网之后的科技是什么 阿里巴巴算科技企业还是互联网 语蝶互联网科技有限公司 恒生互联网科技指数跳水 为客找房互联网科技公司怎么样 互联网企业科技类企业如何做账 江苏苏星互联网科技有限公司 银行科技岗属于互联网吗 深圳无忧互联网科技 中国科技和美国互联网 承德科技产业互联网平台 互联网科技金融 美国互联网科技 小马过河互联网科技 一五八零互联网科技 佳云科技和互联网广告 浙江互联网科技研学营 武汉健翔互联网络科技有限公司 上海乐五互联网科技有限公司 恒生科技指数 中概互联网 安徽九吞吴互联网科技有限公司
0