国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

如何在國(guó)外做網(wǎng)站競(jìng)價(jià)賬戶(hù)托管公司哪家好

如何在國(guó)外做網(wǎng)站,競(jìng)價(jià)賬戶(hù)托管公司哪家好,國(guó)外校友網(wǎng)站建設(shè)的現(xiàn)狀,搜狐快速建站🔥博客主頁(yè): 【小扳_-CSDN博客】 ?感謝大家點(diǎn)贊👍收藏?評(píng)論? 文件目錄 1.0 Mybatis 概述 2.0 數(shù)據(jù)庫(kù)連接池 2.1 數(shù)據(jù)庫(kù)連接池的主要作用包括 2.2 如何切換數(shù)據(jù)庫(kù)連接池? 3.0 配置環(huán)境 4.0 Lombok 工具包 4.1 如何導(dǎo)入到項(xiàng)目中呢…

🔥博客主頁(yè):?【小扳_-CSDN博客】
?感謝大家點(diǎn)贊👍收藏?評(píng)論?

文件目錄

????????1.0 Mybatis 概述

? ? ? ? 2.0 數(shù)據(jù)庫(kù)連接池

????????2.1 數(shù)據(jù)庫(kù)連接池的主要作用包括

????????2.2 如何切換數(shù)據(jù)庫(kù)連接池?

? ? ? ? 3.0 配置環(huán)境

? ? ? ? 4.0 Lombok 工具包

? ? ? ? 4.1 如何導(dǎo)入到項(xiàng)目中呢?

? ? ? ? 5.0 application 屬性文件數(shù)據(jù)庫(kù)連接的信息與 pom XML文件的依賴(lài)


????????1.0 Mybatis 概述

????????MyBatis 是一個(gè)持久層框架,它簡(jiǎn)化了數(shù)據(jù)庫(kù)操作和 SQL 語(yǔ)句的處理。MyBatis 通過(guò) XML 或注解的方式配置 SQL 語(yǔ)句,將 Java 對(duì)象和數(shù)據(jù)庫(kù)表進(jìn)行映射,提供了一種方便的方式來(lái)進(jìn)行數(shù)據(jù)庫(kù)操作。

????????MyBatis 是基于 JDBC 的持久層框架,它封裝了 JDBC 的操作,簡(jiǎn)化了數(shù)據(jù)庫(kù)訪問(wèn)的過(guò)程。

Mybatis 與 JDBC 的關(guān)系:

? ? ? ? 1)SQL 語(yǔ)句處理:JDBC 需要在 Java 代碼中編寫(xiě) SQL 語(yǔ)句并進(jìn)行參數(shù)設(shè)置,而 MyBatis 可以通過(guò) XML 或注解的方式配置 SQL 語(yǔ)句,將 SQL 語(yǔ)句與 Java 代碼分離,提高了代碼的可維護(hù)性和可讀性。

? ? ? ? 2)數(shù)據(jù)庫(kù)連接管理:JDBC 需要手動(dòng)管理數(shù)據(jù)庫(kù)連接的打開(kāi)和關(guān)閉,而 MyBatis 可以通過(guò)配置文件自動(dòng)管理數(shù)據(jù)庫(kù)連接的打開(kāi)和關(guān)閉,減少了開(kāi)發(fā)人員的工作量。

? ? ? ? 3)數(shù)據(jù)映射:JDBC 需要手動(dòng)將查詢(xún)結(jié)果映射為 Java 對(duì)象,而 MyBatis 提供了強(qiáng)大的映射功能,可以自動(dòng)將查詢(xún)結(jié)果映射為 Java 對(duì)象,簡(jiǎn)化了數(shù)據(jù)的處理和轉(zhuǎn)換。

? ? ? ? 4)緩存機(jī)制:JDBC 沒(méi)有緩存機(jī)制,每次查詢(xún)都需要訪問(wèn)數(shù)據(jù)庫(kù),而 MyBatis 提供了緩存機(jī)制,可以緩存查詢(xún)結(jié)果,減少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù),提高性能。

? ? ? ? 2.0 數(shù)據(jù)庫(kù)連接池

????????數(shù)據(jù)庫(kù)連接池是一種管理數(shù)據(jù)庫(kù)連接的技術(shù),它可以在應(yīng)用程序啟動(dòng)時(shí)創(chuàng)建一定數(shù)量的數(shù)據(jù)庫(kù)連接,并在需要時(shí)將這些連接分配給應(yīng)用程序使用。使用數(shù)據(jù)庫(kù)連接池可以減少數(shù)據(jù)庫(kù)連接的創(chuàng)建和銷(xiāo)毀次數(shù),提高數(shù)據(jù)庫(kù)操作的性能和效率。

