《Java輕量級框架技術(shù)與應(yīng)用》 課件 項(xiàng)目五 Spring Boot數(shù)據(jù)訪問與事務(wù)_第1頁
《Java輕量級框架技術(shù)與應(yīng)用》 課件 項(xiàng)目五 Spring Boot數(shù)據(jù)訪問與事務(wù)_第2頁
《Java輕量級框架技術(shù)與應(yīng)用》 課件 項(xiàng)目五 Spring Boot數(shù)據(jù)訪問與事務(wù)_第3頁
《Java輕量級框架技術(shù)與應(yīng)用》 課件 項(xiàng)目五 Spring Boot數(shù)據(jù)訪問與事務(wù)_第4頁
《Java輕量級框架技術(shù)與應(yīng)用》 課件 項(xiàng)目五 Spring Boot數(shù)據(jù)訪問與事務(wù)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

項(xiàng)目五

SpringBoot數(shù)據(jù)訪問與事務(wù)認(rèn)識大數(shù)據(jù)采集與預(yù)處理目錄Content1搭建數(shù)據(jù)采集與預(yù)處理開發(fā)環(huán)境2項(xiàng)目導(dǎo)言零JdbcTemplate提供了眾多方法事務(wù)訪問數(shù)據(jù)庫的操作序列事務(wù)+數(shù)據(jù)庫,以便保持?jǐn)?shù)據(jù)的完整性學(xué)習(xí)目標(biāo)零知識目標(biāo)了解SpringDataJDBC的概念與使用方法;了解Druid的基本內(nèi)容;熟悉Druid的基本配置參數(shù)的使用;掌握J(rèn)DBCTemplate的使用場景;熟悉MyBatis的優(yōu)缺點(diǎn)以及架構(gòu)組成;掌握SpringBoot整合MyBatis的方法;了解MyBatis-Plus的概念;熟悉MyBatis-Plus中的基本配置接口BaseMapper;了解JPA的概念;掌握SpringDataJPA的接口使用方法;了解SpringBoot的事務(wù)的概念;熟悉事務(wù)的傳播機(jī)制與隔離級別;掌握Spring中實(shí)現(xiàn)事務(wù)的方式。能力目標(biāo)具備獨(dú)立為SpringBoot整合Druid數(shù)據(jù)庫連接池的能力;具備獨(dú)立為SpringBoot整合MyBatis-Plus的能力;具備在任意場景下靈活使用SpringDataJPA接口的能力;具備獨(dú)立在SpringBoot中實(shí)現(xiàn)事務(wù)的能力。素質(zhì)目標(biāo)具備精益求精、堅(jiān)持不懈的精神;具有獨(dú)立解決問題的能力;具備靈活的思維和處理分析問題的能力;具有責(zé)任心。任務(wù)1:智慧信息管理系統(tǒng)的部門管理壹MyBatis概述任務(wù)技能MyBatis是一個(gè)開源的Java持久層框架,用于簡化數(shù)據(jù)庫操作和對象關(guān)系映射(ORM)的過程。MyBatis-plusMyBatis-Plus是國人在MyBatis基礎(chǔ)上進(jìn)行增強(qiáng)開發(fā)的工具,旨在簡化開發(fā)過程并提供更好的性能。任務(wù)1-1:MyBatis概述壹1mybatis簡介MyBatis是一個(gè)開源的Java持久層框架,用于簡化數(shù)據(jù)庫操作和對象關(guān)系映射(ORM)的過程。任務(wù)1-1:MyBatis概述壹2mybatis主要功能和優(yōu)點(diǎn)1支持存儲過程2高級映射3支持XML文件或注解配置4將接口和Java的POJO映射到數(shù)據(jù)庫記錄5減少JDBC代碼任務(wù)1-1:MyBatis概述壹3MyBatis架構(gòu)這種設(shè)計(jì)可以讓MyBatis實(shí)現(xiàn)更好的模塊化和可維護(hù)性,同時(shí)也可以提供更好的性能和可靠性。任務(wù)1-1:MyBatis概述壹4SpringBoot整合MyBatis第一步:新建數(shù)據(jù)庫mydb,并在該數(shù)據(jù)庫中創(chuàng)建表名為user,并插入數(shù)據(jù)。第二步:創(chuàng)建項(xiàng)目創(chuàng)建SpringBoot項(xiàng)目,在Dependencies中選擇MySQL和MyBatis的依賴,完成項(xiàng)目搭建。如右圖所示任務(wù)1-1:MyBatis概述壹第三步:在application.yml配置數(shù)據(jù)庫文件,代碼如下。spring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverusername:rootpassword:rooturl:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8編寫User實(shí)體類。創(chuàng)建pojo包,在pojo包中創(chuàng)建于user表對應(yīng)的User類,代碼如下。publicclassUser{privateIntegerid;privateStringname;privateStringemail;privateStringtel;//忽略getter、setter和toString方法。}任務(wù)1-1:MyBatis概述壹第四步:整合MyBatis1.使用注解的方式整合MyBatis創(chuàng)建Mapper接口,創(chuàng)建一個(gè)mapper包,在包下創(chuàng)建一個(gè)UserMapper接口,在接口類上添加了@Mapper,在編譯之后會生成相應(yīng)的接口實(shí)現(xiàn)類,能夠被SpringBoot自動掃描到Spring容器中。編寫單元測試進(jìn)行測試。2.使用的配置文件的方式整合MyBatis創(chuàng)建一個(gè)Mapper接口文件,在mapper包下創(chuàng)建一個(gè)名為ConsumerMapper的接口文件,創(chuàng)建一個(gè)查詢方法和一個(gè)添加方法。創(chuàng)建XML映射文件。配置XML映射文件的路徑。編寫單元測試進(jìn)行測試。0102任務(wù)1-2:MyBatis-plus壹MyBatis-Plus是國人在MyBatis基礎(chǔ)上進(jìn)行增強(qiáng)開發(fā)的工具,旨在簡化開發(fā)過程并提供更好的性能。ABCD豐富的條件構(gòu)造器E支持高級查詢提供無SQL的CRUD操作內(nèi)置代碼生成器性能分析插件除了以上的功能,MyBatis-Plus還提供了一些其他的增強(qiáng)特性,例如性能分析插件、全局配置、多數(shù)據(jù)源支持等,可以根據(jù)具體需求進(jìn)行配置和使用。任務(wù)1-2:MyBatis-plus壹在MyBatis-Plus中,基本配置主要包括以下幾個(gè)方面:在配置文件中配置數(shù)據(jù)庫連接信息,包括數(shù)據(jù)庫驅(qū)動、URL、用戶名和密碼等。數(shù)據(jù)源配置可以通過MyBatis-Plus提供的MybatisConfiguration類進(jìn)行配置。MyBatis配置配置MyBatis-Plus掃描Mapper接口的包路徑,使其能夠自動掃描并注冊到Spring容器中。Mapper接口掃描MyBatis-Plus提供了一個(gè)分頁插件,可以方便地進(jìn)行分頁查詢。分頁插件配置MyBatis-Plus支持邏輯刪除功能,可以通過配置邏輯刪除的字段和邏輯刪除的值來開啟邏輯刪除。邏輯刪除配置MyBatis-Plus支持自動填充功能,可以在插入或更新數(shù)據(jù)時(shí)自動填充某些字段的值。自動填充配置任務(wù)1-2:MyBatis-plus壹MyBatis-plus中的基本配置接口BaseMapper,包含了基本的CRUD操作方法,提供了一些常用的數(shù)據(jù)庫操作方法。BaseMapper接口的主要方法如下。方法描述insert插入一條記錄deleteById根據(jù)ID刪除一條記錄selectById根據(jù)ID查詢一條記錄selectList查詢多條記錄selectPage分頁查詢記錄selectCount查詢記錄總數(shù)updateById更新一條記錄selectBatchIds根據(jù)ID列表查詢記錄這些方法提供了常見的增刪改查操作,被其他Mapper接口繼承后可以直接使用這些方法而無需重新編寫相同的代碼。任務(wù)1-2:MyBatis-plus壹接下來整合MyBatis-plus。在使用SpringBoot中,整合MyBatis-plus步驟如下所示。第一步:創(chuàng)建一個(gè)普通的SpringBoot項(xiàng)目,創(chuàng)建完成后,在pom.xml中引入MyBatis-plus依賴。<!--MyBatis-Plus依賴--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.2</version></dependency>第二步:application.yml配置,代碼如下所示。spring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverusername:rootpassword:rooturl:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8任務(wù)1-2:MyBatis-plus壹第三步:創(chuàng)建一個(gè)繼承自BaseMapper接口的Mapper接口,例如:importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importorg.apache.ibatis.annotations.Mapper;importorg.springframework.stereotype.Repository;@Repository@MapperpublicinterfaceUserMapperextendsBaseMapper<User>{}第四步:創(chuàng)建UserMapper接口,代碼如下所示。@Repository@MapperpublicinterfaceUserMapperextendsBaseMapper<User>{//booleanselectById(intid);}任務(wù)1-2:MyBatis-plus壹第五步:編寫測試類,進(jìn)行整合后的測試,代碼如下所示。importcom.example.springbootmybatic.mapper.ConsumerMapper;importorg.junit.jupiter.api.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTestclassSpringbootMybaticApplicationTests{@AutowiredprivateUserMapperuserMapper;@TestpublicvoidselectByID(){System.out.println(userMapper.selectById(1));}}測試結(jié)果如圖所示。任務(wù)2:智慧信息管理系統(tǒng)的角色管理貳SpringDataJDBC任務(wù)技能SpringDataJDBC提供了一些通用的CRUD操作,如save、delete、findById等,以及一些高級特性。Druid概述Druid最初是阿里巴巴開源平臺上的一個(gè)數(shù)據(jù)庫連接池實(shí)現(xiàn),它結(jié)合了C3P0、DBCP、PROXOOL等DB池的優(yōu)點(diǎn)。JdbcTemplateJdbcTemplate是Spring框架自帶的對JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對數(shù)據(jù)庫的操作更加方便、友好,效率也不錯(cuò)。任務(wù)2-1:SpringDataJDBC貳SpringDataJDBC是SpringData提供的一個(gè)基于JDBC的數(shù)據(jù)訪問框架,它簡化了數(shù)據(jù)訪問層的開發(fā),使得開發(fā)者可以更加專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)。要在SpringBoot應(yīng)用程序中使用SpringDataJDBC并添加依賴關(guān)系啟動器,步驟如下所示。第一步:新建Spring初始化項(xiàng)目,在添加模塊過程中勾選SpringDataJDBC和數(shù)據(jù)庫驅(qū)動程序的依賴項(xiàng),點(diǎn)擊“Create”。任務(wù)2-1:SpringDataJDBC貳創(chuàng)建項(xiàng)目完成之后,打開pom.xml文件,會發(fā)現(xiàn)里面添加了SpringDataJDBC和數(shù)據(jù)庫驅(qū)動程序的依賴項(xiàng),效果如圖所示。第二步:在application.yml文件中配置數(shù)據(jù)庫連接信息。例如:spring:datasource:url:jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTCusername:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Driver任務(wù)2-1:SpringDataJDBC貳第三步:創(chuàng)建一個(gè)測試類,用來查看數(shù)據(jù)庫鏈接情況,代碼如下所示。packagecom.inspure;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importjavax.sql.DataSource;importjava.sql.Connection;importjava.sql.SQLException;@SpringBootTestclassChapter0501ApplicationTests{@AutowiredDataSourcedataSource;@TestvoidcontextLoads()throwsSQLException{//默認(rèn)使用的數(shù)據(jù)源System.out.println("數(shù)據(jù)源:"+dataSource.getClass());Connectionconnection=dataSource.getConnection();System.out.println("connection:"+connection);}}運(yùn)行代碼,效果如圖。任務(wù)2-2:Druid概述貳1Druid簡介Druid是一個(gè)分布式的、支持實(shí)時(shí)多維OLAP分析的數(shù)據(jù)處理系統(tǒng),它的特點(diǎn)包括:列式存儲格式A可擴(kuò)展分布式系統(tǒng)B大規(guī)模并行處理C實(shí)時(shí)或批量攝取D自修復(fù)、自平衡、易于操作E任務(wù)2-2:Druid概述貳2Druid基本配置參數(shù)配置說明配置說明name配置該屬性的意義在于,如果存在多個(gè)數(shù)據(jù)源,監(jiān)控的時(shí)候可以通過名字來區(qū)分開。如果沒有配置,將會生成一個(gè)名字,格式:“DataSource-”+System.identityHashCode(this),另外配置此屬性至少在1.0.5版本中不起作用,強(qiáng)行設(shè)置name會出錯(cuò)maxActive最大連接池?cái)?shù)量,默認(rèn)值為8url連接數(shù)據(jù)庫的url,例如:mysql:jdbc:mysql://:3306/mysqlDB;oracle:jdbc:oracle:thin:@:1521:oracleDBmaxIdle已經(jīng)不再使用,配置了也沒效果username連接數(shù)據(jù)庫的用戶名minIdle最小連接池?cái)?shù)量password連接數(shù)據(jù)庫的密碼。如果不希望密碼直接寫在配置文件中,可以使用ConfigFilter。詳細(xì)看這里:/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFiltermaxWait獲取連接時(shí)最大等待時(shí)間,單位毫秒。配置了maxWait之后,缺省啟用公平鎖,并發(fā)效率會有所下降,如果需要可以通過配置useUnfairLock屬性為true使用非公平鎖driverClassName這一項(xiàng)可配可不配,如果不配置druid會根據(jù)url自動識別dbType,然后選擇相應(yīng)的driverClassNamepoolPreparedStatements是否緩存preparedStatement,也就是PSCache。PSCache對支持游標(biāo)的數(shù)據(jù)庫性能提升巨大,比如說oracle。在mysql下建議關(guān)閉,默認(rèn)值為falseinitialSize初始化時(shí)建立物理連接的個(gè)數(shù)。初始化發(fā)生在顯示調(diào)用init方法,或者第一次getConnection時(shí)maxOpenPreparedStatements要啟用PSCache,必須配置大于0,當(dāng)大于0時(shí),poolPreparedStatements自動觸發(fā)修改為true。在Druid中,不會存在Oracle下PSCache占用內(nèi)存過多的問題,可以把這個(gè)數(shù)值配置大一些,比如說100,默認(rèn)值為-1任務(wù)2-2:Druid概述貳配置說明配置說明validationQuery用來檢測連接是否有效的sql,要求是一個(gè)查詢語句。如果validationQuery為null,testOnBorrow、testOnReturn、testWhileIdle都不會其作用numTestsPerEvictionRun不再使用,一個(gè)DruidDataSource只支持一個(gè)EvictionRunvalidationQueryTimeout單位:秒,檢測連接是否有效的超時(shí)時(shí)間。底層調(diào)用jdbcStatement對象的voidsetQueryTimeout(intseconds)方法minEvictableIdleTimeMillis連接保持空閑而不被驅(qū)逐的最長時(shí)間,默認(rèn)值為30分鐘testOnBorrow申請連接時(shí)執(zhí)行validationQuery檢測連接是否有效,做了這個(gè)配置會降低性能,默認(rèn)值為trueconnectionInitSqls物理連接初始化的時(shí)候執(zhí)行的sqltestOnReturn歸還連接時(shí)執(zhí)行validationQuery檢測連接是否有效,做了這個(gè)配置會降低性能,默認(rèn)值為falseexceptionSorter當(dāng)數(shù)據(jù)庫拋出一些不可恢復(fù)的異常時(shí),拋棄連接testWhileIdle建議配置為true,不影響性能,并且保證安全性。申請連接的時(shí)候檢測,如果空閑時(shí)間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測連接是否有效,默認(rèn)值為falsefilters屬性類型是字符串,通過別名的方式配置擴(kuò)展插件,常用的插件有:監(jiān)控統(tǒng)計(jì)用的filter:stat日志用的filter:log4j防御sql注入的filter:walltimeBetweenEvictionRunsMillis有兩個(gè)含義:1、Destroy線程會檢測連接的間隔時(shí)間,如果連接空閑時(shí)間大于等于minEvictableIdleTimeMillis則關(guān)閉物理連接;2、testWhileIdle的判斷依據(jù),詳細(xì)看testWhileIdle屬性的說明proxyFilters類型是List<com.alibaba.druid.filter.Filter>,如果同時(shí)配置了filters和proxyFilters,是組合關(guān)系,并非替換關(guān)系任務(wù)2-2:Druid概述貳3SpringBoot整合Druid數(shù)據(jù)庫連接池第一步:新建Spring初始化項(xiàng)目,在添加模塊過程中勾選MyBatisFramework和數(shù)據(jù)庫驅(qū)動程序的依賴項(xiàng),點(diǎn)擊“Create”。任務(wù)2-2:Druid概述貳第二步:打開Maven主依賴網(wǎng)頁,找到DruidSpringBootStarter相關(guān)依賴,并在pom.xml文件中添加,代碼如下<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.6</version></dependency>第三步:在perties文件中配置Druid,配置如下:spring.datasource.druid.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8spring.datasource.druid.username=rootspring.datasource.druid.password=rootspring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver

#初始化時(shí)建立物理連接的個(gè)數(shù)spring.datasource.druid.initial-size=5#最大連接池?cái)?shù)量spring.datasource.druid.max-active=30任務(wù)2-2:Druid概述貳#最小連接池?cái)?shù)量spring.datasource.druid.min-idle=5#獲取連接時(shí)最大等待時(shí)間,單位毫秒spring.datasource.druid.max-wait=60000spring.datasource.druid.time-between-eviction-runs-millis=60000spring.datasource.druid.min-evictable-idle-time-millis=300000spring.datasource.druid.validation-query=SELECT1FROMDUALspring.datasource.druid.test-while-idle=truespring.datasource.druid.test-on-borrow=falsespring.datasource.druid.test-on-return=falsespring.datasource.druid.pool-prepared-statements=truespring.datasource.druid.max-pool-prepared-statement-per-connection-size=50spring.dataso

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論