Mybatis配置數(shù)據(jù)源

Mybatis數(shù)據(jù)源配置簡介

Mybatis可以配置成適應(yīng)多種環(huán)境,這種機制有助于將SQL映射應(yīng)用于多種數(shù)據(jù)庫之中辐啄。例如:開發(fā)采章,測試和生產(chǎn)環(huán)境需要不同的配置,或者共享相同的Schema的多個數(shù)據(jù)庫壶辜,想使用相同的sql映射悯舟。如果想連接兩個數(shù)據(jù)庫,就需要創(chuàng)建兩個SQlSessionFactory實例砸民,每個數(shù)據(jù)庫對應(yīng)一個抵怎。而如果是三個數(shù)據(jù)庫奋救,就需要三個實例,以此類推反惕。注意:可以配置多個環(huán)境尝艘,每個 SqlSessionFactory 實例只能選擇其一,即每個數(shù)據(jù)庫對應(yīng)一個SqlSessionFactory實例姿染。

【配置示例】

環(huán)境元素配置環(huán)境:

<!--默認的環(huán)境ID   development : 開發(fā)模式  work : 工作模式-->
<environments default="development">
         <!--每個 environment 元素定義的環(huán)境 ID-->  
         <environment id="development">  
             <!--事務(wù)管理器的配置-->
             <transactionManager type="JDBC" />  
             <!-- 配置數(shù)據(jù)庫連接信息 -->  
             <dataSource type="POOLED">  
                 <!-- value屬性值引用db.properties配置文件中配置的值 -->  
                 <property name="driver" value="${driver}" />  
                 <property name="url" value="${url}" />  
                 <property name="username" value="${name}" />  
                 <property name="password" value="${password}" />  
             </dataSource>  
        </environment>  
 </environments>  

MyBatisTest類中測試配置信息:

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisTest {

    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream =
                Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = 
                new SqlSessionFactoryBuilder().build(inputStream);
        System.out.println("sqlSessionFactory:"+sqlSessionFactory);
    }
}

【配置參數(shù)介紹】

1. 事務(wù)管理器

事務(wù)管理器有兩種:type="[ JDBC | MANAGED ]"

  • JDBC:這個配置就是直接使用了JDBC 的提交和回滾設(shè)置背亥,它依賴于從數(shù)據(jù)源得到的連接來管理事務(wù)范圍。
  • MANAGED:種機制MyBatis自身不會去實現(xiàn)事務(wù)管理盔粹,而是讓程序的容器如(JBOSS隘梨,Weblogic)來實現(xiàn)對事務(wù)的管理。

2. 數(shù)據(jù)源
??mybatis有三種內(nèi)建的數(shù)據(jù)源類型:type=[ UNPOOLED | POOLED | JNDI ]舷嗡。

  • UNPOOLED:這個數(shù)據(jù)源的實現(xiàn)只是每次請求時打開和關(guān)閉連接轴猎。
  • POOLED:這種數(shù)據(jù)源的實現(xiàn)利用“池”的概念將JDBC連接對象組織起來,避免了創(chuàng)建先的連接實例時所必須的初始化和認證時間进萄。這是一種使得并發(fā)WEb應(yīng)用快速響應(yīng)請求的流行的處理方式捻脖。
  • JDNI: 這個數(shù)據(jù)源的實現(xiàn)是為了能在如EJB或應(yīng)用服務(wù)器這類容器中使用,容器可以集中在外部配置數(shù)據(jù)源中鼠,然后放置一個JDNI上下文的引用可婶。

Spring+Mybatis數(shù)據(jù)源配置

application.xml配置:

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
     <property name="driverClassName" value="${jdbc.driver}" />
     <property name="url" value="${jdbc.url}" />
     <property name="username" value="${jdbc.username}" />
     <property name="password" value="${jdbc.password}" />
</bean>

<!-- 基于sqlSessionTemplate的mybatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="mapperLocations" value="classpath*:mapper/*.xml" />
</bean>

<!-- sqlSessionTemplate配置 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
      <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

EmpMapper:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="mapper.EmpMapper">

    <resultMap type="com.EmpExercise.model.Employee" id="EmpMap" autoMapping="true">
        <id property="empno" column="empno" />
        <result property="ename" column="ename" />
        <result property="job" column="job" />
        <result property="hireDate" column="hireDate" />
        <result property="salary" column="salary" />
        <result property="deptno" column="deptno" />
        <association property="department" column="deptno"  select="mapper.DeptMapper.getDeptByNo"/>
    </resultMap>

    <!--使用empno找用戶  -->
    <select id="findUserByEmpno" parameterType="int" resultMap="EmpMap">
        select *
        from emp left join dept on emp.deptno=dept.deptno
        where emp.empno=#{empno};
    </select>

</mapper>  

EmpDao:

@Repository
public class EmployeeDao {

    @Resource
    public SqlSession sqlSession;

    public Integer addEmp(Map<String,Object> map){
        return sqlSession.insert("mapper.EmpMapper.addEmp", map);
    }

    public Employee findUserByEmpno(Integer empNo){
        Employee e = sqlSession.selectOne("mapper.EmpMapper.findUserByEmpno",empNo);
        return e;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市援雇,隨后出現(xiàn)的幾起案子矛渴,更是在濱河造成了極大的恐慌,老刑警劉巖惫搏,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件具温,死亡現(xiàn)場離奇詭異,居然都是意外死亡筐赔,警方通過查閱死者的電腦和手機铣猩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茴丰,“玉大人达皿,你說我怎么就攤上這事』呒纾” “怎么了峦椰?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長汰规。 經(jīng)常有香客問我汤功,道長,這世上最難降的妖魔是什么控轿? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任冤竹,我火速辦了婚禮,結(jié)果婚禮上茬射,老公的妹妹穿的比我還像新娘鹦蠕。我一直安慰自己,他們只是感情好在抛,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布钟病。 她就那樣靜靜地躺著,像睡著了一般刚梭。 火紅的嫁衣襯著肌膚如雪肠阱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天朴读,我揣著相機與錄音屹徘,去河邊找鬼。 笑死衅金,一個胖子當(dāng)著我的面吹牛噪伊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播氮唯,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鉴吹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惩琉?” 一聲冷哼從身側(cè)響起豆励,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞒渠,沒想到半個月后良蒸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡在孝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年诚啃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片私沮。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡始赎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仔燕,到底是詐尸還是另有隱情造垛,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布晰搀,位于F島的核電站五辽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏外恕。R本人自食惡果不足惜杆逗,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一乡翅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罪郊,春花似錦蠕蚜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至癣疟,卻和暖如春挣柬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睛挚。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工邪蛔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扎狱。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓店溢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親委乌。 傳聞我的和親對象是個殘疾皇子床牧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容