javascript
Spring Boot2.x-07Spring Boot2.1.2整合Mybatis
文章目錄
- 概述
- 搭建Spring Boot工程 Version 2.1.2.RELEASE
- application.yml 數據庫的配置
- 集成Mybatis
- Step1 添加依賴mybatis- spring-boot- starter
- Step2 庫表及domain類
- Step3 添加ArtisanMapper接口
- Step4 添加SQL映射文件
- Step5 application.yml中配置mybatis
- Step6 Service層編寫
- Step7 約定后臺返回規范(可省略)
- Step8 Controller編寫
- Step9 測試
- 代碼
概述
廢話不多說了,直接擼吧 ,先看看整體的結構 【 Spring Boot 2.1.2 , MyBatis 1.3.2 , Mysql 8.0.13 】
搭建Spring Boot工程 Version 2.1.2.RELEASE
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.2.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>com.artisan</groupId><artifactId>springbootMybatis</artifactId><version>0.0.1-SNAPSHOT</version><name>springbootMybatis</name><description>Artisan </description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!-- spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 對JDBC數據庫的支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- mysql的驅動 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- mybatis的starter --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!-- 消除 Java 的冗長 ,優雅的編程 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--開發環境熱部署插件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><!-- 測試 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>pom中每個jar包都加了注釋,這里就不啰嗦了。
application.yml 數據庫的配置
# datasource spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver # JDBC連接Mysql6以上com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/artisan?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=falseusername: rootpassword: root通過上面的屬性配置數據庫的連接信息后, Spring Boot 就可以自動配置數據源了
集成Mybatis
Step1 添加依賴mybatis- spring-boot- starter
剛才的pom中已經有了,如下
<!-- mybatis的starter --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency>Step2 庫表及domain類
為了方便演示,新建庫表和對應的實體類
-- ---------------------------- -- Table structure for artisan -- ---------------------------- DROP TABLE IF EXISTS `artisan`; CREATE TABLE `artisan` (`id` int(9) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`sex` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ---------------------------- -- Records of artisan -- ---------------------------- INSERT INTO `artisan` VALUES ('1', 'artisan', '男'); INSERT INTO `artisan` VALUES ('2', '程序媛', '女'); INSERT INTO `artisan` VALUES ('3', '周杰倫', '男'); INSERT INTO `artisan` VALUES ('4', '小籠包', '女'); INSERT INTO `artisan` VALUES ('5', '巨石強森', '男');com.artisan.model包下新建Artisan實體類
package com.artisan.model;import lombok.Data;/*** * @author yangshangwei* * lombok的注解 @Data 注解在類上 提供類所有屬性的 getting 和 setting 方法,* 此外還提供了equals、canEqual、hashCode、toString 方法**/ @Data public class Artisan {private Long id;private String name;private String sex;}Step3 添加ArtisanMapper接口
com.artisan.mapper包下新建接口 ArtisanMapper
package com.artisan.mapper;import java.util.List;import org.apache.ibatis.annotations.Mapper;import com.artisan.model.Artisan; /*** * @author yangshangwei* * 增加@Mapper這個注解之后,Spring 啟動時會自動掃描該接口,這樣就可以在需要使用時直接注入 Mapper 了*/@Mapper public interface ArtisanMapper {/*** 查詢全部數據*/List<Artisan> selectArtisan();}使用了@ Mapper 注解, 增加這個注解之后,Spring 啟動時會自動掃描該接口,這樣就可以在需要使用時直接注入 Mapper 了
Step4 添加SQL映射文件
在 src/main/resources下面創建mapper目錄,然后新建 ArtisanMapper.xml映射文件
<?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接口和XML文件關聯的時候, namespace的值就需要配置成接口的全限定名稱 --> <mapper namespace="com.artisan.mapper.ArtisanMapper"><select id="selectArtisan" resultType="Artisan"> <!-- resultType可以不用寫全,與application.yml中的type-aliases-package屬性組合使用 -->select id , name ,sex from artisan</select> </mapper>Step5 application.yml中配置mybatis
增加如下Mybatis的配置
#mybatis mybatis:# 映射文件的路徑 ,支持 Ant 風格的通配符, 多個配置可以使用英文逗號隔開mapper-locations: classpath:mapper/*.xml # 類型別名包畫配置,只能指定具體的包,多個配置可以使用英文逗號隔開type-aliases-package: com.artisan.model# Mybatis SQL語句控制臺打印configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImplStep6 Service層編寫
接口和實現類
package com.artisan.service;import java.util.List;import com.artisan.model.Artisan;public interface ArtisanService {List<Artisan> getArtisanList(); } package com.artisan.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.artisan.mapper.ArtisanMapper; import com.artisan.model.Artisan; import com.artisan.service.ArtisanService;@Service public class ArtisanServiceImpl implements ArtisanService {@Autowiredprivate ArtisanMapper artisanMapper;@Overridepublic List<Artisan> getArtisanList() {return artisanMapper.selectArtisan();}}Step7 約定后臺返回規范(可省略)
使用泛型封裝下返回結果,見注釋。 第二個包裝類CodeMsg 用了lombok的注解,可以不用。Result沒用,僅僅是演示下。。。
package com.artisan.result;public class Result<T> {private int code;private String msg;private T data;/*** 成功時候的調用* */public static <T> Result<T> success(T data){return new Result<T>(data);}/*** 失敗時候的調用* */public static <T> Result<T> error(CodeMsg cm){return new Result<T>(cm);}private Result(T data) {this.code = 0;this.msg = "success";this.data = data;}private Result(CodeMsg cm) {if(cm == null) {return;}this.code = cm.getCode();this.msg = cm.getMsg();}public int getCode() {return code;}public String getMsg() {return msg;}public T getData() {return data;} } package com.artisan.result;import lombok.Getter;public class CodeMsg {@Getterprivate int code;@Getterprivate String msg;// 通用異常public static CodeMsg SUCCESS = new CodeMsg(0, "success");public static CodeMsg SERVER_ERROR = new CodeMsg(-1, "服務端異常");private CodeMsg(int code, String msg) {this.code = code;this.msg = msg;}}Step8 Controller編寫
package com.artisan.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;import com.artisan.model.Artisan; import com.artisan.result.CodeMsg; import com.artisan.result.Result; import com.artisan.service.ArtisanService;@RestController public class ArtisanController {@Autowiredprivate ArtisanService artisanService;@GetMapping("/test")public String test() {return "artisan test";}// 正常情況@GetMapping("/artisans")public Result<List<Artisan>> selectAllArtisan() {return Result.success(artisanService.getArtisanList());}// 模擬異常情況@GetMapping("/artisansError")public Result<List<Artisan>> selectAllArtisanError() {return Result.error(CodeMsg.SERVER_ERROR);}}Step9 測試
比較簡單,各層的單元測試就不寫了,直接啟動測試吧
啟動spring boot 工程
訪問 http://localhost:8080/artisans
日志:
訪問 http://localhost:8080/artisansError
代碼
https://github.com/yangshangwei/springbootMybatis
總結
以上是生活随笔為你收集整理的Spring Boot2.x-07Spring Boot2.1.2整合Mybatis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud【Finchle
- 下一篇: Spring Boot2.x-08Spr