Heim > Java > javaLernprogramm > Hauptteil

Wie SpringBoot mybatis+mybatis-plus integriert

WBOY
Freigeben: 2023-05-10 19:55:12
nach vorne
1432 Leute haben es durchsucht

准备工作

1、准备如下一个数据表

CREATE TABLE `student` (
  `id` varchar(32) NOT NULL,
  `gender` varchar(32) DEFAULT NULL,
  `age` int(12) DEFAULT NULL,
  `nick_name` varchar(32) DEFAULT NULL,
  `name` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Nach dem Login kopieren

2、插入几条测试数据

Wie SpringBoot mybatis+mybatis-plus integriert

整合步骤

工程的完整包结构如图所示

Wie SpringBoot mybatis+mybatis-plus integriert

1、导入maven依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <mysql-connector-java.version>8.0.11</mysql-connector-java.version>
        <commons-lang3.version>3.7</commons-lang3.version>
        <fastjson.version>1.2.47</fastjson.version>
        <mybatis-plus-boot-starter.version>3.3.0</mybatis-plus-boot-starter.version>
        <mybatis-plus-generator.version>3.3.0</mybatis-plus-generator.version>
        <druid.version>1.1.14</druid.version>
        <lombok.version>1.18.0</lombok.version>
        <dubbo-spring-boot-starter.version>2.0.0</dubbo-spring-boot-starter.version>
        <swagger.version>2.9.2</swagger.version>
        <swagger-bootstrap-ui.version>1.9.6</swagger-bootstrap-ui.version>
    </properties>
 
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
        </dependency>
 
        <!--阿里巴巴fastjosn依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
 
        <!--阿里巴巴数据库连接池依赖-->
        <!-- Druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
 
        <!-- MyBatis增强工具-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus-boot-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>${mybatis-plus-generator.version}</version>
        </dependency>
 
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
 
        <!--swagger-ui-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.version}</version>
        </dependency>
 
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.version}</version>
        </dependency>
 
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>${swagger-bootstrap-ui.version}</version>
        </dependency>
 
    </dependencies>
Nach dem Login kopieren

2、配置文件 application.yml

server:
  port: 8083
logging:
  config: classpath:logback-spring.xml  #日志
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://IP:3306/school?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: root
    druid:
      max-active: 100
      initial-size: 10
      max-wait: 60000
      min-idle: 5
  #设置单个文件最大上传大小
  servlet:
    multipart:
      max-file-size: 20MB
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  global-config:
    db-column-underline: true  #开启驼峰转换
    db-config:
      id-type: uuid
      field-strategy: not_null
    refresh: true
  configuration:
    map-underscore-to-camel-case: true
    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句便于调试
Nach dem Login kopieren

3、为了方便后面调试接口,增加一个swagger的配置

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;
 
/**
 * swagger文档,项目启动后,浏览器访问:http://localhost:8083/swagger-ui.html
 */
@Configuration
@EnableSwagger2
public class ApiSwagger2 {
 
    @Bean
    public Docket createRestBmbsApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("users")
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.congge.controller"))
                .paths(PathSelectors.any())
                .build();
    }
 
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("后端相关API")
                .version("1.0")
                .build();
    }
 
}
Nach dem Login kopieren

4、实体类

import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
 
@Data
public class Student {
 
    @TableField("id")
    private String id;
 
    @TableField("name")
    private String name;
 
    @TableField("gender")
    private String gender;
 
    @TableField("age")
    private int age;
 
    @TableField("nick_name")
    private String nickName;
 
}
Nach dem Login kopieren

5、dao接口,里面添加一个查询所有数据的方法

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.congge.entity.Student;
import org.apache.ibatis.annotations.Mapper;
 
import java.util.List;
 
@Mapper
public interface StudentMapper extends BaseMapper<Student> {
 
    List<Student> queryAll();
 
}
Nach dem Login kopieren

6、mybatis层,写sql的文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.congge.dao.StudentMapper">
 
    <select id="queryAll" resultType="com.congge.entity.Student">
		select * from student
	</select>
 
</mapper>
Nach dem Login kopieren

7、业务实现类

在本次的业务实现中,同时可以使用mybatis的方式以及mybatis-plus的方式进行,具体使用的时候结合自身的需求进行选择;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.congge.dao.StudentMapper;
import com.congge.entity.Student;
import com.congge.service.StudentService;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.List;
 
@Service
public class StudentServiceImpl implements StudentService {
 
    @Resource
    private StudentMapper studentMapper;
 
    @Override
    public List<Student> queryAllStudent() {
        QueryWrapper<Student> queryWrapper = new QueryWrapper();
        List<Student> students = studentMapper.selectList(queryWrapper);
        return students;
        //return studentMapper.queryAll();
    }
 
    @Override
    public List<Student> getByName(String name) {
        QueryWrapper<Student> queryWrapper = new QueryWrapper();
        queryWrapper.like("name",name);
        return studentMapper.selectList(queryWrapper);
    }
 
    public Student getById(String id) {
        QueryWrapper<Student> queryWrapper = new QueryWrapper();
        queryWrapper.like("id",id);
        return studentMapper.selectOne(queryWrapper);
    }
}
Nach dem Login kopieren

8、添加一个测试接口

@RestController
public class StudentController {
 
    @Autowired
    private StudentService studentService;
 
    @GetMapping("/getAll")
    public List<Student> getAll(){
        return studentService.queryAllStudent();
    }
 
    @GetMapping("/getByName")
    public List<Student> getByName(@RequestParam String name){
        return studentService.getByName(name);
    }
 
    @GetMapping("/getById")
    public Student getById(@RequestParam String id){
        return studentService.getById(id);
    }
}
Nach dem Login kopieren

9、启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class App {
 
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
 
}
Nach dem Login kopieren

接下来,将工程运行起来做一下测试吧

10、启动之后,打开swagger界面

Wie SpringBoot mybatis+mybatis-plus integriert

Wie SpringBoot mybatis+mybatis-plus integriert

不妨随机测试两个接口吧,测试下获取所有学生的数据接口

Wie SpringBoot mybatis+mybatis-plus integriert

Das obige ist der detaillierte Inhalt vonWie SpringBoot mybatis+mybatis-plus integriert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!