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


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

程序員必備技能有什么嗎?SpringBoot需要學習嗎?

來源:北大青鳥總部 2020年07月16日 10:49

摘要: 程序員必備技能有什么嗎?
伴隨著微服務(wù)的如此火爆的趨勢,SpringBoot逐漸成為了目前Java開發(fā)領(lǐng)域的必備技能,如果不會點SpringBoot感覺都沒臉在這個程序猿的森林里混。所以在掌握SpringBoot已經(jīng)成為了大家的共識,同時SpringBoot和其他的無縫集成也成了程序員的必備技能,比如:MyBatis、Redis等......
SpringBoot作為Spring家族的明星產(chǎn)品,一出世就受到了廣泛的關(guān)注。Spring作為這座森林里的"森林之王",除了自家的技術(shù)給予了無縫的鏈接的支持,對于其他優(yōu)秀的技術(shù),也是抱著開放的態(tài)度,支持各種優(yōu)秀的開源技術(shù)主動向SpringBoot的靠攏,MyBatis就是其中之一。
我們都知道在使用SpringBoot的過程中,常用的持久化解決方案主要有兩種,一種是Mybatis框架,另一個就是SpringData JPA。
而 SpringData Jpa和MyBatis最大的區(qū)別就是SpringData Jpa是Spring親生的,這個從名字的命名方式上也能看出來,當然是因為它們是一家人了。
為什么這么說呢?如果大家用過Mybatis的話應(yīng)該會發(fā)現(xiàn),Mybatis依賴的artifactId是mybatis-spring-boot-starter,而接下來我們要講的SpringDataJPA依賴的artifactId卻是spring-boot-starter-data-jpa,從這個名字關(guān)鍵字(mybatis、jpa)的順序上,我們就能看出來誰才是親生的。
雖然不是親生的,但是Mybatis憑借自己輕巧靈活的身姿(易上手、動態(tài)SQL等),贏得了廣大開發(fā)者的喜愛,大有奪嫡的之勢。
所以這篇文章咱么就來聊聊SpringBoot整合MyBatis的技術(shù)細節(jié)。

兵馬未動糧草先行

常言道,兵馬未動,糧草先行;沒有穩(wěn)重的大后方,前線的將士如何安心打仗,飯都沒了,即使打贏了也是會餓死的,所以在整合Mybatis之前呢,咱么還得先做一些準備工作,咱么首先使用SpringInitializer來構(gòu)建SpringBoot的基礎(chǔ)工程,然后在此基礎(chǔ)上再進行整合Mybatis
  1. 創(chuàng)建數(shù)據(jù)庫
  2. 建數(shù)據(jù)庫表
通常情況下,建議數(shù)據(jù)庫名字以英文命名,數(shù)據(jù)庫的名字就叫kgc(課工場拼音首字母),字符集選擇utf8,排序規(guī)則選擇utf8generalci。字符集和排序規(guī)則也可以不選使用默認設(shè)置。設(shè)置完成之后點擊“確定”。



建表
創(chuàng)建好數(shù)據(jù)庫之后,我們就要創(chuàng)建數(shù)據(jù)庫表,表名叫t_user,這張用戶表有三個屬性,分別是:
  • id   唯一標記
  • username 用戶名稱
  • age 年齡
并插入三條數(shù)據(jù):
# 數(shù)據(jù)庫腳本文件 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ù)庫連接池

做好準備工作之后,接下來最重要的就是要在pom.xml文件中添加數(shù)據(jù)庫驅(qū)動和數(shù)據(jù)庫連接池依賴。
添加MySQL驅(qū)動,這里如果不指定版本默認是8.0的版本,當然你也可以指定版本,8.0的版本這里有一問比較坑的問題:
  1. MySQL數(shù)據(jù)庫默認使用的是美國的時區(qū),而我們連接的時候用的是中國的北京時間,然后比美國晚上8個小時,所以當我們在連接數(shù)據(jù)庫的時候要設(shè)置一下時區(qū)為東八區(qū)ServerTimezone=UTC
  2. 驅(qū)動類
  • MySQL5.x的版本使用的驅(qū)動類是com.mysql.jdbc.Driver
  • MySQL8.x的版本使用的驅(qū)動類是com.mysql.cj.jdbc.Driver
