`
我是温浩然
  • 浏览: 95973 次
文章分类
社区版块
存档分类
最新评论

spring mvc + mybatis配置多个数据源问题。

 
阅读更多

惯例:

我是温浩然:

用过spring MVC的都知道,项目的每一小块,都分成,controller,dao,service,module,基本是这四块,分别是,实现需求的控制器,数据库操作的方法,实现需求的方法,和实体类。

用mybatis来改装后,dao就会被mapper来代替了。


但是有一个问题,如果一个项目中,模块不多,没必要按照每个模块来划分,但是,还是根据spring mvc的模式来划分,就很有可能,多个数据源,都放到同一个dao,中。

也就是,多个数据库放到同一个mapper中,这样,只是简单的吧mybatis配置复制一份改改名字,就是不行的了。

就需要用其他的配置方法。

这篇博客没写完就发表了,可能坑了很多人把,现在把他完善一下。

查看源码,可以找到

在mybatis-spring 1.2.0中,有这么一个东西。

org.mybatis.spring.support.SqlSessionDaoSupport.class

这个类里面有这么一个方法。

  public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
    this.sqlSession = sqlSessionTemplate;
    this.externalSqlSession = true;
  }

mybatis中,需要配置mapper.Java文件么。

这个地方,让他继承自SqlSessionDaoSupport这个类。

下面是我自己写的mapper.java文件。

package com.tujia.babycard.mapper;
import java.util.List;
import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.support.SqlSessionDaoSupport;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import com.tujia.babycard.entity.BabyStage;

@Repository("babyGrowStageMapper")
public class BabyGrowStageMapper extends SqlSessionDaoSupport {

	@Autowired
	public void setSqlSessionFactory(
			@Qualifier("sqlSessionFactory.veidoo") SqlSessionFactory sqlMapClient) {
		super.setSqlSessionFactory(sqlMapClient);
	}
	
	public List<BabyStage> getStages() {	
		return this.getSqlSession().selectList("getStages");
	}
	public BabyStage getCurrentSatge(long moonAge){
		return this.getSqlSession().selectOne("getCurrentStage", moonAge);
	}
	public void createStage(final BabyStage stage) {
		this.getSqlSession().insert("createStage", stage);
	}
	public void updateStage(final BabyStage stage){
		this.getSqlSession().update("updateStage", stage);
	}
	public Long  getStageVersion(){
		return this.getSqlSession().selectOne("getStagever");
	}
}

大家注意这个地方:

@Qualifier("sqlSessionFactory.veidoo") 

这个就是我在与数据库连接中的配置了。

<bean id="sqlSessionFactory.veidoo" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="veidooMaster" /><!-- 这里连接数据库 -->
		<property name="mapperLocations">
      		<list>
<pre name="code" class="html">                        <!-- 这里配置这个数据库对应的mapper.xml文件 -->
<pre name="code" class="html">                        <value>classpath:com/tujia/babycard/mapper/BabyCardMapper.xml</value>
        		<value>classpath:com/tujia/babycard/mapper/BabyStageMapper.xml</value>
      	</list>
    </property>
	</bean>



这样就可以了

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics