`
zheng0324jian
  • 浏览: 182237 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ibatis数据源的配置

阅读更多

如下代码:

最底层的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

 

 

分享到:
评论

相关推荐

    Spring+ibatis 保留ibatis事务的配置

    给定的XML配置文件展示了如何在Spring中配置ibatis数据源以及ibatis事务管理器。首先,注释掉的`BasicDataSource`部分是用来配置数据源的,这里没有启用,而是选择了使用JNDI数据源。实际生产环境中,通常会使用...

    ibatis用xml配置文件配置使用

    1. **创建XML配置文件**:在项目中创建一个名为`mybatis-config.xml`的文件,这是iBATIS的全局配置文件,用于定义数据源、事务管理器等。同时,也需要为每个Mapper创建单独的XML文件,如`UserMapper.xml`,其中包含...

    装饰模式 切换 ibatis 多数据源

    在这个类中,我们可以实现数据源的切换逻辑,例如通过配置文件、API调用或者其他方式来决定使用哪个数据源。 当需要使用数据源时,我们不再直接实例化原始的`DataSource`对象,而是创建其装饰版本。这样,在不改变...

    SPRING IBATIS 保留IBATIS事务的配置方式

    -- 数据源配置 --&gt; &lt;!-- JNDI数据源配置 --&gt; &lt;value&gt;java:/oracle/payment ``` #### 配置iBatis SqlMapClient 接下来配置了iBatis的SqlMapClient,这里使用的是Spring的`...

    IBatis.net 配置各种数据库

    全局配置文件SqlMapConfig.xml是IBatis的入口,用于配置数据源、事务管理器等信息。例如,对于MySQL数据库,可以在SqlMapConfig.xml中添加如下配置: ```xml , iBatisNet.DataProviders.MySql"/&gt; ;user=...

    ibatis 配置文件详解

    通过上述解析,我们可以看出ibatis配置文件在ibatis框架中的核心地位,它不仅定义了数据源和事务管理策略,还指定了SQL映射文件的位置,使得ibatis能够根据配置正确地执行SQL语句,完成数据库操作。

    ibatis配置文件信息

    - **dataSource**:数据源配置,类型为`SIMPLE`,表示简单的数据源配置。 - **sqlMap**:指定SQL映射文件的位置,在本例中指向`Student.xml`。 ##### 3. Student.xml 文件 `Student.xml` 文件是具体的SQL映射文件...

    Ibatis的应用和配置

    这个文件中包含了数据源、事务管理器、环境配置、Mappers等重要元素的定义。例如: ```xml ``` 在这个配置文件中,我们定义了开发环境的数据源和事务管理器,并指定了Mapper文件的...

    ibatis源代码

    2. **Configuration**: 配置对象,存储了所有关于Ibatis的配置信息,包括数据源、映射文件、事务管理等。 3. **Mapper**: Mapper接口和Mapper XML 文件,定义了SQL操作。接口方法对应SQL的执行,XML文件中包含具体...

    Spring+Struts+ibatis下配置数据读写分离及事务(一)

    在数据读写分离的环境中,iBATIS可以通过配置不同的数据源,分别连接读库和写库。Spring可以管理和切换这些数据源,使得在执行写操作时使用写库,而在读操作时使用读库。 为了实现上述功能,我们需要集成和配置相关...

    iBATIS开放源代码

    1. **SqlMapConfig.xml**:这是整个iBATIS系统的配置文件,包含了数据源、事务管理器以及其他相关设置。开发者在此文件中定义数据库连接信息,以及映射文件的位置。 2. **Mapper接口/SqlMap.xml**:Mapper接口是...

    ibatis配置文件

    这里的`&lt;sqlMapConfig&gt;`是配置文件的根元素,其中包含了一系列的设置和数据源配置。 ### 设置部分 配置文件中的`&lt;settings&gt;`标签包含了多个关键参数,它们控制着ibatis的行为特性: - `cacheModelsEnabled`: 控制...

    spring+ibatis配置实例

    2. `sqlMapConfig.xml`:iBatis的配置文件,定义了数据源、事务管理器以及映射文件的位置。 标签中提到的`springmvc`是Spring的一个模块,Spring MVC提供了模型-视图-控制器架构,用于处理HTTP请求和响应。配置...

    spring+struts+ibatis用到的配置文件模板

    4. `&lt;dataSource&gt;`:数据源配置,包含连接池信息。 5. `&lt;mapper&gt;`:引用SQL映射文件,如`UserMapper.xml`,其中包含具体的SQL语句和结果映射。 四、整合配置 在实际应用中,Spring会作为容器管理Struts2的Action和...

    ibatis相关配置

    -- 数据源配置 --&gt; ``` 2. **映射文件(mapper.xml)** 映射文件是定义SQL语句的地方,包括插入、更新、删除、查询等操作。比如: ```xml &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//...

    SSM多数据源同包

    当项目需要连接多个不同的数据库,例如处理来自不同系统的数据,或者实现读写分离等需求时,多数据源配置就显得尤为重要。"SSM多数据源同包"指的是在同一个项目或应用程序中,使用SSM框架来管理并同时操作多个数据源...

    ibatis配置文件模板

    这是Ibatis的核心配置文件,它定义了数据源、事务管理器、SqlSessionFactory以及SqlMapClient等关键组件。主要元素包括: - `&lt;transactionManager&gt;`:定义事务管理器,通常使用JDBC类型的事务管理器。 - `...

Global site tag (gtag.js) - Google Analytics