精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费


學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

SpringBoot集成Mybatis這一篇就夠了!

來(lái)源:北大青鳥總部 2023年03月03日 14:08

摘要: Spring作為這座森林里的"森林之王",除了自家的技術(shù)給予了無(wú)縫的鏈接的支持,對(duì)于其他優(yōu)秀的技術(shù),也是抱著開放的態(tài)度,支持各種優(yōu)秀的開源技術(shù)主動(dòng)向SpringBoot的靠攏,MyBatis就是其中之一。

伴隨著微服務(wù)的如此火爆的趨勢(shì),SpringBoot逐漸成為了目前Java開發(fā)領(lǐng)域的必備技能,如果不會(huì)點(diǎn)SpringBoot感覺都沒(méi)臉在這個(gè)程序猿的森林里混。所以在掌握SpringBoot已經(jīng)成為了大家的共識(shí),同時(shí)SpringBoot和其他的無(wú)縫集成也成了程序員的必備技能,比如:MyBatis、Redis等......

SpringBoot作為Spring家族的明星產(chǎn)品,一出世就受到了廣泛的關(guān)注。Spring作為這座森林里的"森林之王",除了自家的技術(shù)給予了無(wú)縫的鏈接的支持,對(duì)于其他優(yōu)秀的技術(shù),也是抱著開放的態(tài)度,支持各種優(yōu)秀的開源技術(shù)主動(dòng)向SpringBoot的靠攏,MyBatis就是其中之一。



我們都知道在使用SpringBoot的過(guò)程中,常用的持久化解決方案主要有兩種,一種是Mybatis框架,另一個(gè)就是SpringData JPA。

而 SpringData Jpa和MyBatis最大的區(qū)別就是SpringData Jpa是Spring親生的,這個(gè)從名字的命名方式上也能看出來(lái),當(dāng)然是因?yàn)樗鼈兪且患胰肆恕?/p>

為什么這么說(shuō)呢?如果大家用過(guò)Mybatis的話應(yīng)該會(huì)發(fā)現(xiàn),Mybatis依賴的artifactId是mybatis-spring-boot-starter,而接下來(lái)我們要講的SpringDataJPA依賴的artifactId卻是spring-boot-starter-data-jpa,從這個(gè)名字關(guān)鍵字(mybatis、jpa)的順序上,我們就能看出來(lái)誰(shuí)才是親生的。

雖然不是親生的,但是Mybatis憑借自己輕巧靈活的身姿(易上手、動(dòng)態(tài)SQL等),贏得了廣大開發(fā)者的喜愛,大有奪嫡的之勢(shì)。



所以這篇文章咱么就來(lái)聊聊SpringBoot整合MyBatis的技術(shù)細(xì)節(jié)。


兵馬未動(dòng)糧草先行

常言道,兵馬未動(dòng),糧草先行;沒(méi)有穩(wěn)重的大后方,前線的將士如何安心打仗,飯都沒(méi)了,即使打贏了也是會(huì)餓死的,所以在整合Mybatis之前呢,咱么還得先做一些準(zhǔn)備工作,咱么首先使用SpringInitializer來(lái)構(gòu)建SpringBoot的基礎(chǔ)工程,然后在此基礎(chǔ)上再進(jìn)行整合Mybatis

  1. 創(chuàng)建數(shù)據(jù)庫(kù)

  2. 建數(shù)據(jù)庫(kù)表

通常情況下,建議數(shù)據(jù)庫(kù)名字以英文命名,數(shù)據(jù)庫(kù)的名字就叫kgc(課工場(chǎng)拼音首字母),字符集選擇utf8,排序規(guī)則選擇utf8generalci。字符集和排序規(guī)則也可以不選使用默認(rèn)設(shè)置。設(shè)置完成之后點(diǎn)擊“確定”。



建表

創(chuàng)建好數(shù)據(jù)庫(kù)之后,我們就要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)表,表名叫t_user,這張用戶表有三個(gè)屬性,分別是:

  • id 唯一標(biāo)記

  • username 用戶名稱

  • age 年齡


并插入三條數(shù)據(jù):

# 數(shù)據(jù)庫(kù)腳本文件
SET NAMES utf8mb4;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`age` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
# 插入數(shù)據(jù)
INSERT INTO `t_user`(username, age) VALUES ('張三', '18');
INSERT INTO `t_user`(username, age) VALUES ( '李四', '20');
INSERT INTO `t_user` (username, age) VALUES ('王五', '22');


