您的位置:首页 > 编程语言 > Java开发

详细搭建SpringBoot+Mybatis+mysql+swagger+Lombok实现增删改查的功能DOM

2018-11-08 13:04 507 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_43633060/article/details/83859262

SpringBoot框架作为现在主流框架之一,好多框架都渐渐的移植到SpringBoot中来,于是搭建了一个比较主流的DOM体系供参考。总结了一下经验和操作流程。(SpringBoot+Mybatis+mysql+swagger+Lombok环境搭建及实现增删改查功能)

  • 搭建项目及配置相应的配置
  • 安装和配置lombok插件
  • swagger概述
  • 搭建整体项目代码

  • 话不多说直接进入正题,就是这么果断与风骚。

    下载安装插件

    在搭建项目前需要准备些前提工作,方便咱们后续搭建项目。需要下载安装和配置gradle及swagger所需要的文件。

    下载配置环境变量gradle

    1. 安装JDK8(必须是JDK或JRE7以上,使用java -version查看当前电脑java版本),并配置JAVA_HOME环境变量。首先准备下jdk 是否安装了。注意版本哦
    2. 下载。地址是:https://gradle.org/releases/ 在这里下载你要的版本下载binary-only即可。
    3. 解压。如果你下载的是gradle-xx-all.zip的完整包,解压在本地盘中D:\gradle\gradle-4.8
    4. 配置环境变量
      配置环境变量: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

    1. 在GitHub 地址:https://github.com/swagger-api/swagger-ui 上下载SwaggerUI项目,将dist下所有内容拷贝到本地项目server-api/webapp下面,结果目录如下图所示:
    2. 在项目工程下创建webapp文件夹放入到swagger下,修改index.html文件将url: "https://petstore.swagger.io/v2/swagger.json"替换为url: “/v2/api-docs”

    3. 添加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')
    }
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