Database Operation Tool class, for your reference.
Package com.itjh.javaUtil;
Import java.sql.Connection;
Import Java.sql.DriverManager;
Import java.sql.PreparedStatement;
Import Java.sql.ResultSet;
Import Java.sql.ResultSetMetaData;
Import java.sql.SQLException;
Import java.util.ArrayList;
Import java.util.Collections;
Import Java.util.HashMap;
Import java.util.List;
Import Java.util.Map;
Import Org.apache.commons.dbcp.ConnectionFactory;
Import Org.apache.commons.dbcp.DriverManagerConnectionFactory;
Import Org.apache.commons.dbcp.PoolableConnectionFactory;
Import Org.apache.commons.dbcp.PoolingDriver;
Import Org.apache.commons.dbutils.DbUtils;
Import Org.apache.commons.dbutils.QueryRunner;
Import Org.apache.commons.dbutils.handlers.MapListHandler;
Import Org.apache.commons.pool.ObjectPool;
Import Org.apache.commons.pool.impl.GenericObjectPool; /** * Connect the database to a comprehensive class.
</br> * Dependent Jar Pack: commons.dbcp-1.4,commons.dbutils-1.3,commons.pool-1.5.4 package. * * @author Jiangshuai * @date October 03, 2016/public class Dbutil {private String Dri = null;
Private String URL = null;
Private String username = null;
Private String password = null; Private String poolname = null; Connection pool name private Objectpool ConnectionPool = null;
Connection pool//corresponding timed query class private querythread querythread = null; /** * Function: Constructor * * @author Jiangshuai * @date October 03, 2016 * @param dri * Drive a full class name, for example:
Com.mysql.jdbc.Driver. * @param URL * Database URL connection, for example: * "Jdbc:mysql://127.0.0.1:3306/test?autoreconnect=true&use
Unicode=true&characterencoding=utf-8 "* @param userName * Database username, for example: root * @param password
* Database password, for example: ABC * @param poolname * The name of the database connection pool created, such as mypool, note that a Web container cannot duplicate this name. */Public Dbutil (string dri, string URL, string userName, string password, string poolname) {This
. Dri = DRI;
This.url = URL;
This.username = Username; This.password = password;
This.poolname = poolname;
/** * Executes SQL. * @param conn * connection * @param pstm * preparedstatement * @return int executes SQL pair
should affect the line. * @throws SQLException * @author Jiangshuai * @date October 03, 2016/public int execute (Connection conn,
PreparedStatement pstm) throws SQLException {try {return pstm.executeupdate ();
Finally {close (conn);
}/** * Query sql. * * @param conn * @param pstm * PreparedStatement * @return List<ma
Result set of p<string,object>> query * @throws SQLException * @author Jiangshuai * @date October 03, 2016 * * Public list<map<string, object>> query (Connection conn, PreparedStatement pstm) throws Sqlexcep
tion {try {return resultsettolist (Pstm.executequery ()); } finally {Close (conn); }/** * Features: ResultSet to list<map<string,object>> * * * @param RS * ResultSet Raw DataSet * @return list<map<string,object>> * @throws java.sql.SQLException * @autho R Jiangshuai * @date October 03, 2016 * * Private list<map<string, object>> resultsettolist (ResultSet
RS) throws Java.sql.SQLException {if (rs = = null) return collections.empty_list; ResultSetMetaData MD = Rs.getmetadata (); The structure information of the result set (RS) is obtained, such as the number of fields, the field name and so on int columnCount = Md.getcolumncount (); Returns the number of columns in this ResultSet object list<map<string, object>> List = new arraylist<map<string, Object>>
;();
map<string, object> rowdata = new hashmap<string, object> ();
while (Rs.next ()) {rowdata = new hashmap<string, object> (ColumnCount); for (int i = 1; I <= columnCount;i++) {rowdata.put (Md.getcolumnname (i), rs.getobject (i));
} list.add (RowData);
} return list;
/** * Query SQL statements. * * @param SQL * Executed SQL statement * @return list<map<string,object>> * @throws sqlexce ption * @author Jiangshuai * @date October 03, 2016 * * Public list<map<string, object>> query (St
Ring sql) throws SQLException {list<map<string, object>> results = null;
Connection conn = null;
try {conn = getconnection ();
Queryrunner qr = new Queryrunner ();
Results = qr.query (conn, SQL, New Maplisthandler ());
Finally {close (conn);
return results;
/** * Query SQL statements based on parameters * * @param SQL * SQL statement * @param param * Parameters * @return list<map<string,object>> * @throws sqlexceptIon * @author Jiangshuai * @date October 03, 2016 * * Public list<map<string, object>> query (stri
ng sql, Object param) throws SQLException {list<map<string, object>> results = null;
Connection conn = null;
try {conn = getconnection ();
Queryrunner qr = new Queryrunner ();
Results = (list<map<string, object>>) qr.query (conn, SQL, param, New Maplisthandler ());
catch (SQLException e) {e.printstacktrace ();
Finally {close (conn);
return results; /** * Execute SQL statement * * @param SQL * Executed SQL statement * @return affected rows * @throws Except
Ion * @author Jiangshuai * @date October 03, 2016/public int execute (String sql) throws Exception {
Connection conn = getconnection ();
int rows = 0; try {queryrunner qr =New Queryrunner ();
rows = qr.update (conn, SQL);
Finally {close (conn);
} return rows; /** * Execute SQL statement with parameters * * @param SQL * Executed SQL statement * @param params * Parameter * @return return affected rows * @throws Exception * @author Jiangshuai * @date October 03, 2016/Public
int execute (String sql, object[] params) throws Exception {Connection conn = getconnection ();
int rows = 0;
try {queryrunner qr = new Queryrunner ();
rows = qr.update (conn, SQL, params);
Finally {close (conn);
} return rows; /** * Close Connection * * @param conn * @throws SQLException * @author Jiangshuai * @date 2016 October 03 */public void Close (Connection conn) throws SQLException {if (conn!= null) {CONN.C
Lose ();
} dbutils.closequietly (conn); /** * Start Connection Pool * * @author Jiangshuai * @date October 03, 2016/private void Startpool ()
{try {class.forname (DRI);
catch (ClassNotFoundException E1) {e1.printstacktrace ();
} if (ConnectionPool!= null) {Shutdownpool ();
try {connectionpool = new Genericobjectpool (null);
ConnectionFactory connectionfactory = new drivermanagerconnectionfactory (URL, username, password); Poolableconnectionfactory poolableconnectionfactory = new Poolableconnectionfactory (Connec
Tionfactory, ConnectionPool, NULL, "SELECT 1", false, true);
Class.forName ("Org.apache.commons.dbcp.PoolingDriver");
Poolingdriver Driver = (poolingdriver) drivermanager. Getdriver ("JDBC:APACHE:COMMONS:DBCP:"); Driver.registerpool (poolname, POOLABLECONNECTIONFACtory.getpool ());
catch (Exception e) {e.printstacktrace ();
//Open the query program Querythread = new Querythread (this);
Querythread.start (); /** * Close Connection Pool * * @author Jiangshuai * @date October 03, 2016/private void Shutdownpool () {try {poolingdriver driver = (poolingdriver) drivermanager. Getdriver ("Jdbc:apa
CHE:COMMONS:DBCP: ");
Driver.closepool (poolname);
Turn off the timed query Querythread.setstartquery (FALSE);
catch (SQLException e) {e.printstacktrace (); }/** * Get a connection * * @return * @author Jiangshuai * @date October 03, 2016/Publi
C synchronized Connection getconnection () {Connection conn = null;
try {if (ConnectionPool = null) Startpool ();
conn = Drivermanager.getconnection ("JDBC:APACHE:COMMONS:DBCP:" + poolname);
catch (Exception e) {e.printstacktrace ();
Return conn;
}/** * When the connection pool is started, the database is automatically timed to prevent the database connection from timing out.
* * @author Jiangshuai * @date October 03, 2016/class Querythread extends Thread {private Dbutil dbutil = null;
Whether to open query private Boolean startquery = true;
/** * Function: The corresponding database connection. * * @author Jiangshuai * @date October 03, 2016 * @param dbutil * Database connection/Public Query
Thread (Dbutil dbutil) {this.dbutil = Dbutil;
public void Run () {while (true) {try {if (startquery) {
This.dbUtil.query ("SELECT 1");
}//System.out.println (startquery+ "123");
catch (Exception e) {e.printstacktrace ();
Finally {try {thread.sleep (120000);
catch (Interruptedexception e) { E.printstacktrace (); }}} public void Setstartquery (Boolean startquery) {//System.out.println ("Start
Query shut: "+startquery);
This.startquery = Startquery; }
}