配置數(shù)據(jù)庫(kù)連接池

做好準(zhǔn)備工作之后,接下來(lái)最重要的就是要在pom.xml文件中添加數(shù)據(jù)庫(kù)驅(qū)動(dòng)和數(shù)據(jù)庫(kù)連接池依賴。

添加MySQL驅(qū)動(dòng),這里如果不指定版本默認(rèn)是8.0的版本,當(dāng)然你也可以指定版本,8.0的版本這里有一問(wèn)比較坑的問(wèn)題:

  1. MySQL數(shù)據(jù)庫(kù)默認(rèn)使用的是美國(guó)的時(shí)區(qū),而我們連接的時(shí)候用的是中國(guó)的北京時(shí)間,然后比美國(guó)晚上8個(gè)小時(shí),所以當(dāng)我們?cè)谶B接數(shù)據(jù)庫(kù)的時(shí)候要設(shè)置一下時(shí)區(qū)為東八區(qū)ServerTimezone=UTC

  2. 驅(qū)動(dòng)類

  • MySQL5.x的版本使用的驅(qū)動(dòng)類是com.mysql.jdbc.Driver

  • MySQL8.x的版本使用的驅(qū)動(dòng)類是com.mysql.cj.jdbc.Driver

所以這兩個(gè)問(wèn)題需要大家去注意一下,以免出現(xiàn)莫名其妙的bug

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>


接著,添加數(shù)據(jù)庫(kù)連接池,這里咱們使用最火的阿里開源的Druid。

Druid首先是一個(gè)數(shù)據(jù)庫(kù)連接池。Druid是目前最好的數(shù)據(jù)庫(kù)連接池,在功能、性能、擴(kuò)展性方面,都超過(guò)其他數(shù)據(jù)庫(kù)連接池,包括DBCP、C3P0、BoneCP、Proxool、JBossDataSource。Druid已經(jīng)在阿里巴巴部署了超過(guò)600個(gè)應(yīng)用,經(jīng)過(guò)一年多生產(chǎn)環(huán)境大規(guī)模部署的嚴(yán)苛考驗(yàn)。Druid是阿里巴巴開發(fā)的號(hào)稱為監(jiān)控而生的數(shù)據(jù)庫(kù)連接池!

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>


集成Mybatis

添加Mybatis的依賴,我們使用最新的版本2.0.1

番外篇:

如果大家細(xì)心的話可能會(huì)發(fā)現(xiàn),通常我們?cè)诩梢恍㏒pringBoot提供支持的技術(shù)的時(shí)候,所添加的依賴都是以spring-boot-starter開頭,格式:spring-boot-starter-xxx;但是剛才我們添加的Mybatis的依賴卻是mybatis-spring-boot-starter,是以mybatis開頭的,這個(gè)能其實(shí)是SpringBoot默認(rèn)是不支持mybatis的,它默認(rèn)支持的是它自己生態(tài)內(nèi)的持久層框架JPA,由于SpringBoot是大勢(shì)所趨,所以mybatis就主動(dòng)去迎合SpringBoot生態(tài),自己開發(fā)了mybatis的stater。以后大家凡是看到xxx-spring-boot-starter的依賴,都是SpringBoot沒(méi)有主動(dòng)提供支持的技術(shù)。

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>


在pojo包下創(chuàng)建User對(duì)象,并實(shí)現(xiàn)序列化接口Serializable

public class User implements Serializable{
private Integer id; //用戶id
private String username; //用戶名
private Integer age; //年齡
// 省略 setter、getter方法
}


配置數(shù)據(jù)源和mybatis的配置

在application.properties屬性配置文件中配置數(shù)據(jù)源和mybatis相關(guān)配置

# 端口號(hào)
server.port=8080


