您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)ibatis中怎么加入c3p0連接池,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
首先打開iBatis的源碼包,找到com.ibatis.sqlmap.engine.datasource包,在里面新建個類,C3p0DataSourceFactory,并實現(xiàn)DataSourceFactory接口,里面的代碼是Java代碼
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void initialize(Map map) {
C3p0Configuration c3p0 = new C3p0Configuration(map);
dataSource = c3p0.getDataSource();
}
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void initialize(Map map) {
C3p0Configuration c3p0 = new C3p0Configuration(map);
dataSource = c3p0.getDataSource();
}
在ibatis下加入c3p0連接池的下一步是到com.ibatis.common.jdbc包里,新建類C3p0Configuration,里面的代碼是。。。太長了,原來在dbcp那部分里,還有單獨加載配置文件的方法,我覺得如果連這個xml都讀不了,那別的一樣沒法讀。
Java代碼
private static final Probe PROBE = ProbeFactory.getProbe();
private DataSource dataSource;
/**
* Constructor to supply a map of properties
*
* @param properties
* - the map of configuration properties
*/
public C3p0Configuration(Map properties) {
try {
dataSource = legacyC3p0Configuration(properties);
} catch (Exception e) {
throw new RuntimeException(
"Error initializing C3p0DataSourceFactory. Cause: " + e, e);
}
}
/**
* Getter for DataSource
*
* @return The DataSource
*/
public DataSource getDataSource() {
return dataSource;
}
private boolean notEmpty(String s) {
return s != null && s.length() > 0;
}
private boolean notSelfString(String s, String compareStr) {
return !s.equalsIgnoreCase(compareStr);
}
private DataSource legacyC3p0Configuration(Map map) {
ComboPooledDataSource combo = null;
try {
if (map.containsKey("JDBC.Driver")) {
combo = new ComboPooledDataSource();
String driverClass = (String) map.get("JDBC.Driver");
String jdbcUrl = (String) map.get("JDBC.ConnectionURL");
String user = (String) map.get("JDBC.Username");
String password = (String) map.get("JDBC.Password");
Class.forName(driverClass);
combo.setDriverClass(driverClass);
combo.setJdbcUrl(jdbcUrl);
combo.setUser(user);
combo.setPassword(password);
String acquireIncrement = (String) map
.get("Pool.acquireIncrement");
if (notEmpty(acquireIncrement)
&& notSelfString(acquireIncrement, "acquireIncrement"))
combo.setAcquireIncrement(Integer
.parseInt(acquireIncrement));
......................
private static final Probe PROBE = ProbeFactory.getProbe();
private DataSource dataSource;
/**
* Constructor to supply a map of properties
*
* @param properties
* - the map of configuration properties
*/
public C3p0Configuration(Map properties) {
try {
dataSource = legacyC3p0Configuration(properties);
} catch (Exception e) {
throw new RuntimeException(
"Error initializing C3p0DataSourceFactory. Cause: " + e, e);
}
}
/**
* Getter for DataSource
*
* @return The DataSource
*/
public DataSource getDataSource() {
return dataSource;
}
private boolean notEmpty(String s) {
return s != null && s.length() > 0;
}
private boolean notSelfString(String s, String compareStr) {
return !s.equalsIgnoreCase(compareStr);
}
private DataSource legacyC3p0Configuration(Map map) {
ComboPooledDataSource combo = null;
try {
if (map.containsKey("JDBC.Driver")) {
combo = new ComboPooledDataSource();
String driverClass = (String) map.get("JDBC.Driver");
String jdbcUrl = (String) map.get("JDBC.ConnectionURL");
String user = (String) map.get("JDBC.Username");
String password = (String) map.get("JDBC.Password");
Class.forName(driverClass);
combo.setDriverClass(driverClass);
combo.setJdbcUrl(jdbcUrl);
combo.setUser(user);
combo.setPassword(password);
String acquireIncrement = (String) map
.get("Pool.acquireIncrement");
if (notEmpty(acquireIncrement)
&& notSelfString(acquireIncrement, "acquireIncrement"))
combo.setAcquireIncrement(Integer
.parseInt(acquireIncrement));
......................
***在com.ibatis.sqlmap.engine.config包里,找到SqlMapConfiguration,在里面找到,加上C3P0就可以實現(xiàn)在ibatis下加入c3p0連接池了
Java代碼
// DATA SOURCE ALIASES
typeHandlerFactory.putTypeAlias("SIMPLE", SimpleDataSourceFactory.class.getName());
typeHandlerFactory.putTypeAlias("DBCP", DbcpDataSourceFactory.class.getName());
typeHandlerFactory.putTypeAlias("C3P0", C3p0DataSourceFactory.class.getName());
typeHandlerFactory.putTypeAlias("JNDI", JndiDataSourceFactory.class.getName());
以上就是ibatis中怎么加入c3p0連接池,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。