【SpringBoot 2】(十)數據庫相關

寫在前面在這里插入圖片描述🛫更多知識總結見SpringBoot 2專欄
🚕本篇知識點總結自尚硅谷雷神的視頻
🚒博主對于該知識尚在學習階段
🚄如果發現存在問題請毫不吝嗇的指出
🚀🚀扎哇太棗糕的博客首頁🚀🚀

文章目錄

  • 1 數據庫連接
    • 1.1 配置數據庫連接信息
    • 1.2 整合Druid數據源
  • 2 SpringBoot整合MyBatis
    • 2.1 配置文件開發
    • 2.2 純注解開發
  • 3 SpringBoot整合MyBatis-Plus
    • 3.1 普通的CRUD方法
    • 3.2 MyBatis-plus的分頁實現

1 數據庫連接

1.1 配置數據庫連接信息

??如果想要使用數據庫連接池連接數據庫進行SQL操作的話,在SpringBoot中需要經過如下三個步驟:
第一步: 導入jdbc開發的啟動場景

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

第二步: 導入數據庫驅動
??之所以框架底層沒有自動導入數據庫的驅動,是因為不同的數據庫使用的驅動不同,這需要用戶根據自己的需要來進行選擇。雖然框架沒有對指定數據庫驅動進行自動導入,但是對不同數據庫驅動的版本都進行了版本仲裁,也就是說我們可以直接導入無需定義版本號。當然也可以自定義版本號,maven會根據自身的就近依賴原則導入自定義的版本

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

第三步: 配置數據庫連接的配置文件

# 設置數據庫
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: rootpassword: "123456"

1.2 整合Druid數據源

??SpringBoot框架中默認使用的是Hikari數據源,這也就意味著如果要是想要修改數據源的話,無非就是兩種方法:自定義配置類、引入相應的啟動器依賴再配置配置文件

第一步: 引入Druid的啟動器依賴

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

第二步: 配置配置文件(選學,框架一般都有默認的配置)

spring:datasource:url: jdbc:mysql://localhost:3306/db_accountusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverdruid:aop-patterns: com.atguigu.admin.*  #監控SpringBeanfilters: stat,wall     # 底層開啟功能,stat(sql監控),wall(防火墻)stat-view-servlet:   # 配置監控頁功能enabled: truelogin-username: adminlogin-password: adminresetEnable: falseweb-stat-filter:  # 監控webenabled: trueurlPattern: /*exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'filter:stat:    # 對上面filters里面的stat的詳細配置slow-sql-millis: 1000logSlowSql: trueenabled: truewall:enabled: trueconfig:drop-table-allow: false

2 SpringBoot整合MyBatis

??mybatis開發的時候有兩種開發模式:使用配置文件進行開發、純注解開發,二者各有優點。使用配置文件進行開發在處理更加復雜的SQL語句的時候邏輯更加清晰,純注解開發比較適合簡單的SQL語句,于是我們可以在開發的時候混合使用兩種方法,這樣可以大大提升開發效率。

2.1 配置文件開發

第一步: 引入啟動器依賴
??小知識:SpringBoot官方的所有技術啟動器的命名都是spring-boot-starter-xxx而第三方技術的啟動器命名則是xxx-spring-boot-starter。值得注意的是:MyBatis的啟動器內部引用了dbc開發的啟動場景,所以無需重復引用

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

第二步: 編寫mapper接口并標注@Mapper注解

@Mapper
public interface StuMapper {Stu queryBySid(int sid);
}

第三步: 編寫映射文件并綁定mapper接口

<?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.xiaochen.mapper.StuMapper"><select id="queryBySid" resultType="com.xiaochen.domain.Stu">select * from stu where sid=#{sid}</select></mapper>

第四步: 在配置文件中指定之前MyBatis配置文件的各種信息

# mybatis的所有配置
mybatis:mapper-locations: classpath:com.xiaochen.mapper/*.xml# 所有的全局配置文件的配置項在這下面配置configuration:# 開啟駝峰命名數據庫中字段值的下劃線‘_’加字母會被認為是大寫map-underscore-to-camel-case: true

2.2 純注解開發

第一步: 引入啟動器依賴

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

第二步: 編寫mapper接口并標注@Mapper注解,使用對應的注解進行SQL語句操作

@Mapper
public interface StuMapper {@Select("select * from stu where sid=#{sid}")Stu queryBySid(int sid);
}

3 SpringBoot整合MyBatis-Plus

3.1 普通的CRUD方法

??MyBatis-plus的啟動器內部不止引用了dbc開發的啟動場景,還導入了MyBatis的啟動器,所以這兩個都無需再重復引用
第一步: 引入啟動器依賴

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version>
</dependency>

mapper層:

??編寫mapper接口標注@Mapper注解,并繼承BaseMapper類。這是MyBatis-plus的獨有方式,這樣做的好處是繼承之后直接使用父類中已經寫好的簡單CRUD方法,但是一些復雜的SQL業務還是需要使用映射文件來實現的,進一步提高了代碼開發的效率

@Mapper
public interface StuMapper extends BaseMapper<Stu> {}

??MyBatis-plus進行數據庫表的增刪改查的時候,默認把繼承BaseMapper類時傳進去的泛型名稱當做表名去查找,如果泛型與數據庫中的表名不對應的話,可以在實體類使用注解標識,除此之外注解還可以用來標識主鍵和非表中字段屬性

@NoArgsConstructor
@AllArgsConstructor
@Data
@TableName("stu")
public class Stu {// 表名該字段是定義的臨時變量,并不存在于數據庫的表中@TableField(exist = false)private String gender;// 標明表的主鍵@TableIdprivate int sid;private String sname;private String age;private String course;private int cardid;
}

??編寫映射文件并綁定mapper接口(如果有的話)。MyBatis-plus自動配置好了默認的mapper-locations,也就是映射文件的存放位置為classpath:/mapper/**/*.xml,于是我們就按照它的默認規則在靜態資源路徑下mapper文件夾下。本案例中沒有映射文件,于是就不創建

