<dependency> <groupId>me.lovegao</groupId> <artifactId>gdao</artifactId> <version>0.0.2-SNAPSHOT</version> </dependency>
須要先將gdao項目(https://github.com/shuimutong/gdao.git)打包加到本地倉庫。mysql
0.0.2版本:tag:dev-1-initgit
0.0.3版本:tag:dev-2-tag-fixgithub
##驅動名稱 driverName=com.mysql.jdbc.Driver ##鏈接url connectionUrl=jdbc:mysql://localhost:3306/simple?useServerPrepStmts=false&rewriteBatchedStatements=true&connectTimeout=1000&useUnicode=true&characterEncoding=utf-8 ##用戶名 userName=ss ##用戶密碼 userPassword=111111 ##初始化鏈接數 initConnectionNum=10 ##最大鏈接數 maxConnectionNum=50 ##最大查詢等待時間 maxQueryTime=3
##驅動名稱 driverName=com.mysql.jdbc.Driver ##鏈接url connectionUrl=jdbc:mysql://localhost:3306/simple?useServerPrepStmts=false&rewriteBatchedStatements=true&connectTimeout=1000&useUnicode=true&characterEncoding=utf-8 ##用戶名 userName=simple ##用戶密碼 userPassword=123456 ##初始化鏈接數 initConnectionNum=10 ##最大鏈接數 maxConnectionNum=50 ##最大查詢等待時間 maxQueryTime=3 #########v03########## #歸還鏈接時檢測鏈接,true false checkConnectionWhenReturn=true #鏈接檢測語句(檢測必填) checkConnectionValidationQuery=select 1 #定時檢測鏈接間隔時長(分鐘) periodCheckConnectionTimeMin=10 #鏈接泄露檢測 connectionLeakCheck=true #鏈接泄露檢測間隔時長(分鐘),需大於0 connectionLeakCheckPeriodTimeMin=10 #強制歸還鏈接時長(小時),0表明不檢測 forceReturnConnectionTimeHour=6
0.0.3版本至關於上一個版本,主要是增長了鏈接檢測。sql
鏈接檢測包括3部分:歸還鏈接時檢測,鏈接定時檢測,鏈接泄露檢測。數據庫
1)檢測必須配置的字段:checkConnectionValidationQuery=select 1測試
2)歸還鏈接時檢測ui
在歸還鏈接時檢測鏈接是否可用。this
配置字段:checkConnectionWhenReturn=trueurl
3)鏈接定時檢測spa
定時檢測鏈接池中的鏈接是否可用。若是不可用,就進行關閉處理,防止鏈接池中存放的鏈接是無用鏈接。
配置字段:periodCheckConnectionTimeMin=10,若是值爲0,則不進行此項檢測
4)鏈接泄露檢測
防止鏈接被借出以後不歸還,可能致使鏈接池數量不少,可是無可用鏈接。
配置字段:
forceReturnConnectionTimeHour=6,若是鏈接借出時長超過這個值,就會關閉鏈接,而後從鏈接池以後移除,若是爲0,則表明不檢測;
connectionLeakCheckPeriodTimeMin=10,檢測是由線程進行檢測的,這個字段表示線程每一個多久檢測一次
1 package me.lovegao.gdao.dos; 2 3 import me.lovegao.gdao.bean.annotation.GColumn; 4 import me.lovegao.gdao.bean.annotation.GId; 5 import me.lovegao.gdao.bean.annotation.GTable; 6 7 @GTable("t_user") 8 public class UserDo { 9 @GId(isAutoIncrease=true) 10 @GColumn(name="id") 11 private long id; 12 13 @GColumn(name="name") 14 private String name; 15 16 @GColumn(name="age") 17 private int age; 18 19 public long getId() { 20 return id; 21 } 22 public void setId(long id) { 23 this.id = id; 24 } 25 public String getName() { 26 return name; 27 } 28 public void setName(String name) { 29 this.name = name; 30 } 31 public int getAge() { 32 return age; 33 } 34 public void setAge(int age) { 35 this.age = age; 36 } 37 38 }
CREATE TABLE `t_user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵', `name` varchar(255) NOT NULL DEFAULT '' COMMENT '名稱', `age` int(15) NOT NULL DEFAULT 0 COMMENT '年齡', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='測試-用戶表';
package me.lovegao.gdao.dao; import me.lovegao.gdao.dos.UserDo; import me.lovegao.gdao.orm.BaseDao; import me.lovegao.gdao.sqlexecute.ISqlExecutor; public class UserDao extends BaseDao<UserDo, Long> { public UserDao(ISqlExecutor sqlExecutor) { super(sqlExecutor); } }
public static void main(String[] args) throws Exception { ISqlExecutor sqlExecutor = initDao(); addTest(sqlExecutor); } public static void addTest(ISqlExecutor sqlExecutor) throws Exception { //實例化UserDao UserDao userDao = new UserDao(sqlExecutor); UserDo[] uds = listUser(); //獲取測試數據 System.out.println("準備開始添加"); userDao.add(uds[0]); //添加數據 System.out.println("開始添加---"); long t1 = System.currentTimeMillis(); for(int i=1; i<uds.length; i++) { userDao.add(uds[i]); } long t2 = System.currentTimeMillis(); double useTime = t2 - t1; //5000條,totalUseTime:8629.0ms,avgUseTime:1.7261452290458092ms System.out.println("totalUseTime:" + useTime + "ms,avgUseTime:" + useTime/(uds.length-1) + "ms"); } //初始化資源管理,sql執行 public static ISqlExecutor initDao() throws Exception { Properties prop = new Properties(); String confPath = "/mysql.properties"; prop.load(DaoTest.class.getResourceAsStream(confPath)); //0.0.2版本 DaoResourceManager daoResource = new DaoResourceManager(prop); //0.0.3版本 DaoResourceManager daoResource = new DaoResourceManager(prop, true); //獲取sql執行器 ISqlExecutor sqlExecutor = daoResource.getSqlExecutor(); return sqlExecutor; }