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

编程技术  /  houtizong 发布于 3年前   273

惯例:

我是温浩然:

用过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 {@Autowiredpublic 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>
 
 
这样就可以了

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

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客