? ? ? ? 常見(jiàn)的四個(gè)數(shù)據(jù)庫(kù)連接池:DBCP、C3P0、Hikari、Druid。

????????HikariCP:是一個(gè)高性能、輕量級(jí)的 JDBC 數(shù)據(jù)庫(kù)連接池,被認(rèn)為是目前性能最好的連接池之一。HikariCP 具有快速的啟動(dòng)時(shí)間、低資源消耗和優(yōu)秀的性能表現(xiàn),適合用于高并發(fā)、性能要求較高的項(xiàng)目。在 Springboot 項(xiàng)目中默認(rèn)自帶的連接池。

????????Druid:是阿里巴巴開(kāi)源的一個(gè) JDBC 連接池和監(jiān)控組件,集成了連接池、SQL 解析、SQL 監(jiān)控等功能。Druid 具有強(qiáng)大的監(jiān)控和管理功能,支持防火墻、密碼加密、SQL 注入等安全特性,被廣泛應(yīng)用于企業(yè)級(jí)項(xiàng)目中。

? ? ? ? 2.1 數(shù)據(jù)庫(kù)連接池的主要作用包括

? ? ? ? 1)資源重用:數(shù)據(jù)庫(kù)連接池可以重用已經(jīng)創(chuàng)建的數(shù)據(jù)庫(kù)連接,減少了連接的創(chuàng)建和銷(xiāo)毀開(kāi)銷(xiāo),提高了系統(tǒng)的性能。

? ? ? ? 2)連接管理:數(shù)據(jù)庫(kù)連接池可以管理連接的分配和釋放,確保連接的有效性和可靠性。

? ? ? ? 3)連接池大小控制:數(shù)據(jù)庫(kù)連接池可以根據(jù)應(yīng)用程序的需求動(dòng)態(tài)調(diào)整連接池的大小,避免連接過(guò)多或過(guò)少的情況發(fā)生。

? ? ? ? 4)連接超時(shí)處理:數(shù)據(jù)庫(kù)連接池可以設(shè)置連接的超時(shí)時(shí)間,當(dāng)連接空閑時(shí)間超過(guò)設(shè)定的時(shí)間時(shí),連接將被釋放,避免連接過(guò)期或長(zhǎng)時(shí)間占用的情況發(fā)生。

? ? ? ? 2.2 如何切換數(shù)據(jù)庫(kù)連接池?

? ? ? ? 1)先引入相關(guān)依賴(lài)。比如,切換成 Druid 數(shù)據(jù)庫(kù)連接池,需要先導(dǎo)入該數(shù)據(jù)庫(kù)連接池的依賴(lài)。

    <!--Druid依賴(lài)--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency>

? ? ? ? 2)在Springboot 項(xiàng)目中 resources 包下的 applocation.properties 屬性文件中配置數(shù)據(jù)庫(kù)的連接信息。

spring.datasource.drive-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db01?characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456

? ? ? ? 3)運(yùn)行結(jié)果,只要程序需要連接數(shù)據(jù)庫(kù),那么數(shù)據(jù)庫(kù)連接池就會(huì)分配給當(dāng)前程序。

?

? ? ? ? 3.0 配置環(huán)境

? ? ? ? 創(chuàng)建一個(gè)新的 Springboot 工程,選擇引入對(duì)應(yīng)的起步依賴(lài)(mybatis、mysql 驅(qū)動(dòng))和 application.properties 屬性文件中引入數(shù)據(jù)庫(kù)連接信息。

? ? ? ? 1)引入 mybatis 依賴(lài)

    <!--mybatis的起步依賴(lài)--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency>

? ? ? ? 2)引入 mysql 驅(qū)動(dòng)包依賴(lài)

    <!--mysql驅(qū)動(dòng)包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency>

? ? ? ? 3)application.properties 屬性文件中配置數(shù)據(jù)庫(kù)連接的信息

spring.datasource.drive-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db01?characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456

? ? ? ? 需要注意的是,這里的密碼和數(shù)據(jù)庫(kù)名都是自定義的,不是完全相同的,要依據(jù)你當(dāng)前要操作的數(shù)據(jù)庫(kù)名和你當(dāng)前的數(shù)據(jù)庫(kù)密碼。

? ? ? ? 4)額外的配置,如控制日志打印在控制臺(tái)上,配置?pplication.properties 屬性文件即可。