??如果有需要的話,還可以在配置文件中指定MyBatis-plus配置文件的各種信息

service層:
??service接口繼承IService類

public interface StuService extends IService<Stu> {}

??service的實現類先是繼承ServiceImpl并傳兩個泛型(mapper接口,實體類),然后實現service接口

@Service
public class StuServiceImpl extends ServiceImpl<StuMapper, Stu> implements StuService {}

controller層: 直接使用service繼承類的簡單方法

@Controller
public class TableController {@AutowiredStuServiceImpl stuService;/*** 點擊Advanced table按鈕,進行頁面轉發,并攜帶一個表格數據* @param model 用于存儲數據* @return 頁面轉發forward 到 /table/dynamic_table.html*/@GetMapping("/dynamic_table")public String dynamic_table(Model model) {// 從數據庫中查出user表進行展示List<Stu> list = stuService.list();model.addAttribute("stus", list);return "/table/dynamic_table";}
}

3.2 MyBatis-plus的分頁實現

??MyBatis-plus的分頁功能實現需要先自定義一個配置類,向容器中注冊一個Interceptor

@Configuration
public class MyBatisConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();paginationInnerInterceptor.setOverflow(true);paginationInnerInterceptor.setMaxLimit(500L);interceptor.addInnerInterceptor(paginationInnerInterceptor);return interceptor;}
}

然后就可以像普通的CRUD操作一樣,直接使用service繼承類的分頁的相關方法即可

