【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映射
#指定Mybatis的Mapper文件
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/