# mapper xml 文件地址
mybatis.mapper-locations=classpath*:mapper/*Mapper.xml


# 數(shù)據(jù)庫(kù)url
spring.datasource.url=jdbc:mysql://localhost:3306/kgc?characterEncoding=utf8&serverTimezone=UTC
# 數(shù)據(jù)庫(kù)用戶名
spring.datasource.username=root
# 數(shù)據(jù)庫(kù)密碼
spring.datasource.password=root
# 數(shù)據(jù)庫(kù)驅(qū)動(dòng)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

創(chuàng)建UserMapper接口和對(duì)應(yīng)的UserMapper.xml文件

在mapper包下創(chuàng)建UserMapper接口,并在接口中定義各一個(gè)方法



并在resource包下創(chuàng)建依次創(chuàng)建com/example/demo/mapper/UserMapper.xml



這里要注意的是接口名稱要和映射文件的名稱一致


最后一擊:測(cè)試

在測(cè)試之前我還需要在SpringBoot的主啟動(dòng)類上加上一段注解配置@MapperScan,這個(gè)注解的意思是掃描我們com.example.demo.mapper包下的mapper接口并創(chuàng)建代理對(duì)象。

@SpringBootApplication
@MapperScan(basePackages = {"com.example.demo.mapper"})
public class DemoApplication {


public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}


然后在我們的controller中寫一個(gè)測(cè)試的方法,可以直接使用@Autowired注解注入U(xiǎn)serMapper,有同學(xué)可能會(huì)有這樣的疑問(wèn)?接口是不能創(chuàng)建對(duì)象怎么能注入呢,因?yàn)樵赟pringBoot啟動(dòng)的時(shí)候,會(huì)創(chuàng)建UserMapper的代理對(duì)象,所以實(shí)際上我們注入的是代理對(duì)象,這個(gè)跟咱么上一步說(shuō)加@MapperScan正好可以對(duì)應(yīng)上的。

@RestController
public class DemoController {


@Autowired
private UserMappper userMappper;
/**
* 查詢所有用戶信息
*/
@GetMapping("/hello")
public List<User> hello() {
List<User> users = userMappper.selectUserList();
return users;
}
}


然后在瀏覽器地址欄輸入http://localhost:8080/hello,就可以看到瀏覽器已經(jīng)查詢出來(lái)數(shù)據(jù),這些數(shù)據(jù)和我們插入數(shù)據(jù)的數(shù)據(jù)是一樣的。這就說(shuō)明我們SpringBoot集成Mybatis成功跑通了,是不是很簡(jiǎn)單呢?



在實(shí)際的開發(fā)過(guò)程中,SpringBoot和MyBatis的整合也是這么簡(jiǎn)單。如果你認(rèn)真看完這篇文章,那么恭喜你又掌握了一新技能!


