臨時筆記2
數據庫設計
-
有哪些表
-
表里有哪些字段
-
表和表之間是什么關系
JDBC
(全稱:JAVA DATABASE CONNECTIVITY
)
本質是官方定義的一套操作所有關系型數據庫的規則,即接口。每個數據庫廠商去實現這一接口,寫出實現類,即驅動,集合稱數據庫驅動JAR
包。
事務的四大特征:A
原子性:是操作數據的最小單位
C
一致性:事務提交前后數據保持一致。
I
隔離性:不同的事務操作同一個數據時的隔離
D
持久性:事務提交后的數據將永久保存
JDBC
快速入門
public static void main(String[] args) throws Exception {// 注冊驅動Class.forName("com.mysql.jdbc.Driver");// 獲取鏈接String url = "jdbc:mysql://127.0.0.1:3306/mydb2";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);// 定義sqlString sql = "select eid,ename,manager_id from t_sanguo";Statement stmt = conn.createStatement();ResultSet resultSet = stmt.executeQuery(sql);// 處理結果集ResultSetMetaData metaData = resultSet.getMetaData();int columnCount = metaData.getColumnCount();while (resultSet.next()){for(int i=1;i<=columnCount;i++){System.out.print(resultSet.getObject(i)+"\t");}System.out.println();}// 釋放資源 resultSet.close();stmt.close();conn.close();}
釋放資源順序:越先獲得,越先釋放。
API
詳解
DriverManager:connection:
createstatement
preparedstatement
Druid
// 數據庫連接池 是一個容器,是一個集合,申請連接資源,
// 1,導入jar包druid-1.1.12.jar
// 2,定義配置文件
// 3,加載配置文件
// 4,獲取數據庫連接池對象
// 5,獲取連接
useSSL=false
配置在getconnection
後可以禁止安全連接。因爲安全連接配置很麻煩,而且速度下降2成左右
注意:preparedstatement
需要開啟使用,才能使用預編譯功能。
alt
+鼠標左鍵,整列修正,還有替換
MAVEN
是專門用于管理和構建JAVA
項目的工具
包括:
- 提供了一套標準的項目結構
- 提供了一套標準化的構建流程
- 提供了一套依賴管理機制(導入第三方資源)
依賴管理
如果在本地倉庫有,就在pom.xml
中按alt+insert
,選擇Dependency
,搜索對應坐標即可。
<!--MyBatis是一個簡化JDBC的持久層框架
框架:是一個半成品軟件,即模板。
JDBC的缺點
1,硬編碼:既有一些易變動的字符串。
解決方案:寫在配置文件中
2,操作繁瑣:即處理結果集是重復對結果賦值
解決方案:使其自動完成-->
MyBatis
快速入門
Mapper
代理開發
MyBatis
核心配置文件
核心配置原則
configuration
配置
properties
屬性
settings
設置
typeAliases
類型別名
typeHandlers
類型處理器
objectFactory
對象工廠
plugins
插件
environments
環境配置
envrionment
環境變量transactionManger
事務管理器dataSource
數據源
databaseIdProvider
數據庫廠商標識
mappers
映射器
如果Mapper
接口名稱和SQL
映射文件名稱相同,并在同一目錄下,則可以使用package
簡化SQL
映射文件的加載
配置文件完成增刪改查
在mapper
查詢中,如果數據庫的字段名稱和實體類的屬性名,不一致,則封裝不上,列如:company_id
,companyId
解決方案:
- 起別名:給字段名稱在查詢句中起別名
- 缺點:每次查詢都要定義一次別名
sql
片段:是mapper
標簽- 缺點:不靈活
<sql id="brand_column">pid,pname,price,category_id as categoryId</sql><select id="selectAll" resultType="Brand">select <include refid="brand_column"></include>from product;</select>
-
resultMap
:是Mapper
標簽<!--id:完成主鍵字段的映射result:完成一般字段的映射--><resultMap id="brandResultMap" type="brand"><result column="category_id" property="categoryId"/></resultMap><select id="selectAll" resultMap="brandResultMap">select *from product;</select>
查詢詳情:
<!--查詢詳情--><!--參數占位符:#{}:替換成?,防止SQL注入${}: 直接拼SQL,有SQL注入的危險使用時機:參數傳遞 #{}參數類型:parameterType="int" 可以不加特殊字符的處理:轉義字符:< <CDATA區:--><select id="selectByPid" resultMap="brandResultMap">select * from product where pid = #{pid};</select>
注解完成增刪改查
動態SQL
<!--添加slf4j日志api -->
<dependcy>
<groupId></groupId><artifactId></artifactId><version></version>
</dependcy>
<!--添加logback-classic依賴 -->
<dependcy>
<groupId></groupId><artifactId></artifactId><version></version>
</dependcy>
<!--添加logback-core依賴 -->
<dependcy>
<groupId></groupId><artifactId></artifactId><version></version>
</dependcy>