javascript
(一)SpringBoot 整合 MyBatis
一、工具
IDE:idea、DB:mysql
二、創建SpringBoot工程
在Idea中使用SpringInitializr模板創建SpringBoot工程,依賴選擇如下:
?這里也可以不選JDBC這個依賴,但編譯器會提示下面的報錯:
是由于MySQL 這個jar 包依賴類型默認是runtime ,也就是說只有運行時生效,所以雖然這里報錯,但是不影響你代碼運行。
在pom.xml文件內將依賴改成compile就行:
- 來看下建好后的pom.xml
注意MyBatis依賴的命名和其他庫的命名不太一樣,是屬于xxx-spring-boot-stater模式的,這表示該starter是由第三方提供的。
三、修改配置文件
本文不使用application.properties文件,而使用更加簡潔的application.yml文件。將resource文件夾下原有的application.properties文件刪除,創建application.yml配置文件(備注:SpringBoot底層會把application.yml文件解析為application.properties),本文創建了兩個yml文件(application.yml和application-dev.yml),分別來看一下內容
application.yml(主配置文件)
spring:profiles:active: devapplication-dev.yml
server:port: 8080# 配置數據庫的基本信息 spring:datasource:username: rootpassword: 1234url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTCdriver-class-name: com.mysql.jdbc.Drivermybatis:# 這一行很重要,是告訴系統在哪里去找mapper.xml文件。mapper-locations: classpath:mapping/*Mapper.xml# 設置基本包(包別名)也就是為什么在mapper.xml中可以只寫一個User的原因。type-aliases-package: com.example.entity#showSql logging:level:com:example:mapper : debug兩個文件的意思是:
在項目中配置多套環境的配置方法:
因為現在一個項目有好多環境,開發環境、測試環境、準生產環境、生產環境,每個環境的參數不同,所以我們就可以把每個環境的參數配置到yml文件中,這樣在想用哪個環境的時候只需要在主配置文件中將用的配置文件寫上就行,如application.yml
筆記:在Spring Boot中多環境配置文件名需要滿足application-{profile}.yml的格式,其中{profile}對應你的環境標識,比如:
application-dev.yml:開發環境
application-test.yml:測試環境
application-prod.yml:生產環境
至于哪個具體的配置文件會被加載,需要在application.yml文件中通過spring.profiles.active屬性來設置,其值對應{profile}值。
還有配置文件中最好不要有中文注釋,會報錯(示例中的中文注釋是為了便于理解,運行時可以刪掉)
解決方法(未測試):spring boot application.yml文件中文注釋亂碼
四、編寫實體類業務代碼
數據庫表結構說明:
CREATE TABLE `user` (`id` int(32) NOT NULL AUTO_INCREMENT,`userName` varchar(32) NOT NULL,`passWord` varchar(50) NOT NULL,`realName` varchar(32) DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;我們的目的是:? 用get發一個帶有 id值的請求,服務器根據id值返回這個管理員的全部信息并用json的方式直接顯示在頁面上。
1、在resources下創建mapping文件夾,并新建UserMapper.xml(文件名稱必須與使用@Mapper注解的接口名稱一致),用于寫sql語句。
- 第三行的namespace很重要:它是指定這個xml所對應的是哪個dao(mapper)接口,需要與使用@Mapper注解的接口對應
- resultMap標簽:是做個pojo和數據庫表的對應(這里type="com.example.entity.User"可以寫全路徑,也可以只寫個type="User",不用寫全路徑是因為在application-dev.yml中做了設置了type-aliases-package: com.example.entity)
- select標簽:id對應的就是@Mapper注解的接口中的方法名;parameterType就是傳進來的參數類型;resultType是返回的結果類型
如果不想使用xml文件配置sql語句,也可以用注解的方式直接寫在mapper文件里,參考文章:最簡單的SpringBoot整合MyBatis教程
2、在com.example包下面新建entity.User類,代碼如下:
package com.example.entity;/*** @Author:wjup* @Date: 2018/9/26 0026* @Time: 14:39*/ public class User {private Integer id;private String userName;private String passWord;private String realName;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}public String getRealName() {return realName;}public void setRealName(String realName) {this.realName = realName;}@Overridepublic String toString() {return "User{" +"id=" + id +", userName='" + userName + '\'' +", passWord='" + passWord + '\'' +", realName='" + realName + '\'' +'}';} }3、在com.example包下面新建mapper.UserMapper類(dao層),代碼如下:
這個類可以使用@Repository注解,也可以使用@Mapper注解。目的都是為了讓spring能夠根據UserMapping.xml和這個接口動態生成這個接口的實現。
如果使用@Repository,就是讓Spring生成一個Bean,自動注入service(userService類中的@Autowired
? ? UserMapper userMapper)
如果使用@Mapper,則是使用MyBatis的注解
package com.example.mapper;import com.example.entity.User; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository;/*** @Author:wjup* @Date: 2018/9/26 0026* @Time: 15:20*/ @Mapper//指定這是一個操作數據庫的mapper public interface UserMapper {User Sel(int id); }4、在com.example包下面新建service.UserService類,代碼如下:
這里記得要加@Service注解,才會被Spring生成Bean,才能在Controller中使用@Authwired注入
然后看到這里注入了個userMapper。
package com.example.service;import com.example.entity.User; import com.example.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** @Author:wjup* @Date: 2018/9/26 0026* @Time: 15:23*/ @Service public class UserService {@AutowiredUserMapper userMapper;public User Sel(int id){return userMapper.Sel(id);} }5、在com.example包下面新建controller.UserController類,代碼如下:
@RestController是@responsebody+@Controller兩個注解的合體,一般就拿來直接傳json數據。? 為什么可以直接傳個對象過去呢?這是因為springboot內置了jackson模塊,可以在maven的依賴下看到這方面的jar包。
package com.example.controller;import com.example.entity.User; import com.example.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** @Author:wjup* @Date: 2018/9/26 0026* @Time: 14:42*/@RestController @RequestMapping("/testBoot") public class UserController {@Autowiredprivate UserService userService;@RequestMapping("getUser/{id}")public String GetUser(@PathVariable int id){return userService.Sel(id).toString();} }6、project最終框架結構,如下:
7、啟動類修改
下面在啟動類里加上注解用于給出需要掃描的mapper文件路徑@MapperScan("com.example.mapper")?
@MapperScan是MyBatis提供的設置注解。
package com.example;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 指定所掃的包,會自動掃描指定包下的全部標有@Component的類,并注冊成bean,* 當然包括@Component下的子注解@Service,@Repository,@Controller。**/ @MapperScan("com.example.mapper") //掃描的mapper @SpringBootApplication public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} }8、測試驗證
- 最后啟動,瀏覽器輸入地址看看吧:http://localhost:8080/testBoot/getUser/1
五、彩蛋
- 最后給個番外篇如何更改啟動時顯示的字符拼成的字母,就是更改下圖標紅框的地方
其實很好改,只需要在resources下新建一個txt文件就可以,命名為banner.txt,那這種字符該怎么拼出來呢,下面推薦一個網址,有這種工具,鏈接傳送門:字母轉字符。如下:
直接輸入要生成的字母,系統會自動轉換,然后復制下面轉換好的字符到新建的banner.txt文件中,重新啟動項目就可以了。
?參考文章:
SpringBoot整合Mybatis完整詳細版
Springboot與MyBatis簡單整合
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的(一)SpringBoot 整合 MyBatis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (三)docker-compose 启动
- 下一篇: (二)SpringBoot 整合 JPA