版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單元5數據庫技術《JavaWeb應用開發(fā)》了解JDBC的基本概念及工作原理掌握JDBC核心API了解數據庫連接池基本概念及工作原理掌握數據庫連接池技術知識目標能夠獨立編寫JDBC程序操作數據庫數據能夠熟練配置數據庫連接池技術能使用數據庫技術進行網站開發(fā)能力目標培養(yǎng)學生團隊合作、合作共贏的精神培養(yǎng)學生一絲不茍的工匠精神培養(yǎng)學生數據安全意識素質目標學習目標某商城系統(tǒng)中商品管理任務5.1任務描述和技術分析4技術分析任務描述在商城系統(tǒng)的開發(fā)過程中,商品管理是核心業(yè)務。在商品管理的開發(fā)中,涉及到創(chuàng)建商品、修改商品信息、以及商品內容展示等,在該任務我們通過商品管理的實現來學習數據庫技術中的基本連接和通過JDBC技術實現商品的創(chuàng)建、修改、查詢、刪除操作。在實現商品管理的過程中,使用HTML+CSS+JSP相關技術實現商品管理的動態(tài)展示功能,使用JDBC實現和數據庫連接并進行數據操作,應用程序和數據庫的連接是第一步,連接建立后,即可在連接上進行SQL語句的發(fā)送和數據的傳輸。支撐知識--數據庫連接/01JDBC簡介JDBC的全稱為JavaDataBaseConnectivity,它是一個面向對象的應用程序接口(API)。JDBC的最大特點是它獨立于具體的關系數據庫。JDBC是連接數據庫和Java應用程序的紐帶,通過它可以訪問各種關系數據庫。JDBC簡介JDBC在Java程序中所起的作用(1)與數據庫建立連接.(2)向數據庫發(fā)送SQL語句。(3)獲取并處理結果。應用程序、JDBC和驅動程序之間的關系JDBC驅動程序JDBC是一個編程接口集合,具體的連接數據庫和操作數據庫的功能并沒有實現,具體的功能實現則由特定的JDBC驅動程序完成。(4)本地協(xié)議驅動(2)本地API部分支持Java技術驅動(3)JDBC網絡驅動(1)JDBC-ODBC橋常見的JDBC驅動程序JDBC驅動程序9(1)JDBC-ODBC橋JDBC-ODBC橋驅動程序由SUN公司開發(fā),是JDK提供的數據庫操作標準API。特點主要是:①不需要下載JDBC驅動程序。②由于JDBC-ODBC橋驅動程序經過幾次中間調用,所以執(zhí)行效率比較低。通過JDBC-ODBC橋訪問數據庫JDBC驅動程序10(2)本地API部分支持Java技術驅動這種驅動程序把客戶機API上的JDBC調用轉換為Oracle、Sybase、DB2或其他DBMS(DatabaseManagementSystem)的調用,通過直接映射特定數據庫廠家的DBMS庫接口實現。特點主要是:①需要在客戶機上安裝本地的JDBC驅動程序和特定廠商的本地API。②數據庫訪問的效率高。通過本地API訪問數據庫JDBC驅動程序11(3)JDBC網絡驅動將JDBC映射到與DBMS廠家無關的網絡協(xié)議中間件,再由這些中間件映射到特定的DBMS廠家的接口。特點主要是:①最為靈活的JDBC驅動程序。②適合于Internet的應用。通過網絡驅動訪問數據庫JDBC驅動程序12(4)本地協(xié)議驅動本地協(xié)議驅動通常由數據庫廠商直接提供驅動的JAR包,本地協(xié)議驅動程序直接將JDBC調用轉換為數據庫特定的網絡通信協(xié)議,然后與數據庫進行交互。①純Java語言編寫。②數據庫廠商直接提供。通過本地協(xié)議驅動程序訪問數據庫JDBCAPI13JDBC的核心是為開發(fā)人員提供操作數據庫的JavaAPI類庫,Java程序開發(fā)人員可以利用這些類庫開發(fā)數據庫應用程序。(1)Driver接口Driver接口是所有JDBC驅動程序必須實現的接口,該接口專門提供給數據庫廠商使用。驅動程序的加載可以使用Class.forName()方法,不同的數據庫JDBC驅動程序的類名不同。在MySQL8.0中,通過Class.forName(“com.mysql.cj.jdbc.Driver”)加載驅動程序。數據庫名驅動程序名Access或其他數據庫sun.jdbc.odbc.JdbcOdbcDriverSQLServercom.microsoft.jdbc.sqlserver.SQLServerDriverMySQL(6.0.2版本前)com.mysql.jdbc.DriverMySQL(6.0.2版本后)com.mysql.cj.jdbc.DriverOrcacleoracle.jdbc.driver.OracleDriver常用數據庫的驅動程序JDBCAPI14(2)DriverManager類使用JDBC連接數據庫,需要用到DriverManager類,DriverManager類用于加載JDBC驅動并且創(chuàng)建JDBC程序與數據庫的連接。DriverManager常見方法方法名稱功能描述registerDriver(Driverdriver)該方法用于向DriverManager中注冊給定的JDBC驅動程序getConnection(Stringurl,Stringuser,Stringpassword)該方法用于建立和數據庫的連接,并返回表示連接的Connection對象JDBCAPI根據url載入的驅動程序便可以找到對應的數據源并且實現數據庫連接,url是由設計驅動程序的人員來命名和指定的,使用者只需要使用驅動程序對應的url即可。JDBCURL標準的語法:jdbc:<subprotocol>:<datasourceidentifier>(2)DriverManager類//通過DriverManager獲取數據庫連接Stringurl="jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT%2B8&useSSL=false";Stringusername="root";//數據庫用戶名Stringpassword="root";//數據庫密碼Connectionconn=DriverManager.getConnection(url,username,password);連接MySQL數據庫為例,獲取數據庫連接的java代碼示例:JDBCAPI16(3)Connection接口DriverManager類的getConnection()方法返回了一個Connection對象,Connection對象是表示數據庫連接的對象,只有獲得該連接對象,才能訪問并操作數據庫。最常用的createStatement()方法用于創(chuàng)建SQL語句對象。Statementstmt=conn.createStatement();Connection常見方法方法名稱功能描述createStatement()用于創(chuàng)建一個Statement對象,Statement對象可以將SQL語句發(fā)送到數據庫prepareStatement(Stringsql)用于創(chuàng)建一個PreparedStatement對象,該對象可以將參數化的動態(tài)SQL語句發(fā)送到數據庫prepareCall(Stringsql)用于創(chuàng)建一個CallableStatement對象來調用數據庫的存儲過程close()用于立即釋放Connection對象的數據庫和和JDBC資源而不是等它們被自動釋放Connection常見方法JDBCAPI17(4)Statement接口Statement接口用于執(zhí)行靜態(tài)的SQL語句,并返回一個結果對象.//代碼示例Stringsql="select*fromuser";//stmt為之前通過Connection對象獲取的Statement對象ResultSetrs=stmt.executeQuery(sql);Statement常見方法方法名稱功能描述execute(Stringsql)用于執(zhí)行各種SQL語句。該方法返回一個boolean類型的值,如果返回值為true,表示所執(zhí)行的SQL語句有查詢結果,可以通過Statement的getResultSet0方法獲得查詢結果。executeUpdate(Stringsql)用于執(zhí)行SQL中的insert、update和delete語句。該方法返回一個int類型的值,表示數據庫中受該SQL語句影響的條數。executeQuery(Stringsql)用于執(zhí)行SQL中的select語句。該方法返回一個表示查詢結果的ResultSet對象。JDBCAPI18(5)PreparedStatement接口PreparedStatement是Statement的子接口,用于執(zhí)行預編譯的SQL語句。//使用PreparedStatement執(zhí)行SQL語句。Stringsql="select*fromuserwhereuserId=?";//占位符?替代參數PreparedStatementps=conn.prepareStatement(sql);//通過Connection對象創(chuàng)建PreparedStatement對象ps.setInt(1,1);//將指定參數userId設置為int值1ResultSetrs=ps.executeQuery();//執(zhí)行查詢,此處不要有參數PreparedStatement常見方法方法名稱功能描述executeUpdate()在PreparedStatement對象中執(zhí)行insert、update和delete或者無返回值的SQL語句。executeQuery在PreparedStatement對象中執(zhí)行SQL查詢,該方法返可的是ResultSet對象。setlnt(intparameterlndex,intx)將指定參數設置成給定的int值。setFloat(intindex,floatf)將指定位置的參數設置為float值。setLong(intindex,longl)將指定位置的參數設置為long值。setDouble(intindex,doubled)將指定位置的參數設置為double值。setBoolean(intindex,booleanb)將指定位置的參數設置為boolean值。voidsetString(intparameterlndex,Stringx)將指定參數設置成給定的String值。JDBCAPI19(6)ResultSet接口ResultSet接口用于保存JDBC執(zhí)行查詢時返回的結果集,該結果集封裝在一個邏輯表格中。//rs對象為ResultSet結果集對象while(rs.next()){intid=rs.getInt("id");//通過列名獲取指定字段的值
Stringname=rs.getString("name");Stringpsw=rs.getString("password");Stringemail=rs.getString("email");Datebirthday=rs.getDate("birthday");//輸出結果信息
System.out.println(id+"|"+name+"|"+psw+"|"+email+"|"+birthday);}ResultSet常見方法方法名稱功能描述getString(intcolumnlndex)用于獲取指定字段的String類型的值,參數columnIndex代表字段的索引getString(StringcolumnName)用于獲取指定字段的String類型的值,參數columnName代表字段的名稱next()將游標從結果集的當前位置移動到下一行close()釋放當前結果集的數據庫和JDBC資源支撐知識--數據的CRUD操作/011.環(huán)境準備OfficePLUS21JDBC編程步驟Java中的JDBC是用來連接數據庫從而執(zhí)行相關數據操作的,因此在使用JDBC時,一定要確保安裝了數據庫。下面以連接MySQL數據庫為例,介紹使用JDBC執(zhí)行相關操作。程序的具體實現步驟如圖所示。publicclassUnit51{@Testpublicvoidtest(){try{//1.注冊數據庫的驅動
Class.forName("com.mysql.cj.jdbc.Driver");//2.通過DriverManager獲取數據庫連接
Stringurl="jdbc:mysql://:3306/jdbc?serverTimezone=GMT%2B8&useSSL=false";Stringusername="root";localhost//數據庫用戶名
Stringpassword="123";//數據庫密碼
Connectionconn=DriverManager.getConnection(url,username,password);
System.out.println("數據庫連接成功!");//3.回收數據庫資源
conn.close();}catch(Exceptione){
System.out.println("數據庫連接失敗!");
e.printStackTrace();}}}JDBC連接數據庫測試-示例定義類DBUtils,進行數據庫的連接封裝。/定義一個獲取數據庫連接的方法
publicstaticConnectiongetConnection(){Connectionconn=null;try{//1.注冊數據庫的驅動
Class.forName(DRIVER);//2.通過DriverManager獲取數據庫連接
conn=DriverManager.getConnection(URL,USERNAME,PASSWORD);
System.out.println("數據庫連接成功!");}catch(SQLExceptione){
e.printStackTrace();}finally{returnconn;}}}JDBC連接數據庫工具類DBUtils.java-示例/***釋放數據庫資源*/publicstaticvoidclose(ResultSet
rs,Statementstat,Connectionconn){try{if(rs!=null)rs.close();if(stat!=null)stat.close();if(conn!=null)conn.close();}catch(SQLExceptione){
e.printStackTrace();}}定義實體類@DatapublicclassUser{/**用戶ID*/privateIntegerid;/**姓名*/privateStringname;/**密碼*/privateStringpassword;/**郵箱*/privateStringemail;/**生日*/privateDatebirthday;}創(chuàng)建DAO層publicclassUserDao{//查詢用戶列表publicList<User>getAll(){try{//1.獲取數據庫連接
conn=DBUtils.getConnection();//2.通過Connection對象獲取Statement對象
stmt=conn.createStatement();//3.使用Statement執(zhí)行SQL語句
rs=stmt.executeQuery(sql);//4.操作ResultSet結果集
while(rs.next()){Useruser=newUser();//通過列名獲取指定字段的值
user.setId(rs.getInt("id"));//省略部分代碼…..}returnusers;}}2.讀取(Retrieve)
示例-查詢輸出用戶信息列表DAO層添加方法publicintadd(Useruser){intnum=0;try{//1.獲取數據庫連接
Connectionconn=DBUtils.getConnection();//2.定義sql語句
Stringsql="insertintousers(name,email,password)values(?,?,?)";//3.通過Connection對象獲取PreparedStatement對象
PreparedStatement
ps=conn.prepareStatement(sql);
ps.setString(1,user.getName());
ps.setString(2,user.getEmail());
ps.setString(3,user.getPassword());//4.使用PreparedStatement對象執(zhí)行SQL語句
num=ps.executeUpdate();//5.回收數據庫資源
DBUtils.close(null,ps,conn);……returnnum;}測試代碼publicclassUnit53{@Testpublicvoidtest(){//構造插入數據
Useruser=newUser();
user.setName("zhaoliu");
user.setEmail("zhaoliu@");user.setPassword("123456");//測試新增用戶
UserDao
userDao=newUserDao();intnum=userDao.add(user);
System.out.println("插入數據成功,有"+num+"條數據被插入!");}}3.創(chuàng)建(Create)
示例-向用戶表中插入新的用戶信息DAO層添加方法publicintupdatePwd(Integerid,Stringpassword){intnum=0;try{//1.獲取數據庫連接
Connectionconn=DBUtils.getConnection();//2.定義sql語句
Stringsql="updateuserssetpassword=?whereid=?";//3.通過Connection對象獲取PreparedStatement對象
PreparedStatement
ps=conn.prepareStatement(sql);
ps.setString(1,password);
ps.setInt(2,id);//4.使用PreparedStatement對象執(zhí)行SQL語句
num=ps.executeUpdate();//5.回收數據庫資源
DBUtils.close(null,ps,conn);……returnnum;}測試代碼publicclassUnit54{@Testpublicvoidtest(){
UserDao
userDao=newUserDao();intid=4;Stringpassword="newpassword";intnum=userDao.updatePwd(id,password);
System.out.println("修改數據成功,有"+num+"條數據發(fā)生了修改!");}}4.更新(Update)
示例-更新用戶密碼信息DAO層添加方法publicintdeleteById(Integerid){intnum=0;try{//1.獲取數據庫連接
Connectionconn=DBUtils.getConnection();//2.定義sql語句
Stringsql="deletefromuserswhereid=?";//3.通過Connection對象獲取PreparedStatement對象
PreparedStatement
ps=conn.prepareStatement(sql);
ps.setInt(1,id);//4.使用PreparedStatement對象執(zhí)行SQL語句
num=ps.executeUpdate();//5.回收數據庫資源
DBUtils.close(null,ps,conn);}catch(Exceptione){
e.printStackTrace();}returnnum;}測試代碼publicclassUnit55{@Testpublicvoidtest(){
UserDao
userDao=newUserDao();intid=4;Stringpassword="newpassword";intnum=userDao.deleteById(id);
System.out.println("刪除數據成功,有"+num+"條數據被刪除!");}}5.刪除(Delete)
示例-刪除某個用戶信息任務實現任務商品管理模塊,主要實現商品的增加、修改、刪除、查看等功能。商品管理的開發(fā)過程為:數據訪問層設計、業(yè)務層設計、控制端設計、視圖層設計。某商城系統(tǒng)中商品信息的展示商品列表效果展示新增商品效果展示任務實現請求商品信息列表<tbody>….<td>${ductId}</td><td>${ductName}</td><td><img
src="${pageContext.request.contextPath}/${item.img}"style="height:60px;"/></td><td>${item.desc}</td><td>${item.price}</td><td>${item.detail}</td><td>${item.num}</td><td>${item.status}</td><td><ahref="#">上架</a> <ahref="#">下架</a> <ahref="${pageContext.request.contextPath}/productServlet?key=edit&productId=${ductId}">編輯</a> <ahref="${pageContext.request.contextPath}/productServlet?key=delete&productId=${ductId}">刪除</a> …..</tbody>新增商品頁面效果<div><span>商品名稱:</span><inputtype="text"id="productName"name="productName"placeholder="商品名稱"value="${ductName}"></div><div><span>商品圖片:</span><c:iftest="${product.img!=null}"><img
src=${product.img}></c:if><c:iftest="${product.img==null}"><inputtype="file"name="productImg"accept="image/*"></c:if></div><div><span>商品描述:</span><inputtype="text"id="productDesc"name="productDesc"placeholder="商品描述"value="${product.desc}"></div><div><span>商品價格:</span><inputtype="text"id="productPrice"name="productPrice"placeholder="商品價格"value="${product.price}"></div>某商城系統(tǒng)中基于連接池實現商品的上下架任務5.2任務描述和技術分析31技術分析任務描述在商城系統(tǒng)的開發(fā)過程中,商品上下架是常見業(yè)務。商品上下架功能有助于商家實時掌握庫存情況,避免超賣或缺貨現象的發(fā)生。當商品庫存不足時,商家可以及時下架該商品,避免因為缺貨而影響買家購物體驗。在任務5.1中我們通過數據庫的查詢實現了商品管理中的增刪改查功能,本任務通過數據庫連接池完成商品的上下架功能。商品的上下架主要包括商品的上架和商品的下架。在商品管理頁面,通過點擊上架、下架按鈕,即可以實現商品的上下架功能。本單元涉及數據庫連接池技術,通過使用常用的數據源DBCP或C3P0來減少數據庫頻繁的連接和斷開操作,提升了數據庫的訪問效率。支撐知識—數據庫連接池數據庫連接池數據池連接示意為了避免頻繁的創(chuàng)建數據庫連接,提出了數據庫連接池技術。數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用現有的數據庫連接,而不是重新建立。數據庫連接池方法名稱
功能描述ConnectiongetConnection()無參數方式建立與數據庫的連接ConnectiongetConnection(Stringusername,Stringpassword)通過數據庫的登錄信息方式獲取與數據庫的連接我們習慣性的把實現了javax.sql.DataSource接口的類稱為數據源,顧名思義,數據源即數據的來源,在數據源中存儲了所有建立數據庫連接的信息。常見的數據源有DBCP數據源和C3P0數據源,接下來對這兩種數據源進行詳細的講解。支撐知識—DBCP數據源DBCP數據源36DBCP是數據庫連接池(DataBaseConnectionPool)的簡稱,是Apache組織下的開源連接池實現,也是Tomcat服務器使用的連接池組件<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency>pom文件中引入MySQL和DBCP數據源的依賴代碼DBCP數據源方法名稱功能描述voidsetDriverClassName(StringdriverClassName)設置連接數據庫的驅動名稱voidsetUrl(Stringurl)設置連接數據庫的路徑voidsetUsername(Stringusername)設置數據庫的登陸賬號voidsetPassword(Stringpassword)設置數據庫的登錄密碼voidsetlnitialSize(intinitialSize)設置數據庫連接池初始化的連接數目voidsetMaxActive(intmaxldle)設置數據庫連接池最大活躍的連接數目voidsetMinldle(intminldle)設置數據庫連接池最小閑置的連接數目ConnectiongetConnection()從連接池中獲取一個數據庫連接BasicDataSource常見方法DBCP數據源38使用BasicDataSource類創(chuàng)建一個數據源對象,手動給數據源對象設置屬性值,然后獲取數據庫連接對象publicclassDBCPUtil{publicstaticDataSourceds=null;static{//獲取DBCP數據源實現類對象
BasicDataSourcebds=newBasicDataSource();//設置連接數據庫需要的配置信息
bds.setDriverClassName("com.mysql.cj.jdbc.Driver");bds.setUrl("jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT%2B8&useSSL=false");
bds.setUsername("root");
bds.setPassword("123");//設置連接池的參數
bds.setInitialSize(5);
bds.setMaxActive(5);ds=bds;}}DBCP通過BasicDataSource創(chuàng)建數據源(1)通過BasicDataSource創(chuàng)建DBCP數據源39使用BasicDataSourceFactory工廠類讀取配置文件,創(chuàng)建數據源對象,然后獲取數據庫連接對象。#連接配置driverClassName=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT%2B8&useSSL=falseusername=rootpassword=123#初始化連接initialSize=5#最大連接數maxActive=10#最大空閑數maxIdle=10建配置文件perties(2)通過讀取配置文件創(chuàng)建publicclassDBCPConfigUtil{publicstaticDataSourceds=null;static{//新建一個配置文件對象
Propertiesprop=newProperties();try{//通過類加載器找到文件路徑,讀配置文件
InputStreamin=newDBCPConfigUtil().getClass().getClassLoader().getResourceAsStream("perties");//把文件以輸入流的形式加載到配置對象中
prop.load(in);//創(chuàng)建數據源對象
ds=BasicDataSourceFactory.createDataSource(prop);}catch(Exceptione){thrownewExceptionInInitializerError(e);}}}DBCP通過讀取配置創(chuàng)建數據源-示例支撐知識—C3P0數據源C3P0數據源42C3P0是目前最流行的開源數據庫連接池之一,它實現了DataSource數據源接口,支持JDBC2和JDBC3的標準規(guī)范,易于擴展并且性能優(yōu)越,著名的開源框架Spring使用的即是該數據源。ComboPooledDataSource常見方法方法名稱功能描述voidsetDriverClass()設置連接數據庫的驅動名稱voidsetJdbcUrl()設置連接數據庫的路徑voidsetUser()設置數據庫的登陸賬號voidsetPassword()設置數據庫的登錄密碼voidsetMaxPoolSize()設置數據庫連接池最大的連接數目voidsetMinPoolSize()設置數據庫連接池最小的連接數目voidsetInitialPoolSize()設置數據庫連接池初始化的連接數目ConnectiongetConnection()從數據庫連接池中獲取一個連接publicclassC3P0Util{publicstaticDataSourceds=null;//初始化C3P0數據源
static{//創(chuàng)建ComboPooledDataSource對象
ComboPooledDataSource
cpds=newComboPooledDataSource();//設置連接數據庫需要的配置信息
try{
cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT%2B8&useSSL=false");
cpds.setUser("root");
cpds.setPassword("123");//設置連接池的參數
cpds.setInitialPoolSize(5);
cpds.setMaxPoolSize(15);ds=cpds;}catch(Exceptione){thrownewExceptionInInitializerError(e);}}}C3P0通過ComboPooledDataSource創(chuàng)建數據源-示例通過ComboPooledDataSource創(chuàng)建<?xmlversion="1.0"encoding="UTF-8"?><c3p0-config><default-config><propertyname="user">root</property><propertyname="password">123</property><propertyname="driverClass">com.mysql.cj.jdbc.Driver</property><propertyname="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT%2B8&useSSL=false</property><propertyname="checkoutTimeout">30000</property><propertyname="initialPoolSize">10</property><propertyname="maxIdleTime">30</property><propertyname="maxPoolSize">100</property><propertyname="minPoolSize">10</property><propertyname="maxStatements">200</property></default-config></c3p0-config>C3P0通過讀取配置創(chuàng)建數據源-示例創(chuàng)建配置文件publicclassC3P0ConfigUtil{publicstaticDataSourceds=null;//初始化C3P0數據源
static{//使用c3p0-config.xml配置文件
ComboPooledDataSource
cpds=newComboPooledDataSource();ds=cpds;}}C3P0通過讀取配置創(chuàng)建數據源。0102任務實現任務商品的上下架模塊,主要實現商品的上架和下架功能。本任務針對上下架功能開發(fā)過程分為以下模塊:數據池設計、數據訪問層設計、業(yè)務層設計、控制端設計、視圖層設計。數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用現有的數據庫連接。某商城系統(tǒng)中購物車信息展示商品上下架效果展示任務實現(1)數據庫連接池設計<dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId>sss<version></version></dependency>01增加c3p0的相關依賴<?xmlversion="1.0"encoding="UTF-8"?><c3p0-config><default-config><propertyname="user">root</property><propertyname="password">123</property><propertyname="driverClass">com.mysql.cj.jdbc.Driver</property><propertyname="jdbcUrl">jdbc:mysql://:3306/x_mall?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true</property><propertyname="checkoutTimeout">30000</property><propertyname="initialPoolSize">10</property><propertyname="maxIdleTime">30</property><propertyname="maxPoolSize">100</property><propertyname="minPoolSize
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026大唐西藏能源開發(fā)有限公司招聘4人備考題庫完整參考答案詳解
- 2025-2026人教版小學二年級語文上學期測試卷
- 電信副總考試題及答案
- 2025-2026人教版五年級語文期末測試
- 2025 小學六年級科學上冊科學教育中的信息化教學工具熟練使用實例課件
- 新食品衛(wèi)生管理制度
- 鄉(xiāng)村衛(wèi)生站病歷管理制度
- 衛(wèi)生院領導學法制度
- 美容院衛(wèi)生管理六項制度
- 零食店衛(wèi)生制度
- dbj41河南省城市地下綜合管廊施工與驗收標準
- 2026屆新高考語文三輪沖刺復習:二元思辨作文審題構思寫作
- 行業(yè)背景分析報告
- 學堂在線 雨課堂 學堂云 生活英語聽說 期末復習題答案
- DB32T 4401-2022《綜合醫(yī)院建筑設計標準》
- 2020年高考中考考試工作經費項目績效評價報告
- 2017-2022年近六年浙江省寧波市中考數學真題
- 加拿大鞋類市場銷售通
- 表B. 0 .11工程款支付報審表
- 低蛋白血癥的護理查房知識ppt
- 2023自愿離婚協(xié)議書范文(3篇)
評論
0/150
提交評論