SpringBoot 整合mybatis+mybatis-plus的詳細步驟
前言
在真實的項目開發中,使用SpringBoot可以說非常普遍瞭,而在框架整合中,與數據庫的交互無外乎使用jpa,mybatis,mybatis-plus這幾種,雖然hibernate仍然有在使用,畢竟框架畢竟重,而且用起來相較於mybatis還是差瞭那麼點意思;
接下來演示下使用 SpringBoot 同時與mybatis,mybatis-plus的整合步驟;
準備工作
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;
2、插入幾條測試數據
整合步驟
工程的完整包結構如圖所示
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>
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語句便於調試
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(); } }
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; }
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(); }
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>
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); } }
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); } }
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); } }
接下來,將工程運行起來做一下測試吧
10、啟動之後,打開swagger界面
不妨隨機測試兩個接口吧,測試下獲取所有學生的數據接口
本篇到這裡基本上就結束瞭,更多的業務大傢可以結合自身的實際情況,繼續在代碼中補充即可
到此這篇關於SpringBoot 整合mybatis+mybatis-plus的文章就介紹到這瞭,更多相關SpringBoot 整合mybatis-plus內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- springboot 整合fluent mybatis的過程,看這篇夠瞭
- Springboot集成swagger實現方式
- Mybatis入門指南之實現對數據庫增刪改查
- 解決Swagger2返回map復雜結構不能解析的問題
- Spring boot配置 swagger的示例代碼