如下代码:
最底层的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实现
配置文件applicationContext-datasource.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
分享到:
相关推荐
给定的XML配置文件展示了如何在Spring中配置ibatis数据源以及ibatis事务管理器。首先,注释掉的`BasicDataSource`部分是用来配置数据源的,这里没有启用,而是选择了使用JNDI数据源。实际生产环境中,通常会使用...
1. **创建XML配置文件**:在项目中创建一个名为`mybatis-config.xml`的文件,这是iBATIS的全局配置文件,用于定义数据源、事务管理器等。同时,也需要为每个Mapper创建单独的XML文件,如`UserMapper.xml`,其中包含...
在这个类中,我们可以实现数据源的切换逻辑,例如通过配置文件、API调用或者其他方式来决定使用哪个数据源。 当需要使用数据源时,我们不再直接实例化原始的`DataSource`对象,而是创建其装饰版本。这样,在不改变...
-- 数据源配置 --> <!-- JNDI数据源配置 --> <value>java:/oracle/payment ``` #### 配置iBatis SqlMapClient 接下来配置了iBatis的SqlMapClient,这里使用的是Spring的`...
全局配置文件SqlMapConfig.xml是IBatis的入口,用于配置数据源、事务管理器等信息。例如,对于MySQL数据库,可以在SqlMapConfig.xml中添加如下配置: ```xml , iBatisNet.DataProviders.MySql"/> ;user=...
通过上述解析,我们可以看出ibatis配置文件在ibatis框架中的核心地位,它不仅定义了数据源和事务管理策略,还指定了SQL映射文件的位置,使得ibatis能够根据配置正确地执行SQL语句,完成数据库操作。
- **dataSource**:数据源配置,类型为`SIMPLE`,表示简单的数据源配置。 - **sqlMap**:指定SQL映射文件的位置,在本例中指向`Student.xml`。 ##### 3. Student.xml 文件 `Student.xml` 文件是具体的SQL映射文件...
这个文件中包含了数据源、事务管理器、环境配置、Mappers等重要元素的定义。例如: ```xml ``` 在这个配置文件中,我们定义了开发环境的数据源和事务管理器,并指定了Mapper文件的...
2. **Configuration**: 配置对象,存储了所有关于Ibatis的配置信息,包括数据源、映射文件、事务管理等。 3. **Mapper**: Mapper接口和Mapper XML 文件,定义了SQL操作。接口方法对应SQL的执行,XML文件中包含具体...
在数据读写分离的环境中,iBATIS可以通过配置不同的数据源,分别连接读库和写库。Spring可以管理和切换这些数据源,使得在执行写操作时使用写库,而在读操作时使用读库。 为了实现上述功能,我们需要集成和配置相关...
1. **SqlMapConfig.xml**:这是整个iBATIS系统的配置文件,包含了数据源、事务管理器以及其他相关设置。开发者在此文件中定义数据库连接信息,以及映射文件的位置。 2. **Mapper接口/SqlMap.xml**:Mapper接口是...
这里的`<sqlMapConfig>`是配置文件的根元素,其中包含了一系列的设置和数据源配置。 ### 设置部分 配置文件中的`<settings>`标签包含了多个关键参数,它们控制着ibatis的行为特性: - `cacheModelsEnabled`: 控制...
2. `sqlMapConfig.xml`:iBatis的配置文件,定义了数据源、事务管理器以及映射文件的位置。 标签中提到的`springmvc`是Spring的一个模块,Spring MVC提供了模型-视图-控制器架构,用于处理HTTP请求和响应。配置...
4. `<dataSource>`:数据源配置,包含连接池信息。 5. `<mapper>`:引用SQL映射文件,如`UserMapper.xml`,其中包含具体的SQL语句和结果映射。 四、整合配置 在实际应用中,Spring会作为容器管理Struts2的Action和...
-- 数据源配置 --> ``` 2. **映射文件(mapper.xml)** 映射文件是定义SQL语句的地方,包括插入、更新、删除、查询等操作。比如: ```xml <!DOCTYPE mapper PUBLIC "-//mybatis.org//...
当项目需要连接多个不同的数据库,例如处理来自不同系统的数据,或者实现读写分离等需求时,多数据源配置就显得尤为重要。"SSM多数据源同包"指的是在同一个项目或应用程序中,使用SSM框架来管理并同时操作多个数据源...
这是Ibatis的核心配置文件,它定义了数据源、事务管理器、SqlSessionFactory以及SqlMapClient等关键组件。主要元素包括: - `<transactionManager>`:定义事务管理器,通常使用JDBC类型的事务管理器。 - `...