一、需求背景
快速搭建后端开发环境,实现SpringBoot整合SpringMVC+Mybatis-plus+Mysql。
二、编码实现
2.1 pom文件添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--SpringBoot依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.11.RELEASE</version>
</parent>
<groupId>com.lh</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<!--指定依赖的版本-->
<properties>
<java.version>1.8</java.version>
<mysql.version>5.1.49</mysql.version>
<druid.version>1.2.5</druid.version>
<mybatis-plus.version>3.2.0</mybatis-plus.version>
<velocity.version>2.2</velocity.version>
<pagehelper.version>1.2.5</pagehelper.version>
<lombok.version>1.18.12</lombok.version>
<hutool.version>5.7.8</hutool.version>
</properties>
<!--dependencyManagement,用于声明依赖版本的统一管理-->
<dependencyManagement>
<dependencies>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!--mybatis-plus 的启动器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 代码自动生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 代码自动生成器模板依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--添加依赖-->
<dependencies>
<!--springMVC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring的AOP切面-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--druid数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!--mybatis-plus 的启动器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 代码自动生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 代码自动生成器模板依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2 yml配置文件添加
包含常用的数据库、mybatis-plus配置
# 环境配置
server:
port: 8090
# Spring配置
spring:
jackson:
# 设置时区,解决8小时的时间差问题
time-zone: GMT+8
# 指定jackson在转json时date输出格式为yyyy-MM-dd HH:mm:ss
date-format: yyyy-MM-dd HH:mm:ss
default-property-inclusion: non_null
# 数据源配置
datasource:
driverClassName: com.mysql.jdbc.Driver
# ------druid连接池配置------
type: com.alibaba.druid.pool.DruidDataSource
druid:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true
username: root
password: 123456
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
type-aliases-package: com.lh.beans
2.3 定义启动类
package com.lh;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author LH
*/
@SpringBootApplication
@MapperScan("com.lh.mapper")
public class LhWebApp {
public static void main(String[] args) {
SpringApplication.run(LhWebApp.class, args);
}
}
2.4 代码生成器
使用代码生成器生成controller、service、mapper层的代码
package com.lh;
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;
/**
* 代码生成工具
*
* @author LH
*/
public class CodeGenerator {
//直接运行帮我们生成代码
public static void main(String[] args) {
/**
* 第一步: 使用代码生成器
*/
AutoGenerator autoGenerator = new AutoGenerator();
DataSourceConfig dataSource = new DataSourceConfig();
dataSource.setDriverName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true");
dataSource.setUsername("root");
dataSource.setPassword("123456");
autoGenerator.setDataSource(dataSource);
/**
* 第二步: 设置全局配置
*/
GlobalConfig globalConfig = new GlobalConfig();
//输出目录
globalConfig.setOutputDir("F:\\auto\\src/main/java");
//设置完之后是否打开资源管理器
globalConfig.setOpen(true);
//设置作者
globalConfig.setAuthor("LH");
//设置是否覆盖原始生成的文件
globalConfig.setFileOverride(true);
//设置数据层接口名,%s为占位符 代表数据库中的表名或模块名
globalConfig.setMapperName("%sMapper");
autoGenerator.setGlobalConfig(globalConfig);
/**
* 第三步: 设置包名相关配置
*/
PackageConfig packageConfig = new PackageConfig();
//设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径
packageConfig.setParent("com.lh");
//设置实体类包名
packageConfig.setEntity("beans");
//设置数据层包名
packageConfig.setMapper("mapper");
autoGenerator.setPackageInfo(packageConfig);
/**
* 第四步: 策略设置
*/
StrategyConfig strategyConfig = new StrategyConfig();
//设置当前参与生成的表名,参数为可变参数 生成指定表
strategyConfig.setInclude("dept");
//是否启用Rest风格
strategyConfig.setRestControllerStyle(true);
//设置是否启用Lombok
strategyConfig.setEntityLombokModel(true);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.execute();//执行
}
}
2.5 将代码生成器生成的代码整合到项目中
2.5.1 controller层
package com.lh.web;
import com.lh.beans.Dept;
import com.lh.service.IDeptService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author LH
* @since 2024-07-03
*/
@RestController
@RequestMapping("/dept")
public class DeptController {
@Resource
private IDeptService deptService;
@GetMapping("/get")
public List<Dept> list() {
List<Dept> list = deptService.list();
return list;
}
}
2.5.2 service及serviceImpl层
service层
package com.lh.service;
import com.lh.beans.Dept;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author LH
* @since 2024-07-03
*/
public interface IDeptService extends IService<Dept> {
}
impl层
package com.lh.service.impl;
import com.lh.beans.Dept;
import com.lh.mapper.DeptMapper;
import com.lh.service.IDeptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author LH
* @since 2024-07-03
*/
@Service
public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements IDeptService {
}
2.5.3 mapper层
package com.lh.mapper;
import com.lh.beans.Dept;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author LH
* @since 2024-07-03
*/
public interface DeptMapper extends BaseMapper<Dept> {
}
2.5.4 对象bean
package com.lh.beans;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author LH
* @since 2024-07-03
*/
@Data
public class Dept implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String address;
}
三、总结
上述就是SpringBoot整合SpringMVC、Mybatis-plus、mysql的整个过程,本地配置好maven后,启动服务,即可测试接口功能;这里的代码生成器可以帮你快速生成代码,避免大量的重复劳动。