#將日志打印在控制臺(tái)上
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

?

? ? ? ? 4.0 Lombok 工具包

????????Lombok 是一個(gè)用于簡(jiǎn)化 Java 代碼開(kāi)發(fā)的工具包,它通過(guò)添加注解來(lái)減少樣板代碼的編寫(xiě),提高代碼的簡(jiǎn)潔性和可讀性。使用 Lombok 可以減少一些常見(jiàn)的代碼模板,如 getter 和 setter 方法、構(gòu)造函數(shù)、equals 和 hashCode 方法等,從而簡(jiǎn)化 Java 開(kāi)發(fā)過(guò)程。

提供的注解為:

? ? ? ? 1)@Getter/@Setter:為所有的屬性提供 get/set 方法。

? ? ? ? 2)@ToString:會(huì)給類(lèi)自動(dòng)生成易讀閱讀的 ToString 方法。

? ? ? ? 3)@EqualsAndHashCode:根據(jù)類(lèi)所擁有的非靜態(tài)字段自動(dòng)重寫(xiě) equals 方法和 hasCode 方法。

? ? ? ? 4)@Data:提供了更綜合的生成代碼功能(包括:@Getter、@Setter、@ToString、@EqualsAndHashCode)

? ? ? ? 5)@NoArgsConstructor:為實(shí)體類(lèi)生成無(wú)參的構(gòu)造器方法。

? ? ? ? 6)@AllArgsConstructor:為實(shí)體類(lèi)生成除了 static 修飾的字段之外帶有各參數(shù)的構(gòu)造器方法。

代碼演示:

