【Mybatis-Plus简单开发后台案例】


由于最近在自己做项目,就想写些博客来记录一下自己的过程。

依赖包

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

先在数据库中创建一张表

在这里插入图片描述

开始创建项目

在这里插入图片描述
推荐使用JDK1.8

在这里插入图片描述

使用阿里云代理

https://start.aliyun.com

下一步
命名随便
如图这样选择
在这里插入图片描述

依赖包下一步勾选依赖

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
继续下一步命名
在这里插入图片描述

先在Application里加这个,里面加上面的包名加mapper

mapper后面会讲到
在这里插入图片描述

修改配置文件application.properties

# 应用名称
spring.application.name=mybatis
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=root
#下面这些内容是为了让MyBatis映射
#指定MybatisMapper文件
mybatis-plus.mapper-locations=classpath:mappers/*xml
#指定Mybatis的实体目录
mybatis-plus.type-aliases-package=com.example.test.demo.entity
# 应用服务 WEB 访问端口
server.port=9000
server.address=0.0.0.0
spring.resources.static-locations=file:d:/data/
#设置单个文件大小
spring.servlet.multipart.max-file-size= 50MB
# 设置单次请求文件的总大小
spring.servlet.multipart.max-request-size= 50MB


因为我的项目涉及了文件上传,所以有后面几个配置,如果你没有的话,可以删掉。

这里是数据库的用户名密码,自己改成自己的

# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=root

mybatis是数据库名,也改成自己的

# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC

创建一个名为utils的包
在这里插入图片描述

代码生成器

在pom.xml中添加依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>

点击同步
在这里插入图片描述
将这段代码复制到utils包下

package com.example.test.demo.utils;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;

public class GenerateCode {
    
    
    public static void main(String[] args) {
    
    
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC", "root", "root")
                .globalConfig(builder -> {
    
    
                    builder.author("hhh") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("D://data//"); // 指定输出目录
                })
                .packageConfig(builder -> {
    
    
                    builder.parent("com.example.test.demo") // 设置父包名
//                            .moduleName("idcard") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://data//")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
    
    
                    builder.addInclude("student") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
//                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

输出目录是等会生成代码的目录,自己可以改
父包名也改成自己的
设置生成的表名,即开始的时候创建的表的名字,我的是student

设置完后右键运行
在这里插入图片描述

应该会报错
在这里插入图片描述

添加依赖就好,记得同步

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

然后就可以运行了,会给你生成基本代码,完毕后会自己弹出
在这里插入图片描述

在resources文件夹下创建一个mappers的文件夹
将那个xml文件复制进去,这个用来写多表查询的(我理解的是),如果用不到多表查询,复制进去后就不要管了

然后点开com文件夹,会有这几个文件夹,全部复制到包下
在这里插入图片描述
实体类会有报红,是缺少依赖了
在这里插入图片描述

接口管理工具类,继续添加依赖,记得同步

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>

然后将这个类复制粘贴到utils工具包下
包名若是不同的话,自己记得改过来

package com.example.test.demo.utils;



import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2 {
    
    

    @Bean
    public Docket createRestApi() {
    
    
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())//调用apiInfo方法,创建一个ApiInfo实例,里面是展示在文档页面信息内容
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.test.demo.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    //构建 api文档的详细信息函数
    private ApiInfo apiInfo() {
    
    
        return new ApiInfoBuilder()
                //页面标题
                .title("**系统接口管理文档")
                .termsOfServiceUrl("http://www.github.io/")
                .version("1.0")
                .description("API 描述")
                .build();
    }
}

在这里插入图片描述

返回结果工具类,一样粘贴到工具包下

package com.huncm.mybatis.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据封装类
 */
public class Result extends HashMap<String, Object> {
    
    
    private static final long serialVersionUID = 1L;

    public Result() {
    
    
        put("code", 0);
        put("msg", "success");
    }

    public static Result error() {
    
    
        return error(500, "未知异常,请联系管理员");
    }

    public static Result error(String msg) {
    
    
        return error(500, msg);
    }

    public static Result error(int code, String msg) {
    
    
        Result r = new Result();
        r.put("code", code);
        r.put("msg", msg);
        return r;
    }

    public static Result ok(String msg) {
    
    
        Result r = new Result();
        r.put("msg", msg);
        return r;
    }


    public static Result ok(Object obj) {
    
    
        Result r = new Result();
        r.put("data", obj);
        return r;
    }

    public static Result ok(Map<String, Object> map) {
    
    
        Result r = new Result();
        r.putAll(map);
        return r;
    }

    public static Result ok() {
    
    
        return new Result();
    }

    public Result put(String key, Object value) {
    
    
        super.put(key, value);
        return this;
    }
}


然后可以开始写增删改查了

我们只要管controller层就好了
先在controller类外加两个注解

@RestController
@CrossOrigin

想知道啥作用可自行查找,我在这里不做过多解释
在这里插入图片描述
查找

    @Autowired
    IStudentService iStudentService;

    //查
    @ApiOperation(value = "查询")
    @GetMapping("findAllStudent")
    public Result findAllStudent(){
    
    
        return Result.ok(iStudentService.list());
    }

list方法是返回表中所有数据,还有很多方法,自行看看有什么方法
在这里插入图片描述

运行试一下
在这里插入图片描述
报错了
在这里插入图片描述
说是启动不了web server
再在上面加个注解

@SpringBootApplication

在这里插入图片描述
再次运行就可以了
然后打开浏览器,输入

http://localhost:9000/swagger-ui.html

在这里插入图片描述
这个就是刚才的接口管理工具,可以测试接口的增删改查功能
在这里插入图片描述
点击右边的Try it out会出现Execute按钮
点击一下,成功查询到数据
在这里插入图片描述
在这里插入图片描述
最后附上增删改方法,继续运行就好了

    @ApiOperation(value = "添加")
    @PostMapping("addStudent")
    public Result addStudent(@RequestBody Student student){
    
    
        if (iStudentService.save(student)){
    
    
            return Result.ok(student);
        }
        return Result.error(501,"添加失败");
    }

    @ApiOperation(value = "更新")
    @PostMapping("updateStudent")
    public Result updateStudent(@RequestBody Student student){
    
    
        if (iStudentService.saveOrUpdate(student)){
    
    
            return Result.ok(student);
        }
        return Result.error(501,"更新失败");
    }

    @ApiOperation(value = "删除")
    @GetMapping("deltudent/{id}")
    public Result deltudent(@PathVariable int id){
    
    
        if (iStudentService.removeById(id)){
    
    
            return Result.ok("删除成功");
        }
        return Result.error(501,"删除失败");
    }

在这里插入图片描述
这里只做简单示例,想了解更多的可以在评论区或者私信我,或者自行上官网了解

Mybatis-Plus官网:

https://mp.baomidou.com/

猜你喜欢

转载自blog.csdn.net/butterfly_new/article/details/127117703