Asp.Net Core安全防護-客戶端IP白名單限制
DBUtils:
就是JDBC的簡化開發工具包。需要專案匯入commons-dbutils-1.6.jar才能夠正常使用DBUtils工具。
DBUtils核心功能介紹:
QueryRunner中提供對sql語句操作的API。
ResultSetHandler介面,用於定義select操作後,怎樣封裝結果集。
DbUtils類,它就是一個工具類,定義了關閉資源與事務處理的方法。
QueryRunner:
update(Connection conn, String sql, Object... params) ,用來完成表資料的增加、刪除、更新操作
query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用來完成表資料的查詢操作.
ResultSetHandler:
ArrayHandler |
將結果集中的第一條記錄封裝到一個Object[]陣列中,陣列中的每一個元素就是這條記錄中的每一個欄位的值 |
ArrayListHandler |
將結果集中的每一條記錄都封裝到一個Object[]陣列中,將這些陣列在封裝到List集合中。 |
BeanHandler |
將結果集中第一條記錄封裝到一個指定的javaBean中。 |
BeanListHandler |
將結果集中每一條記錄封裝到指定的javaBean中,將這些javaBean在封裝到List集合中 |
ColumnListHandler |
將結果集中指定的列的欄位值,封裝到一個List集合中 |
ScalarHandler |
它是用於單資料。例如select count(*) from 表操作。 |
MapHandler |
將結果集第一行封裝到Map<String,Object>集合中,Key 列名, Value 該列資料 |
MapListHandler |
將結果集每一行封裝到List<Map<String,Object>>集合中,Key 列名, Value 該列資料,Map集合儲存到List集合 |
JavaBean就是一個類,在開發中常用封裝資料。
ArrayHandler:將結果集中的第一條記錄封裝到一個Object[]陣列中,陣列中的每一個元素就是這條記錄中的每一個欄位的值
ArrayListHandler:將結果集中的每一條記錄都封裝到一個Object[]陣列中,將這些陣列在封裝到List集合中。
BeanHandler :將結果集中第一條記錄封裝到一個指定的javaBean中。
BeanListHandler :將結果集中每一條記錄封裝到指定的javaBean中,將這些javaBean在封裝到List集合中
ColumnListHandler:將結果集中指定的列的欄位值,封裝到一個List集合
ScalarHandler:它是用於單資料。例如select count(*) from 表操作。
package com.oracle.dao; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayHandler; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ColumnListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.apache.taglibs.standard.lang.jstl.test.Bean1; import com.oracle.domain.Sort; import com.oracle.tools.JDBCUtils; import com.oracle.tools.MyDBUtils; public class SortDao { //新增分類 public void add() throws SQLException{ //獲取連結物件 Connection conn=JDBCUtils.getConn(); //建立QueryRunner物件 QueryRunner qr=new QueryRunner(); String sql="insert into sort(sname,sdesc) values(?,?)"; int row=qr.update(conn,sql,"手機","iphone12"); System.out.println(row); } //刪除分類 public void delete() throws SQLException{ Connection conn=JDBCUtils.getConn(); //建立QueryRunner物件 QueryRunner qr=new QueryRunner(); String sql="delete from sort where sid=?"; int row=qr.update(conn,sql,21); System.out.println(row); } //ArrayHandker public void get1() throws SQLException{ Connection conn=JDBCUtils.getConn(); //建立QueryRunner物件 QueryRunner qr=new QueryRunner(); String sql="select * from sort"; Object obj[]=qr.query(conn,sql,new ArrayHandler()); //遍歷 for(Object ob:obj){ System.out.println(ob); } } //ArrayListHandler public void get2() throws SQLException{ Connection conn=JDBCUtils.getConn(); //建立QueryRunner物件 QueryRunner qr=new QueryRunner(); String sql="select * from sort"; List<Object[]> list=qr.query(conn,sql,new ArrayListHandler()); //遍歷 for(Object obj:list){ System.out.print(obj+""); } System.out.println(); } //BeanHandler public void get3() throws SQLException{ Connection conn=JDBCUtils.getConn(); //建立QueryRunner物件 QueryRunner qr=new QueryRunner(); String sql="select * from sort"; Sort sort=qr.query(conn,sql,new BeanHandler<Sort>(Sort.class)); System.out.println(sort); } //BeanListHandler public void get4() throws SQLException{ Connection conn=JDBCUtils.getConn(); //建立QueryRunner物件 QueryRunner qr=new QueryRunner(); String sql="select * from sort"; List<Sort> list=qr.query(conn,sql,new BeanListHandler<Sort>(Sort.class)); System.out.println(list); } //ColumnListHandler public void get5() throws SQLException{ Connection conn=JDBCUtils.getConn(); //建立QueryRunner物件 QueryRunner qr=new QueryRunner(); String sql="select sname from sort"; List<String> list=qr.query(conn,sql,new ColumnListHandler<String>()); System.out.println(list); } //ScalarHandler public void get6() throws SQLException{ //建立QueryRunner物件 QueryRunner qr=new QueryRunner(MyDBUtils.getDataSource()); String sql="select count(*) from sort where sid=?"; Long count=qr.query(sql,new ScalarHandler<Long>(),3); int c=count.intValue(); System.out.println(c); } }
連線池技術:
Java為資料庫連線池提供了公共的介面:javax.sql.DataSource,各個廠商需要讓自己的連線池實現這個介面。這樣應用程式可以方便的切換不同廠商的連線池!
常見的連線池:DBCP、C3P0。
需要先匯入2個jar包。
package com.oracle.tools; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; public class MyDBUtils { public static final String DRIVER = "com.mysql.jdbc.Driver"; public static final String URL = "jdbc:mysql://localhost:3306/demo0803?characterEncoding=utf8"; public static final String USERNAME = "root"; public static final String PASSWORD = "123456"; /* * 建立連線池BasicDataSource */ public static BasicDataSource dataSource = new BasicDataSource(); //靜態程式碼塊 static { //對連線池物件 進行基本的配置 dataSource.setDriverClassName(DRIVER); // 這是要連線的資料庫的驅動 dataSource.setUrl(URL); //指定要連線的資料庫地址 dataSource.setUsername(USERNAME); //指定要連線資料的使用者名稱 dataSource.setPassword(PASSWORD); //指定要連線資料的密碼 } /* * 返回連線池物件 */ public static DataSource getDataSource(){ return dataSource; } //獲取連線物件 public static Connection getConn(){ Connection conn=null; try { conn=dataSource.getConnection(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } }
作用:自身維護了多個Connection連線物件維護
BasicDataSource類 是 DataSource介面的實現類
DataSource介面,它是java與每種資料庫連線池 連線的規範標準
DBCP連線池常見的配置:
必須項 |
driverClassName |
資料庫驅動名稱 |
url |
資料庫的地址 |
|
username |
使用者名稱 |
|
password |
密碼 |
|
基本項 |
maxActive |
最大連線數量 |
initialSize |
連線池中初始化多少個Connection連線物件 |
|
擴充套件項 |
maxWait |
超時等待時間以毫秒為單位 1000等於1秒 |