標(biāo)簽: springboot
熱門班型時(shí)間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計(jì)全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運(yùn)營(yíng)班 爆滿開班
報(bào)名優(yōu)惠
免費(fèi)試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接
精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费
久久久久久夜精品精品免费| 日日夜夜精品视频免费| 七七婷婷婷婷精品国产| 不卡一区在线观看| 欧美xxxx黑人又粗又长密月 | 色婷婷综合久久久久中文 | 国产乱人伦偷精品视频免下载| 国产传媒一区| 欧洲精品在线观看| 亚洲国产成人私人影院tom| 日韩av电影一区| 91视频一区二区| 一本一本大道香蕉久在线精品| 26uuu色噜噜精品一区| 亚洲国产一区二区在线播放| 成人在线综合网| 五月婷婷一区| 久久久久青草大香线综合精品| 日韩中文字幕麻豆| 波多野结衣成人在线| 欧美亚洲国产一区二区三区va| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲国产你懂的| 国产婷婷一区二区| 久久久久久久久一| 日韩视频在线永久播放| 欧美精选午夜久久久乱码6080| 中文字幕一区二区三区乱码| 色姑娘综合av| 免费av在线一区二区| 国产精品久久国产精麻豆99网站| 亚洲一区二区欧美| 99re热视频这里只精品| 91国偷自产一区二区三区观看| 亚洲国产精品精华液ab| 国产又黄又大久久| 日韩hmxxxx| 久久精品夜色噜噜亚洲aⅴ| 美女视频一区二区| 欧美精品欧美精品| 久久先锋影音av| 精品在线免费观看| 日韩福利二区| 国产欧美一区视频| 国产精品一二三在| 一区二区精品国产| 中文字幕中文字幕一区| 成人一级视频在线观看| 色欧美片视频在线观看| 亚洲天堂中文字幕| 91小视频免费看| 欧美片在线播放| 五月婷婷激情综合网| 精品欧美日韩| www成人在线观看| 国产一区在线看| 色综合久久88色综合天天| 亚洲手机成人高清视频| 91欧美激情一区二区三区成人| 欧美妇女性影城| 日本va欧美va瓶| 视频一区视频二区视频三区高| 中文字幕欧美激情| av电影在线不卡| 91精品国产日韩91久久久久久| 奇米影视一区二区三区小说| 日本一区二区三区四区在线观看| 欧美国产1区2区| 99久久精品国产网站| 91麻豆精品91久久久久久清纯| 免费成人美女在线观看.| 先锋影音网一区| 亚洲另类春色校园小说| 国产精品推荐精品| 国产日韩欧美综合一区| av午夜一区麻豆| 日韩一区二区在线观看视频| 国内精品国产三级国产a久久| 色乱码一区二区三区88| 亚洲国产精品一区二区www | 另类小说综合欧美亚洲| 亚洲欧美久久234| 亚洲自拍另类综合| 欧美午夜精品久久久久免费视| 国产欧美日韩三级| 91成人理论电影| 久久久久久久久久电影| 不卡视频一二三| 日韩欧美一级在线播放| 国产盗摄精品一区二区三区在线 | 欧美国产一二三区| 成人免费在线观看入口| 国产在线一区二区三区播放| 日本一区二区成人在线| 俄罗斯精品一区二区| 欧美激情综合在线| 99在线观看| 日本一区二区动态图| 国产精品午夜av在线| 国产精品久线在线观看| 黑人另类av| 亚洲免费观看视频| 品久久久久久久久久96高清| 亚洲精品一二三四区| 欧美人xxxxx| 亚洲一区二区在线观看视频| 色狠狠久久av五月综合|| 亚洲图片一区二区| 一本一道久久a久久精品综合| 天堂在线一区二区| 91成人免费在线视频| 久久不见久久见中文字幕免费| 精品视频123区在线观看| 激情欧美一区二区| 日韩一区二区三区视频在线观看| 成人免费看黄yyy456| 久久久午夜精品| 国产欧美日韩一区| 亚洲精品乱码久久久久久久久| 亚洲电影网站| 日本不卡123| 欧美精品丝袜中出| 成人国产精品视频| 日本一区二区成人在线| 蜜桃av久久久亚洲精品| 亚洲成人免费视| 欧美写真视频网站| 福利一区在线观看| 国产片一区二区| 欧美日韩电影一区二区| 天堂久久久久va久久久久| 欧美视频中文一区二区三区在线观看 | 蜜臀久久99精品久久久久宅男| 欧美三级一区二区| 成人视屏免费看| 中文在线资源观看网站视频免费不卡| 久久久久久精| 日韩黄色片在线观看| 欧美另类z0zxhd电影| 96av麻豆蜜桃一区二区| 亚洲视频一区在线观看| 伊人久久大香线蕉成人综合网| 韩国成人在线视频| 久久婷婷国产综合精品青草| 国产亚洲情侣一区二区无| 亚洲va中文字幕| 在线播放国产精品二区一二区四区| 99精品热视频| 亚洲精品国产第一综合99久久| 91久久一区二区| 白白色 亚洲乱淫| 亚洲欧美欧美一区二区三区| 色综合久久99| 成人av网站在线观看| 亚洲欧美综合在线精品| 色综合色综合色综合| 成人性视频网站| 成人欧美一区二区三区黑人麻豆 | 国产精品美女久久福利网站| 亚洲图片欧洲图片日韩av| 国产一区二区三区在线观看精品| 久久久久久毛片| 日韩亚洲不卡在线| 国产精品一区二区无线| 中文字幕国产一区| 中文字幕精品一区日韩| 成人免费视频一区二区| 亚洲欧美激情插| 欧美日韩一区二区欧美激情| 成人在线免费网站| 日韩中文字幕区一区有砖一区 | 午夜电影一区二区| 日韩色视频在线观看| 久久久久久九九| 韩国精品在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 色综合久久中文字幕综合网| 不卡在线观看av| 亚洲国产三级在线| 精品少妇一区二区三区视频免付费| 久久伊人资源站| 国产乱对白刺激视频不卡| 亚洲欧美综合色| 欧美视频一区二| 国产精品一区二区三区在线| 免费在线视频一区| 欧美韩国日本不卡| 欧美视频你懂的| 精品国产免费人成电影在线观...| 久久电影网站中文字幕| 国产精品私房写真福利视频| 欧美丝袜自拍制服另类| 狠狠色综合网站久久久久久久| 极品尤物av久久免费看| 中文字幕一区二区三区不卡| 欧美蜜桃一区二区三区| 欧美aaaaa喷水| 成人av电影免费在线播放| 亚洲成av人**亚洲成av**| 久久久精品黄色|