详细搭建SpringBoot+Mybatis+mysql+swagger+Lombok实现增删改查的功能DOM
SpringBoot框架作为现在主流框架之一,好多框架都渐渐的移植到SpringBoot中来,于是搭建了一个比较主流的DOM体系供参考。总结了一下经验和操作流程。(SpringBoot+Mybatis+mysql+swagger+Lombok环境搭建及实现增删改查功能)
话不多说直接进入正题,就是这么果断与风骚。
下载安装插件
在搭建项目前需要准备些前提工作,方便咱们后续搭建项目。需要下载安装和配置gradle及swagger所需要的文件。
下载配置环境变量gradle
- 安装JDK8(必须是JDK或JRE7以上,使用java -version查看当前电脑java版本),并配置JAVA_HOME环境变量。首先准备下jdk 是否安装了。注意版本哦
- 下载。地址是:https://gradle.org/releases/ 在这里下载你要的版本下载binary-only即可。
- 解压。如果你下载的是gradle-xx-all.zip的完整包,解压在本地盘中D:\gradle\gradle-4.8
- 配置环境变量
配置环境变量:GRADLE_HOME,指定gradle解压路径。
找到path添加:%GRADLE_HOME%\bin;
在命令窗口输入”gradle -v“,进行验证,出现以下提示则表示成功
搭建项目及配置相应的配置
基于上面咱们安装和配置的gradle,下面咱们可以开始使用gradle来搭建咱们的项目。
创建项目基本的项目结构
使用gradle搭建SpringBoot+MyBatis。
使用Spring Initializr新建一个项目,在idea中选择File→New→Project
选择Spring Initializr
Group(项目包路径)和Artifact(包名)你随便填,Type选Gradle Project,Packaging选jar,然后点下一步
分别在Web下面选择Web,SQL下面选择MyBatis、MySQL,选择后的依赖会出现在最右边,如图所示,我就选择了这三个:
确认gradle路径是否正确
点击上面Ok进入画面,到此我们使用gradle搭建SpringBoot+MyBatis完成
下面咱们开始创建项目的目录结构及文件
安装和配置lombok插件
安装lombok插件
在下载过程过因为网络原因有可能需要重复点击下载
下载完成后需要配置下注解处理器
在build.gradle文件中配置lombok
compileOnly(“org.projectlombok:lombok:1.16.16”)
swagger概述
Swagger 是一个帮助完善项目文档规范的框架。我们在类上使用提供的注解写注释,swagger可以根据我们写的注释内容生成相应的web页面,展示我们项目中的api文档。同时我们可以直接在页面上直接调用相应的接口。
下载配置swagger
- 在GitHub 地址:https://github.com/swagger-api/swagger-ui 上下载SwaggerUI项目,将dist下所有内容拷贝到本地项目server-api/webapp下面,结果目录如下图所示:
- 在项目工程下创建webapp文件夹放入到swagger下,修改index.html文件将url: "https://petstore.swagger.io/v2/swagger.json"替换为url: “/v2/api-docs”
- 添加swagger依赖,修改build.gradle文件
compile(‘io.springfox:springfox-swagger2:2.8.0’)
compile(‘io.springfox:springfox-swagger-ui:2.8.0’)
compile(‘io.swagger:swagger-jersey2-jaxrs:1.5.8’)
compile(‘com.mangofactory:swagger-springmvc:1.0.2’)
compile(‘com.mangofactory:swagger-models:1.0.2’)
compile(‘com.wordnik:swagger-annotations:1.3.11’)
搭建整体项目代码
在config下创建SwaggerConfig.java
package com.springboot.demo.config; 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.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket buildDocket() { return new Docket(DocumentationType.SWAGGER_2) .select() //com.springboot.demo.controlle所需要扫描的包地址 .apis(RequestHandlerSelectors.basePackage("com.springboot.demo.controlle")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("用户DOM服务API")//大标题 .description("阿飞提供的user API")//详细描述 .version("1.0")//版本 .termsOfServiceUrl("www.baidu.com") .contact(new Contact("阿飞","www.baidu.com", "12345678@qq.com"))//作者 .build(); } }
在config下创建SwaggerConfig.java
package com.springboot.demo.config; 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.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket buildDocket() { return new Docket(DocumentationType.SWAGGER_2) .select() //com.springboot.demo.controlle所需要扫描的包地址 .apis(RequestHandlerSelectors.basePackage("com.springboot.demo.controlle")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("用户DOM服务API")//大标题 .description("阿飞提供的user API")//详细描述 .version("1.0")//版本 .termsOfServiceUrl("www.baidu.com") .contact(new Contact("阿飞","www.baidu.com", "12345678@qq.com"))//作者 .build(); } }
在controlle下创建UserController.java
package com.springboot.demo.controlle; import com.springboot.demo.entity.UserEntity; import com.springboot.demo.service.UserService; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; @Controller @RequestMapping("/user") @Api(tags = "用户信息管理接口") @RestController public class UserController { @Autowired private UserService userService; @ApiOperation(value = "获取所有用户信息") @GetMapping public List<UserEntity> queryList(){ return userService.queryList(); } @ApiOperation(value = "通过用户id获取用户信息", notes = "通过用户id获取用户信息") @GetMapping("/{id}") @ApiImplicitParams(value = {@ApiImplicitParam(name = "id", paramType = "path", value = "用户ID")}) public UserEntity queryUserEntity(@PathVariable Integer id){ UserEntity userEntity=userService.findById(id); return userEntity; } @ApiOperation(value = "添加用户信息", notes = "添加用户信息") @PostMapping @ApiImplicitParams(value = { @ApiImplicitParam(name = "userName", paramType = "path", value = "用户姓名"), @ApiImplicitParam(name = "userSex", paramType = "path", value = "用户性别"), @ApiImplicitParam(name = "userAge", paramType = "path", value = "用户年龄") }) public String add(@Valid @RequestBody UserEntity userEntity) { userService.insertEntity(userEntity); return "添加成功"; } /** * 更新用户,根据id去更新 */ //input输入参数 @ApiOperation(value = "通过id修改用户", notes = "通过id修改用户") @PutMapping @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType="long", paramType = "query"), @ApiImplicitParam(name = "userName", value = "用户姓名", dataType="string", paramType = "query"), @ApiImplicitParam(name = "userSex", value = "用户性别", dataType="string", paramType = "query"), @ApiImplicitParam(name = "userAge", value = "用户年龄", dataType="string", paramType = "query") }) public String update(UserEntity userEntity) { userService.updateEntity(userEntity); return "修改成功"; } @ApiOperation(value = "通过id删除用户", notes = "通过id删除用户") @DeleteMapping("/{id}") @ApiImplicitParams(value = { @ApiImplicitParam(name = "id", paramType = "path", value = "用户ID")}) public String delete(@PathVariable Integer id) { userService.deleteEntity(id); return "删除成功"; } }
在entity下创建UserEntity.java
package com.springboot.demo.entity; import lombok.Data; @Data public class UserEntity { private int id; private String userName; private String userSex; private String userAge; }
在mapper下创建UserMapper.java
package com.springboot.demo.mapper; import com.springboot.demo.entity.UserEntity; import org.apache.ibatis.annotations.*; import java.util.List; import java.util.Map; public interface UserMapper { @Select("select ID,USER_ANEM,USER_SEX,USER_AGE from testUser") @Results({ @Result(property = "id", column = "ID"), @Result(property = "userName", column = "USER_ANEM"), @Result(property = "userSex", column = "USER_SEX"), @Result(property = "userAge", column = "USER_AGE")}) List<UserEntity> queryList(); @Select("SELECT ID,USER_ANEM,USER_SEX,USER_AGE FROM testUser WHERE ID = #{id}") @Results({ @Result(property = "id", column = "ID"), @Result(property = "userName", column = "USER_ANEM"), @Result(property = "userSex", column = "USER_SEX"), @Result(property = "userAge", column = "USER_AGE")}) UserEntity findById(long id); @Insert("INSERT INTO testUser(USER_ANEM, USER_SEX) VALUES(#{userName}, #{userSex})") int insertParam(@Param("USER_ANEM") String userName, @Param("USER_SEX") String userSex); @Insert("INSERT INTO testUser(USER_ANEM, USER_SEX) VALUES(#{userName,jdbcType=VARCHAR}, #{userSex,jdbcType=VARCHAR})") int insertByMap(Map<String, Object> map); @Insert("insert into testUser(USER_ANEM,USER_SEX,USER_AGE) values(#{userName,jdbcType=VARCHAR},#{userSex,jdbcType=VARCHAR},#{userAge,jdbcType=VARCHAR})") int insertEntity(UserEntity entity); @Update("UPDATE testUser SET USER_ANEM=#{userName,jdbcType=VARCHAR},USER_SEX=#{userSex,jdbcType=VARCHAR},USER_AGE=#{userAge,jdbcType=VARCHAR} WHERE ID=#{id}") int updateEntity(UserEntity user); @Delete("DELETE FROM testUser WHERE ID =#{id}") int remove(Integer id); @Delete("DELETE FROM testUser WHERE ID =#{id}") int deleteEntity(UserEntity entity); }
在service下创建UserService.java
package com.springboot.demo.service; import com.springboot.demo.entity.UserEntity; import com.springboot.demo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class UserService { @Autowired(required = false) private UserMapper mapper; public List<UserEntity> queryList() { List<UserEntity> userList = mapper.queryList(); return userList; } public UserEntity findById(long id) { return mapper.findById(id); } public int insertEntity(UserEntity userEntity) { return mapper.insertEntity(userEntity); } public int insertParam() { return mapper.insertParam("阿飞","男"); } public int insertByMap() { Map<String, Object> map=new HashMap<String, Object>(); map.put("userNaeme","zhaotong"); map.put("userSex","男"); return mapper.insertByMap(map); } public int updateEntity(UserEntity userEntity) { return mapper.updateEntity(userEntity); } public int deleteEntity(Integer id) { return mapper.remove(id); } }
启动类DemoApplication.java
package com.springboot.demo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import springfox.documentation.swagger2.annotations.EnableSwagger2; @MapperScan("com.springboot.*") @EnableSwagger2 @ServletComponentScan public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
resources文件下application.yml
server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/testDB?useUnicode=true&characterEncoding=utf8 username: root password: xxxxx swagger: basePackage: com.kingboy.controller title: 用户服务 description: 用户基本增删改查 version: V1.0
build.gradle文件所需要包配置
dependencies { implementation('org.springframework.boot:spring-boot-starter-web') implementation('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2') runtimeOnly('mysql:mysql-connector-java') testImplementation('org.springframework.boot:spring-boot-starter-test') compileOnly("org.projectlombok:lombok:1.16.16") compile('io.springfox:springfox-swagger2:2.8.0') compile('io.springfox:springfox-swagger-ui:2.8.0') compile('io.swagger:swagger-jersey2-jaxrs:1.5.8') compile('com.mangofactory:swagger-springmvc:1.0.2') compile('com.mangofactory:swagger-models:1.0.2') compile('com.wordnik:swagger-annotations:1.3.11') }
- 详细步骤!!!idea+springboot+mybatis+jsp+bootstrap实现从mysql查询出数据并显示(源码)
- springboot整合mybatis和mysql实现数据的增删改查
- 微服务架构实战篇(三):Spring boot2.0 + Mybatis + PageHelper实现增删改查和分页查询功能
- SpringBoot+Mybatis+Mysql项目实现查询功能
- SpringBoot整合Mybatis实现增删改查的功能
- Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一)
- Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(二)
- idea使用SpringBoot和Spring和Mybatis来实现增删改查
- SpringBoot + MyBatis + MySQL + Maven在Intellij IDEA下开发环境的搭建
- Spring boot+Shiro+ spring MVC+swagger UI +Mybatis+mysql+Vue +Element UI 之四 vue 基本知识点概述
- 微信小程序+SpringBoot+mybatis+MySQL实现简单的登录
- 基于maven的spring-struts2-mybatis(普通版)环境搭建(包含项目代码案例) select标签 头像上传、有详细案例 连接数据库:mysql
- SpringBoot + MyBatis + MySQL + Maven在Intellij IDEA下开发环境的搭建
- SpringBoot + MyBatis + MySQL + Maven在Intellij IDEA下开发环境的搭建
- springboot mybatis mysql实现分表设计
- Spring Boot(三): 集成Mybatis和Druid实现增删改查
- vs code 快速搭建SpringBoot+Mybatis+Mysql项目
- 超详细之Spring Boot结合Jest实现对ElasticSearch的全文检索(从mysql导入数据)
- SpringBoot + MyBatis + MySQL + Maven在Intellij IDEA下开发环境的搭建
- SpringBoot + MyBatis + MySQL + Maven在Intellij IDEA下开发环境的搭建