ibatisデータソースの構成
10253 ワード
次のコードがあります.
最下位のdaoインタフェース:
最下位のdao実装
ライブラリはdao実装クラスのサブクラスを継承しました
ビジネス層のdao
ビジネス層のdao実装
注:ビジネス・レイヤは、リポジトリのdao実装を継承しています.
プロファイルxml
プロファイルsql-map-global-login-config.xml
ibatisプロファイルglobal.xml:
データソースプロファイル:jdbc.properties
最下位のdaoインタフェース:
public interface Dao {
Object getObject(Class clazz, Object obj) throws DataAccessException;
List getObjects(Class clazz, Object obj) throws DataAccessException;
List getObjectsByPage(Class clazz, Object obj, int skipResults, int maxResults) throws DataAccessException;
Object insert(Class clazz, Object obj) throws DataAccessIntegrityViolationException, DataAccessException;
int update(Class clazz, Object obj) throws DataAccessIntegrityViolationException, DataAccessException;
int delete(Class clazz, Object obj) throws DataAccessIntegrityViolationException, DataAccessException;
int getCount(Class clazz, Object obj) throws DataAccessException;
int getCount(String statement, Object obj) throws DataAccessException;
List getObjects(Object statement, Object obj) throws DataAccessException;
Object insert(String statment, Object obj) throws DataAccessIntegrityViolationException, DataAccessException;
int update(String statment, Object obj) throws DataAccessIntegrityViolationException, DataAccessException;
int delete(String statment, Object obj) throws DataAccessIntegrityViolationException, DataAccessException;
Object getObject(String statment, Object obj) throws DataAccessException;
List getObjects(String statment, Object obj) throws DataAccessException;
List getObjectsByPage(String statment, Object obj, int skipResults, int maxResults) throws DataAccessException;
SqlMapClientTemplate getSqlMapTemplate() throws Exception;
}
最下位のdao実装
public class XzBaseDao extends SqlMapClientDaoSupport implements Dao {
public SqlMapClientTemplate getSqlMapTemplate() throws Exception {
return super.getSqlMapClientTemplate();
}
public Object getObject(String statment, Object obj) throws DataAccessException {
try {
return getSqlMapClientTemplate().queryForObject(statment, obj);
} catch (Exception e) {
throw new DataAccessException(e);
}
}
public List getObjects(String statement, Object obj) throws DataAccessException {
try {
return getSqlMapClientTemplate().queryForList(statement, obj);
} catch (Exception e) {
throw new DataAccessException(e);
}
}
public Object getObject(Class clazz, Object obj) throws DataAccessException {
try {
return getSqlMapClientTemplate().queryForObject(getFindQuery(ClassUtils.getShortClassName(clazz)), obj);
} catch (Exception e) {
throw new DataAccessException(e);
}
}
public List getObjects(Class clazz, Object obj) throws DataAccessException {
try {
return getSqlMapClientTemplate().queryForList(getSelectQuery(ClassUtils.getShortClassName(clazz)), obj);
} catch (Exception e) {
throw new DataAccessException(e);
}
}
。。。。。。。。。。
protected String getFindQuery(String className) {
return className + ".get" + className;
}
protected String getSelectQuery(String className) {
return className + ".get" + className + "s";
}
protected String getInsertQuery(String className) {
return className + ".insert";
}
protected String getUpdateQuery(String className) {
return className + ".update";
}
protected String getDeleteQuery(String className) {
return className + ".delete";
}
protected String getCountQuery(String className) {
return className + ".getCount";
}
}
ライブラリはdao実装クラスのサブクラスを継承しました
public class GlobalLoginSqlMapDao extends XzBaseDao {
}
ビジネス層のdao
public interface PlayerBaseInfoDao {
public List<PlayerBaseInfoPo> selectPlayerBaseInfo(List<String> uids)throws Exception;
public void insertPlayerBaseInfoPo(PlayerBaseInfoPo playerBaseInfoPo)throws Exception;
public void updatePlayerBaseInfoPo(Map<String,Object> map)throws Exception;
public PlayerBaseInfoPo getPlayerBaseInfo(String uid)throws Exception;
}
ビジネス層のdao実装
public class PlayerBaseInfoDaoImpl extends GlobalLoginSqlMapDao
implements PlayerBaseInfoDao {
@Override
public void insertPlayerBaseInfoPo(PlayerBaseInfoPo playerBaseInfoPo) throws Exception {
insert("global.insertPlayerBaseInfoPo", playerBaseInfoPo);
}
@SuppressWarnings("unchecked")
@Override
public List<PlayerBaseInfoPo> selectPlayerBaseInfo(List<String> uids) throws Exception {
if(uids==null||uids.isEmpty()){
return null;
}
Map<String,Object> map = new HashMap<String,Object>();
map.put("uids", uids);
return getObjects("global.selectPlayerBaseInfo", map);
}
。。。。。。
}
注:ビジネス・レイヤは、リポジトリのdao実装を継承しています.
プロファイルxml
<bean id="globalLoginSqlMapDao" class="com.fiveagame.sns.xztx.persistence.sqlmapdao.GlobalLoginSqlMapDao">
<property name="sqlMapClient" ref="sqlMapClientGlobalLogin
"/>
</bean>
<bean id="sqlMapClientGlobalLogin" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:ibatis/sql-map-global-login-config.xml
</value>
</property>
<property name="dataSource" ref="dataSourceGlobalLogin" />
</bean>
<!-- login -->
<bean id="dataSourceGlobalLogin" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${database.driverLogin}" />
<property name="url" value="${database.urlLogin}" />
<property name="username" value="${database.usernameLogin}" />
<property name="password" value="${database.passwordLogin}" />
<!-- 。 0 。 -->
<property name="maxActive" value="20" />
<!-- -->
<property name="maxWait" value="500" />
<!-- 。 0 。 -->
<property name="maxIdle" value="3" />
<property name="defaultAutoCommit" value="true" />
<!-- -->
<property name="removeAbandoned" value="true" />
<!-- ( ) -->
<property name="removeAbandonedTimeout" value="60" />
</bean>
プロファイルsql-map-global-login-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="true"/>
<typeAlias alias="string" type="java.lang.String" />
<typeAlias alias="int" type="java.lang.Integer" />
<typeAlias alias="byte" type="java.lang.Byte" />
<typeAlias alias="map" type="java.util.Map" />
<sqlMap resource="ibatis/global.xml" />
</sqlMapConfig>
ibatisプロファイルglobal.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="global">
<typeAlias alias="loginPo" type="com.xxx.LoginPo"/>
<typeAlias alias="changeUcPo" type="com.xxx.global.entity.NinetravelChangeUcPo"/>
<select id="getUcPo" parameterClass="string" resultClass="changeUcPo">
select * from xx where ninetravelNumber=#uid#;
</select>
............
</sqlMap>
データソースプロファイル:jdbc.properties
database.driverLogin=at.fpmedv.jdbc.LoggingDriver
database.urlLogin=jdbcdecorator:jdbc:mysql://localhost:3306/jian_login?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=round
database.usernameLogin=root
database.passwordLogin=jian