所以這兩個問題需要大家去注意一下,以免出現(xiàn)莫名其妙的bug
<dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId> </dependency>
接著,添加數(shù)據(jù)庫連接池,這里咱們使用最火的阿里開源的Druid。
Druid首先是一個數(shù)據(jù)庫連接池。Druid是目前最好的數(shù)據(jù)庫連接池,在功能、性能、擴展性方面,都超過其他數(shù)據(jù)庫連接池,包括DBCP、C3P0、BoneCP、Proxool、JBossDataSource。Druid已經(jīng)在阿里巴巴部署了超過600個應(yīng)用,經(jīng)過一年多生產(chǎn)環(huán)境大規(guī)模部署的嚴苛考驗。Druid是阿里巴巴開發(fā)的號稱為監(jiān)控而生的數(shù)據(jù)庫連接池!
<dependency>  <groupId>com.alibaba</groupId>  <artifactId>druid-spring-boot-starter</artifactId>  <version>1.1.9</version></dependency>
集成Mybatis
添加Mybatis的依賴,我們使用最新的版本2.0.1
番外篇:
如果大家細心的話可能會發(fā)現(xiàn),通常我們在集成一些SpringBoot提供支持的技術(shù)的時候,所添加的依賴都是以spring-boot-starter開頭,格式:spring-boot-starter-xxx;但是剛才我們添加的Mybatis的依賴卻是mybatis-spring-boot-starter,是以mybatis開頭的,這個能其實是SpringBoot默認是不支持mybatis的,它默認支持的是它自己生態(tài)內(nèi)的持久層框架JPA,由于SpringBoot是大勢所趨,所以mybatis就主動去迎合SpringBoot生態(tài),自己開發(fā)了mybatis的stater。以后大家凡是看到xxx-spring-boot-starter的依賴,都是SpringBoot沒有主動提供支持的技術(shù)。
<dependency>  <groupId>org.mybatis.spring.boot</groupId>  <artifactId>mybatis-spring-boot-starter</artifactId>  <version>2.0.1</version> </dependency>
在pojo包下創(chuàng)建User對象,并實現(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)配置
# 端口號 server.port=8080 # mapper xml 文件地址 mybatis.mapper-locations=classpath*:mapper/*Mapper.xml # 數(shù)據(jù)庫url spring.datasource.url=jdbc:mysql://localhost:3306/kgc?characterEncoding=utf8&serverTimezone=UTC # 數(shù)據(jù)庫用戶名 spring.datasource.username=root # 數(shù)據(jù)庫密碼 spring.datasource.password=root # 數(shù)據(jù)庫驅(qū)動 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

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

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

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

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

最后一擊:測試

在測試之前我還需要在SpringBoot的主啟動類上加上一段注解配置@MapperScan,這個注解的意思是掃描我們com.example.demo.mapper包下的mapper接口并創(chuàng)建代理對象。
@SpringBootApplication @MapperScan(basePackages = {"com.example.demo.mapper"}) public class DemoApplication {  public static void main(String[] args) {      SpringApplication.run(DemoApplication.class, args);  } }
然后在我們的controller中寫一個測試的方法,可以直接使用@Autowired注解注入UserMapper,有同學可能會有這樣的疑問?接口是不能創(chuàng)建對象怎么能注入呢,因為在SpringBoot啟動的時候,會創(chuàng)建UserMapper的代理對象,所以實際上我們注入的是代理對象,這個跟咱么上一步說加@MapperScan正好可以對應(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)查詢出來數(shù)據(jù),這些數(shù)據(jù)和我們插入數(shù)據(jù)的數(shù)據(jù)是一樣的。這就說明我們SpringBoot集成Mybatis成功跑通了,是不是很簡單呢?



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


熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接
精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费
亚洲精品水蜜桃| 粉嫩av亚洲一区二区图片| 懂色一区二区三区免费观看| 国产精品免费一区二区三区观看| 手机看片福利永久国产日韩| 欧美一区二区私人影院日本| 亚洲欧洲精品天堂一级| 另类中文字幕网| 国产91亚洲精品一区二区三区| 色综合欧美在线| www成人在线观看| 亚洲成精国产精品女| 成人性生交大合| 色姑娘综合网| 欧美不卡激情三级在线观看| 亚洲一区二区在线免费观看视频| 国产风韵犹存在线视精品| 欧美1o一11sex性hdhd| 91精品欧美一区二区三区综合在| 亚洲美女精品一区| 国产大片一区二区| 色噜噜一区二区| 欧美sm极限捆绑bd| 亚洲成av人**亚洲成av**| 99精品视频在线免费观看| 中文字幕一区二区三区5566| 久久综合色播五月| 日韩电影免费一区| 国产精品国产三级国产专区53 | 亚洲一二三四在线观看| va亚洲va日韩不卡在线观看| 亚洲欧美日韩精品在线| 国产视频在线观看一区二区三区| 免费精品99久久国产综合精品| 国产精品免费一区二区三区四区 | 欧美国产禁国产网站cc| 精品无人区卡一卡二卡三乱码免费卡 | 国产精品麻豆免费版| 欧美日韩精品高清| 一片黄亚洲嫩模| 91老司机福利 在线| 欧美性猛片xxxx免费看久爱| 亚洲欧美日韩中文播放| 播五月开心婷婷综合| 91黄色免费网站| 亚洲三级理论片| caoporen国产精品视频| 欧美午夜电影在线播放| 一区二区三区日韩在线观看| 91在线码无精品| 在线观看视频一区二区欧美日韩| 亚洲欧美日韩中文播放| 91在线云播放| 欧美福利视频导航| 偷窥少妇高潮呻吟av久久免费| 国产精品12| 日韩免费看网站| 久久99热国产| 亚洲黄色一区二区三区| 中文字幕一区视频| 97精品久久久久中文字幕| 欧美伦理电影网| 日韩av电影天堂| 欧美激情第六页| 亚洲国产精品激情在线观看| 成人污视频在线观看| 欧美日韩视频在线第一区| 午夜电影一区二区三区| 免费久久一级欧美特大黄| 日本一区二区三区高清不卡| 成人高清免费观看| 欧美裸体一区二区三区| 日本va欧美va精品发布| 午夜一区二区三区| 亚洲美女屁股眼交| 精品国产一区二区三区久久久久久| 2024国产精品视频| 国产69精品久久久久777| 欧美三区免费完整视频在线观看| 亚洲va韩国va欧美va| 欧美美乳视频网站在线观看| 国产精品乱码一区二区三区软件| 7777奇米亚洲综合久久| 精品久久久久av影院 | 欧美日韩不卡一区| 免播放器亚洲一区| 综合一区中文字幕| 午夜精品福利视频网站| 亚洲 日韩 国产第一区| 一卡二卡三卡日韩欧美| 欧美精品欧美精品| 亚洲日本va午夜在线影院| 国产精品一级久久久| 欧美国产精品专区| 91av免费看| 国产午夜精品久久久久久久| jizzjizzjizz欧美| 亚洲精品一区二区三区在线观看| 高清视频一区二区| 日韩欧美在线不卡| 成人听书哪个软件好| 日韩小视频在线观看专区| 国产不卡在线视频| 日韩精品资源二区在线| 成人福利视频在线看| 26uuu国产一区二区三区| 91视频在线观看| 国产三级精品视频| 国产精品一区二区免费| 国产精品国产自产拍高清av| 精品乱子伦一区二区三区| 亚洲免费观看高清完整| 日韩精品另类天天更新| 亚洲成人黄色小说| 色8久久精品久久久久久蜜| 蜜乳av一区二区| 欧美日韩成人综合| 国产成人av福利| www国产精品av| 国产精华一区| 亚洲精品综合在线| 亚洲国产成人不卡| 美腿丝袜亚洲色图| 欧美电影在线免费观看| 成人av在线资源| 国产欧美日韩在线| 欧美美乳视频网站在线观看| 亚洲成人免费观看| 欧美亚洲禁片免费| 国产成人在线视频播放| 久久久久99精品国产片| 国产综合第一页| 亚洲国产日产av| 欧美性生活久久| 成人av网站大全| 国产精品视频免费| 视频一区二区三区在线观看| 免费成人你懂的| 欧美一区二区啪啪| 成人片在线免费看| 一区二区三区美女| 欧美在线免费播放| 丁香亚洲综合激情啪啪综合| 国产日韩精品视频一区| 麻豆av一区二区三区| 日本中文一区二区三区| 欧美一级理论片| 国产精品区一区二区三含羞草| 一区二区三区久久| 欧美吞精做爰啪啪高潮| jizzjizzjizz欧美| 亚洲精品你懂的| 欧美午夜精品久久久久久超碰| gogo大胆日本视频一区| 亚洲天堂网中文字| 在线观看视频91| 99精品国产热久久91蜜凸| 亚洲精品国产精品乱码不99| 欧美亚洲日本国产| 91丨porny丨最新| 亚洲国产毛片aaaaa无费看 | 久久精品网站免费观看| 欧美另类高清视频在线| 老司机精品视频线观看86 | 亚洲精品视频免费看| 欧美性大战久久久久久久蜜臀| 99精品久久久久久| 亚洲国产一二三| 日韩午夜中文字幕| 蜜桃传媒视频第一区入口在线看| 麻豆91在线看| 中文字幕精品—区二区四季| 在线观看免费91| 91麻豆成人久久精品二区三区| 亚洲一区二区三区精品在线| 欧美一区二区大片| 美国av一区二区三区| 国精品**一区二区三区在线蜜桃| 欧美激情自拍偷拍| 在线亚洲人成电影网站色www| 91免费看视频| 日韩精品一二区| 久久久久久免费网| 在线综合视频网站| 91精品黄色| 蜜臀av性久久久久蜜臀av麻豆| 久久久久久久综合日本| 自拍偷拍一区二区三区| 91在线看国产| 日本不卡一二三区黄网| 国产婷婷色一区二区三区在线| 色婷婷综合久久| 99电影在线观看| 久久国产夜色精品鲁鲁99| 国产精品乱人伦一区二区| 欧美日韩一区二区电影| 久久国产精品免费一区| 国产成人夜色高潮福利影视| 一区二区三区在线视频观看| 欧美大白屁股肥臀xxxxxx|