Sure,下面是SpringBoot整合MyBatis-Plus的方法示例完整攻略:
一、前置准备
- JDK 1.8+
- Maven 3.0+
- SpringBoot 2.0+
- MyBatis-Plus 3.1.0+
二、项目搭建
1. 创建SpringBoot项目
通过 Spring Initializer,创建一个 SpringBoot 项目,并导入 Maven 依赖:
<!-- SpringBoot依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis-Plus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
2. 配置数据库连接
在 application.properties
文件中添加如下内容:
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
3. 创建实体类
在 src/main/java
下创建实体类 User
:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
4. 创建Mapper接口
在 src/main/java
下创建 Mapper 接口 UserMapper
:
@Repository
public interface UserMapper extends BaseMapper<User> {
}
注意:Mapper 接口继承
BaseMapper
接口。
三、基本操作
1. 开启Mapper接口自动扫描
在启动类上加上注解 @MapperScan("com.example.mybatis.mapper")
2. CRUD操作示例
(1) 新增
@SpringBootTest
class UserMapperTest {
@Autowired
private UserMapper userMapper;
private static Logger logger = LoggerFactory.getLogger(UserMapperTest.class);
@Test
void addUser() {
User user = new User();
user.setName("张三");
user.setAge(18);
user.setEmail("zhangsan@leetcode.com");
int i = userMapper.insert(user);
logger.info("受影响的行数:" + i);
}
}
(2) 修改
@SpringBootTest
class UserMapperTest {
@Autowired
private UserMapper userMapper;
private static Logger logger = LoggerFactory.getLogger(UserMapperTest.class);
@Test
void updateUserById() {
User user = new User();
user.setId(1L);
user.setName("李四");
int i = userMapper.updateById(user);
logger.info("更新的行数:" + i);
}
}
(3) 查询
@SpringBootTest
class UserMapperTest1 {
@Autowired
private UserMapper userMapper;
private static Logger logger = LoggerFactory.getLogger(UserMapperTest1.class);
@Test
void selectList() {
List<User> users = userMapper.selectList(null);
users.forEach(user -> {
logger.info(user.toString());
});
}
}
3. 代码生成器
MyBatis-Plus 提供了一个高效的代码生成器,方便快捷的生成基本的 CRUD 操作所需的实体类、Mapper 接口、XML 映射文件等。
(1) 配置
在 application.properties
文件中添加如下配置:
# 代码生成器配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 代码生成器配置
mybatis-plus.global-config.db-config.table-prefix=t_
mybatis-plus.mapper-locations=classpath:./mapper/*Mapper.xml
mybatis-plus.global-config.id-type=auto
(2) 生成代码
创建 CodeGenerator
类,并在 main
方法中执行:
public class CodeGenerator {
public static void main(String[] args) {
// 代码生成器配置
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("lijun");
gc.setOpen(false);
// gc.setSwagger2(true); 实体属性 Swagger2 注解
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.mybatis");
mpg.setPackageInfo(pc);
// 自定义配置,XML中的BaseResultMap、Base_Column_List都不配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 如果模板引擎是 velocity
// String templatePath = "/templates/mapper.xml.vm";
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出xml文件 默认mapper.xml文件不生成
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名,如果Entity设置了前后缀、xml的名称会跟着发生变化
return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
// 配置自定义输出模板
// 模板引擎是 freemarker
// templateConfig.setXml(null);
// 模板引擎是 velocity
// templateConfig.setMapper("/templates/mapper.xml.vm");
//templateConfig.setService("/templates/service.java.vm");
//templateConfig.setServiceImpl("/templates/serviceImpl.java.vm");
//templateConfig.setController("/templates/controller.java.vm");
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
mpg.setStrategy(strategy);
mpg.execute();
}
}
执行完后,会在当前项目的资源目录下自动生成实体类、Mapper接口和映射文件。
四、结束语
以上就是SpringBoot整合MyBatis-Plus的完整攻略,其中包含了基本操作和代码生成器的使用。对于初次接触MyBatis-Plus的小伙伴们,建议先了解基本操作,在熟悉后再使用代码生成器提高工作效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot中整合MyBatis-Plus的方法示例 - Python技术站