@GetMapping("/dynamic_table")
public String dynamic_table(@RequestParam(value = "pn", defaultValue = "1")Integer pn,  Model model) {// 分頁從數據庫中查出stu表的所有數據,當前頁、總頁數、總條數……Page<Stu> stuPage = new Page<>(pn, 1);Page<Stu> page = stuService.page(stuPage);model.addAttribute("page", page);return "/table/dynamic_table";
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535090.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535090.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線性分組碼的最小漢明距為6_第二章 線性代數

2.1 標量、向量、矩陣和張量標量(scalar)一個標量就是一個單獨的數&#xff0c;用斜體表示標量。向量(vector)一個向量是一列有序排列的數&#xff0c;用粗寫的小寫字母表示。矩陣(matrix)矩陣式一個二維數組&#xff0c;其中的么一個元素由兩個索引(而非一個)所確定&#xff0…

【SpringBoot 2】(十一)單元測試JUnit 5 指標監控

寫在前面&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

sklearn中lstm_分別用sklearn和tensorflow做房價預測

原標題&#xff1a;分別用sklearn和tensorflow做房價預測本篇是后面用tensorflow做回歸時的一個參照&#xff0c;忍不住要說的是sklearn真是簡單好用&#xff0c;要不是他沒有卷積cnn等時髦模型&#xff0c;真是不想用其他家的了。經典的sklearn集成模型結果&#xff1a;真是又…

多個containers 共用一個pvc_2020阜新PVC-UH市政管廠家-煙臺塑膠

2020阜新PVC-UH市政管廠家煙臺金沃泉塑膠有限公司主要產品PVC-U、PVC-M、PVC-UH聚氯乙烯給給水管材、HDPE高密度聚乙烯給水管材、CPVC氯化聚氯乙烯、MPP高壓電力電纜護套管、PERT-Ⅱ型熱力管道、高分子托輥管、水處理膜殼管。公司為電網、南方電網、電建集團、建筑集團、五礦集…

【SpringBoot 2】(十二) profile功能 自定義starter

寫在前面&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

jpa transaction 回滾_我遇到的JPA中事務回滾的問題

在最近的項目中&#xff0c;做的是解析XML文件&#xff0c;解析過程中會有異常&#xff0c;比如&#xff1a;XML文件中節點的數據和與之對應的數據庫的字段中數據的類型不匹配&#xff1b;XML中數據長度超過數據庫定義的長度&#xff1b;有數據了的重復插入問題&#xff1b;讀取…

pb 怎么判斷是 小數_考試90分以上的孩子是怎么學數學的?聽聽老師怎么說?

一二年級&#xff0c;考試上九十分很輕松。但是&#xff0c;不少小朋友一上三年級&#xff0c;成績就落下來了。那么&#xff0c;我們來看看三年級起&#xff0c;考試還能夠保持在90分以上的孩子是怎么學習數學的吧&#xff01;第一&#xff0c;計算能力過關通過這兩張圖片的對…

快速上手Mybatis-Plus 入門案例

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

交換機分布緩存_網絡交換機緩存在數據中心的作用

什么產生了緩存&#xff1f;網絡交換機要配置多少緩存才夠用&#xff1f;緩存容量是否有標準可以衡量&#xff1f; 當網絡交換機接口收到超出其所能處理的流量后&#xff0c;它會選擇要么將其緩存&#xff0c;或者將其丟棄。 緩存通常都是因為網絡接口速率不同造成的&#xff0…

黑蘋果 選擇語言 點不了_什么是天然的“黑鉆”?—科普貼

天然黑鉆也被成為“碳酸氫”&#xff0c;具有與白鉆相同的化學成分&#xff0c;然而黑鉆石的晶體結構是不同的&#xff0c;這意味著它們由許多小晶體組成&#xff0c;它們以隨機的形式粘在一起&#xff0c;而不是一個具有可識別自然線的固體錐形。天然黑鉆石有極高的含物&#…

sim卡沒壞但蘋果手機無服務_解決手機插SIM卡后都顯示“無SIM卡”的故障問題

故障現象顧客描述手機插SIM卡后都顯示“無SIM卡”。維修過程引起插入SIM卡卻顯示“無SIM卡”的故障&#xff0c;除了可能是SIM卡座的供電、時鐘、復位及SIM卡插入檢測信號不正常導致外&#xff0c;還有可能是基帶不正常導致的。插上手機卡&#xff0c;左上角提示“無SIM卡”&am…

Mybatis-Plus實現簡單的增刪改查 實體類上的注解

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

webpack 讀取文件夾下的文件_webpack基本介紹及使用

1.什么是webpackwebpack是一個前端資源加載/打包工具。它根據模塊的依賴關系進行靜態分析&#xff0c;然后將這些模塊按照指定的規則生成對應的靜態資源。從上圖看出&#xff0c;webpack可以將多種靜態資源js&#xff0c;css&#xff0c;less轉換成一個靜態文件&#xff0c;減少…

conda失敗說沒有寫權限_愛情中,為什么男生表白失敗,女生還說可以繼續做朋友,想過沒有...

在愛情中&#xff0c;不是每個男生都是幸運的&#xff0c;也不是每次的表白都是如你所愿的。有成功總有失敗&#xff0c;成功是喜悅的&#xff0c;但是失敗卻是痛苦的。不過有的時候男生和女生表白以后&#xff0c;女生對男生說了這樣的一段&#xff0c;其實我希望以后我們還是…

Mybatis-Plus中Wrapper條件構造器的使用

寫在前面 &#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680…

springboot設置默認值_線上Bug無法復現?老司機教你一招,SpringBoot遠程調試不用愁!...

前言在部署線上項目時&#xff0c;相信大家都會遇到一個問題&#xff0c;線上的 Bug 但是在本地不會復現&#xff0c;多么無奈。此時最常用的就是取到前端傳遞的數據用接口測試工具測試&#xff0c;比如 POSTMAN&#xff0c;復雜不&#xff0c;難受不&#xff1f;今天陳某教你一…

Mybatis-Plus的分頁 樂觀鎖插件 通用枚舉 多數據源

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

學python哪個網站好-有哪些值得推薦的Python學習網站|

現在那個網站可以學習python爬蟲&#xff1f; 為大家分享Python學習經驗: 1、尋找一本Python書籍&#xff0c;要求淺顯易懂、全面細致程較好&#xff0c;專注于這一本&#xff0c;從頭開始研究&#xff0c;把整本書掌握透徹。 2、找一個項目練手&#xff0c;熟悉基礎后&#xf…

等待的操作過時_不會過時的6種網站seo優化操作

SEO優化一直在變化&#xff0c;百度和谷歌的算法也在不斷的迭代更新&#xff0c;所以競爭永遠不會停止。今天小編就來給大家分享一下&#xff0c;6種不會過時的網站seo優化操作。1.保持正常優化為網站訪客提供高質量的內容、卓越的用戶體驗和安全性以及卓越的技術網站。這可能需…

java的for循環取出數據只是拿到最后一個_一問SQL優化就無從藏身?那只是你對原理的精髓掌握不深

?曾幾何時&#xff0c;我信誓旦旦的認為只要 SQL 寫的好&#xff0c;面試過程永不倒。結果在一次又一次的征途中&#xff0c;「最終還是以完敗落下帷幕」。結果都源于注重使用而忽略原理&#xff0c;從而不知也不了解「SQL」優化應如何面對。讀文的你&#xff0c;如今可有這樣…