SpringBoot 项目中 使用Mybatis-Plus连接Mysql数据库

1、创建spring boot项目

SpringBoot 项目中 使用Mybatis-Plus连接Mysql数据库_第1张图片SpringBoot 项目中 使用Mybatis-Plus连接Mysql数据库_第2张图片

2、pom.xml中添加依赖

首先添加mybatisplus,已经引用了mybatisplus,就不要引用mybatis了,否则可能会有问题


    com.baomidou
    mybatis-plus-boot-starter
    3.2.0

添加mysql jdbc驱动依赖

 
 
       mysql
       mysql-connector-java
       8.0.17
 

Swagger依赖



     io.springfox
     springfox-swagger-ui
     2.4.0



    io.springfox
    springfox-swagger2
    2.4.0

springboot web依赖,RestController、RequestMapping等标签的时候会用到

  
  
       org.springframework.boot
       spring-boot-starter-web
  

3、创建数据库

SpringBoot 项目中 使用Mybatis-Plus连接Mysql数据库_第3张图片

4、修改application.properties配置文件

  application.properties类型的文件一定不能用yml的语法格式

#设置提供的服务名
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mpdemo?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

#mybatis plus

#指明mapper.xml扫描位置(classpath* 代表编译后类文件根目录)
mybatis-plus.mapper-locations=classpath*:xml/*.xml
#指明实体扫描(多个package用逗号或者分号分隔)
mybatis-plus.type-aliases-package=com.example.mybatisplus01.entity;

#主键类型 0:数据库ID自增, 1:用户输入ID,2:全局唯一ID (数字类型唯一ID), 3:全局唯一ID UUID
mybatis-plus.global-config.id-type: 0
#字段策略(拼接sql时用于判断属性值是否拼接) 0:忽略判断,1:非NULL判断,2:非空判断
mybatis-plus.global-config.field-strategy: 2
#驼峰下划线转换含查询column及返回column(column下划线命名create_time,返回java实体是驼峰命名createTime,开启后自动转换否则保留原样)
mybatis-plus.global-config.db-column-underline: true
#是否动态刷新mapper
mybatis-plus.global-config.refresh-mapper: false
#数据库大写命名下划线转换
#capital-mode: true

5、创建Entity、Mapper、Service、Swagger、XML、Controller

userInfo

package com.example.mybatisplus02.entity;

import lombok.Data;

@Data
public class UserInfo {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

UserInfoMapper

package com.example.mybatisplus02.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplus02.entity.UserInfo;
import org.springframework.stereotype.Repository;

@Repository
public  interface  UserInfoMapper extends BaseMapper{
    //自定义方法
    Integer listCount();
}

IUserInfoService

package com.example.mybatisplus02.service;

public interface IUserInfoService {
    Integer listCount();

}

UserInfoService

package com.example.mybatisplus02.service.Impl;

import com.example.mybatisplus02.mapper.UserInfoMapper;
import com.example.mybatisplus02.service.IUserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserInfoService implements IUserInfoService {

    @Autowired(required = false)
    private UserInfoMapper userInfoMapper;


    public Integer listCount() {
        Integer count = userInfoMapper.listCount();
        return count;
    }
}

Swagger

package com.example.mybatisplus02.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import static com.google.common.collect.Lists.newArrayList;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket swaggerApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .globalOperationParameters(newArrayList(

                        new ParameterBuilder()
                                .name("pageNumber")
                                .description("pageNumber")
                                .modelRef(new ModelRef("int"))
                                .parameterType("header")
                                .required(false)
                                .build(),

                        new ParameterBuilder()
                                .name("pageSize")
                                .description("pageSize")
                                .modelRef(new ModelRef("int"))
                                .parameterType("header")
                                .required(false)
                                .build(),

                        new ParameterBuilder()
                                .name("orders")
                                .description("orders")
                                .modelRef(new ModelRef("string"))
                                .parameterType("header")
                                .required(false)
                                .build(),

                        new ParameterBuilder()
                                .name("isAsc")
                                .description("true: ASC, false: DESC")
                                .modelRef(new ModelRef("string"))
                                .parameterType("header")
                                .required(false)
                                .build(),

                        new ParameterBuilder()
                                .name("language")
                                .description("language")
                                .modelRef(new ModelRef("string"))
                                .parameterType("header")
                                .required(false)
                                .build(),

                        new ParameterBuilder()
                                .name("token")
                                .description("passport token")
                                .modelRef(new ModelRef("string"))
                                .parameterType("header")
                                .required(false)
                                .build()

                ))
                .groupName("plm")
                .genericModelSubstitutes(DeferredResult.class)
                .useDefaultResponseMessages(false)
                .forCodeGeneration(false)
                .pathMapping("/")
                .select()
                .build()
                .apiInfo(myApiInfo());
    }



    private ApiInfo myApiInfo() {
        ApiInfo apiInfo = new ApiInfo("Harmontronics-plm 接口",//大标题
                "",//小标题
                "1.0",//版本
                "",
                "",//作者
                "",//链接显示文字
                ""//网站链接
        );
        return apiInfo;
    }
}

XML




    

Controller

package com.example.mybatisplus02.api;

import com.example.mybatisplus02.service.IUserInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Api(value = "测试接口", tags = "测试接口")
@RestController
@RequestMapping("/api/test")
public class UserApi {


    @Autowired
    private IUserInfoService iUserInfoService;


    /**
     * 测试
     *
     * @return
     */
    @ApiOperation(value = "测试查", notes = "getCount")
    @PostMapping("/getCount")
    public Integer getCount() {
        return iUserInfoService.listCount();
    }
}

最后的项目结构

SpringBoot 项目中 使用Mybatis-Plus连接Mysql数据库_第4张图片

6、在Application启动类上添加扫描mapper的标签

@MapperScan("com.example.mybatisplus02.mapper")//标记扫描的mapper位置

7 运行测试

http://localhost:8001/swagger-ui.html#/

SpringBoot 项目中 使用Mybatis-Plus连接Mysql数据库_第5张图片

你可能感兴趣的:(【007】JAVA)