沒(méi)有使用 Lombok 的實(shí)體類(lèi):

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;public class Emp {private int id;private String username;private String password;private String name;private int gender;private int job;private LocalDate entrydate;private int deptId;private LocalDateTime createTime;private LocalDateTime updateTime;public Emp() {}public Emp(int id, String username, String password, String name, int gender, int job, LocalDate entrydate, int deptId, LocalDateTime createTime, LocalDateTime updateTime) {this.id = id;this.username = username;this.password = password;this.name = name;this.gender = gender;this.job = job;this.entrydate = entrydate;this.deptId = deptId;this.createTime = createTime;this.updateTime = updateTime;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Emp emp = (Emp) o;return id == emp.id && gender == emp.gender && job == emp.job && deptId == emp.deptId && Objects.equals(username, emp.username) && Objects.equals(password, emp.password) && Objects.equals(name, emp.name) && Objects.equals(entrydate, emp.entrydate) && Objects.equals(createTime, emp.createTime) && Objects.equals(updateTime, emp.updateTime);}@Overridepublic int hashCode() {return Objects.hash(id, username, password, name, gender, job, entrydate, deptId, createTime, updateTime);}public int getId() {return id;}public void setId(int 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 getName() {return name;}public void setName(String name) {this.name = name;}public int getGender() {return gender;}public void setGender(int gender) {this.gender = gender;}public int getJob() {return job;}public void setJob(int job) {this.job = job;}public LocalDate getEntrydate() {return entrydate;}public void setEntrydate(LocalDate entrydate) {this.entrydate = entrydate;}public int getDeptId() {return deptId;}public void setDeptId(int deptId) {this.deptId = deptId;}public LocalDateTime getCreateTime() {return createTime;}public void setCreateTime(LocalDateTime createTime) {this.createTime = createTime;}public LocalDateTime getUpdateTime() {return updateTime;}public void setUpdateTime(LocalDateTime updateTime) {this.updateTime = updateTime;}@Overridepublic String toString() {return "Emp{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", name='" + name + '\'' +", gender=" + gender +", job=" + job +", entrydate=" + entrydate +", deptId=" + deptId +", createTime=" + createTime +", updateTime=" + updateTime +'}';}
}

? ? ? ? 看起來(lái)非常非常的臃腫,代碼量還不少。

現(xiàn)在使用 Lombok 工具包進(jìn)行代碼演示:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.time.LocalDate;
import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {private int id;private String username;private String password;private String name;private int gender;private int job;private LocalDate entrydate;private int deptId;private LocalDateTime createTime;private LocalDateTime updateTime;}

? ? ? ? 看起來(lái)非常的整潔,代碼量不多。

? ? ? ? 4.1 如何導(dǎo)入到項(xiàng)目中呢?

? ? ? ? 引入 Lombok 的相關(guān)依賴(lài)即可。

Lombok 的依賴(lài):

    <!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

? ? ? ? 5.0 application 屬性文件數(shù)據(jù)庫(kù)連接的信息與 pom XML文件的依賴(lài)

屬性文件:

spring.datasource.drive-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db01?characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456#將日志打印在控制臺(tái)上
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl#開(kāi)啟 mybatis 的駝峰命名自動(dòng)映射開(kāi)關(guān)
mybatis.configuration.map-underscore-to-camel-case=true

XML 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>code_24_5_20_2</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>code_24_5_20_2</name><url>http://maven.apache.org</url><!--1、spring-boot-starter-parent自動(dòng)引入springboot中最基礎(chǔ)的組件,所有springboot項(xiàng)目都要依賴(lài)它進(jìn)行構(gòu)建--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.4</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--2、引入springboot依賴(lài),spring-boot-starter-web表示在項(xiàng)目中增加支持javaweb的功能,版本信息已經(jīng)在parent中定義--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!--mybatis的起步依賴(lài)--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><!--mysql驅(qū)動(dòng)包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--Druid依賴(lài)--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency></dependencies><!--3、定義springboot的打包方式,spring-boot-maven-plugin可以在打包時(shí)自動(dòng)將所有類(lèi)和資源打包成一個(gè)獨(dú)立可運(yùn)行的jar包--><build><!--打包指定名稱(chēng)--><finalName>projectName</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

http://aloenet.com.cn/news/32435.html

相關(guān)文章:

  • 為校園網(wǎng)站建設(shè)提供網(wǎng)站優(yōu)化排名公司哪家好
  • 寧波百度做網(wǎng)站的公司哪家好亞馬遜跨境電商開(kāi)店流程及費(fèi)用
  • 電商型企業(yè)網(wǎng)站建設(shè)品牌型網(wǎng)站制作價(jià)格
  • 企業(yè)內(nèi)部網(wǎng)站如何建設(shè)吉林網(wǎng)絡(luò)seo
  • 流量劫持網(wǎng)站怎么做磁力搜索引擎不死鳥(niǎo)
  • 公司官網(wǎng)怎么建立優(yōu)化大師客服電話(huà)
  • php網(wǎng)站的登陸注冊(cè)怎末做的深圳網(wǎng)站建設(shè)專(zhuān)業(yè)樂(lè)云seo
  • 業(yè)余從事網(wǎng)站開(kāi)發(fā)杭州seo按天計(jì)費(fèi)
  • 招聘網(wǎng)站建設(shè)維護(hù)人員設(shè)計(jì)公司排名前十強(qiáng)
  • 錦州網(wǎng)站建設(shè)哪家好seo策略有哪些
  • 金山建設(shè)機(jī)械網(wǎng)站seo研究中心超逸seo
  • 網(wǎng)站備案后更換主機(jī)網(wǎng)絡(luò)營(yíng)銷(xiāo)的內(nèi)涵
  • php做視頻網(wǎng)站有哪些軟件下載谷歌優(yōu)化的網(wǎng)絡(luò)公司
  • 廣告行業(yè)包括網(wǎng)站建設(shè)嗎搜索seo優(yōu)化
  • 表格上傳網(wǎng)站廣東seo點(diǎn)擊排名軟件哪家好
  • 獵頭做mapping網(wǎng)站推廣軟件的app
  • 溫州網(wǎng)站建設(shè)推廣nba哈登最新消息
  • 完善酒店網(wǎng)站建設(shè)線上推廣策劃方案
  • 大興網(wǎng)站建設(shè)推廣網(wǎng)站seo的方法
  • 做團(tuán)建活動(dòng)網(wǎng)站網(wǎng)站優(yōu)化什么意思
  • 規(guī)模以上工業(yè)企業(yè)名單百度小程序關(guān)鍵詞優(yōu)化
  • 建設(shè)銀行網(wǎng)站不能登錄密碼seo文章是什么
  • 東莞建站模板后臺(tái)百度快照功能
  • php網(wǎng)站后臺(tái)反應(yīng)慢怎么解決推廣網(wǎng)頁(yè)怎么做的
  • 上海網(wǎng)站制作培訓(xùn)分享推廣
  • 浙江網(wǎng)緣科技有限公司seo點(diǎn)擊排名
  • 用uc看不健康的東西會(huì)中病毒嗎seo的中文是什么
  • 廣西專(zhuān)業(yè)做網(wǎng)站的公司磁力搜索引擎
  • 蘭州網(wǎng)站建設(shè)模板google全球推廣
  • 阿里云可以做網(wǎng)站域名備案查詢(xún)站長(zhǎng)工具