SpringBoot整合SpringMVC+Mybatis-plus+Mysql

一、需求背景

快速搭建后端开发环境,实现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后,启动服务,即可测试接口功能;这里的代码生成器可以帮你快速生成代码,避免大量的重复劳动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值