鍍金池/ 教程/ Java/ Mybatis 與 Spring3 集成
SqlSessionDaoSupport 的使用
開發(fā)環(huán)境搭建
Mybatis 補充
實現(xiàn)數(shù)據(jù)的增刪改查
實現(xiàn) Mybatis 分頁
Mybatis 動態(tài) SQL 語句基礎(chǔ)
簡介
以接口的方式編程
代碼生成工具的使用
實現(xiàn)關(guān)聯(lián)數(shù)據(jù)的查詢
Mybatis 與 Spring3 MVC 集成例子
Mybatis 與 Spring3 集成

Mybatis 與 Spring3 集成

在這一系列文章中,前面講到純粹用 Mybatis 連接數(shù)據(jù)庫,然后 進行增刪改查,以及多表聯(lián)合查詢的的例子,但實際項目中,通常會用 Spring 這個沾合劑來管理 datasource 等。充分利用 Spring 基于接口的編程,以及aop ,ioc 帶來的方便。用 Spring 來管理 Mybatis 與管理 Hibernate 有很多類似的地方。今天的重點就是數(shù)據(jù)源管理以及 bean 的配置。

你可以下載源碼后,對比著看,源代碼沒有帶 jar 包,太大了,空間有限. 有截圖,你可以看到用到哪些jar包,源碼在本文最后。

  1. 首先對前面的工程結(jié)構(gòu)做一點改變,在 src_user 源代碼目錄下建立文件夾 config ,并將原來的 Mybatis 配置文件 Configuration.xml 移動到這個文件夾中, 并在 config 文家夾中建立 spring 配置文件:applicationContext.xml ,這個配置文件里最主要的配置:
<!--本示例采用DBCP連接池,應(yīng)預(yù)先把DBCP的jar包復(fù)制到工程的lib目錄下。 --> 

  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
     <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8"/> 
     <property name="username" value="root"/> 
     <property name="password" value="password"/> 
  </bean> 

  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <!--dataSource屬性指定要用到的連接池--> 
     <property name="dataSource" ref="dataSource"/> 
     <!--configLocation屬性指定mybatis的核心配置文件--> 
     <property name="configLocation" value="config/Configuration.xml"/> 
  </bean> 

  <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
     <!--sqlSessionFactory屬性指定要用到的SqlSessionFactory實例--> 
     <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
     <!--mapperInterface屬性指定映射器接口,用于實現(xiàn)此接口并生成映射器對象--> 
     <property name="mapperInterface" value="com.yihaomen.mybatis.inter.IUserOperation" /> 
  </bean> 

這里面的重點就是org.mybatis.spring.SqlSessionFactoryBeanorg.mybatis.spring.mapper.MapperFactoryBean[b]實現(xiàn)了 Spring 的接口,并產(chǎn)生對象。詳細可以查看 mybatis-spring 代碼。(http://code.google.com/p/mybatis/),如果僅僅使用,固定模式,這樣配置就好。

然后寫測試程序

package com.yihaomen.test;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.yihaomen.mybatis.inter.IUserOperation;
import com.yihaomen.mybatis.model.Article;
import com.yihaomen.mybatis.model.User;

public class MybatisSprintTest {

    private static ApplicationContext ctx;  

    static 
    {  
        ctx = new ClassPathXmlApplicationContext("config/applicationContext.xml");  
    }        

    public static void main(String[] args)  
    {  
        IUserOperation mapper = (IUserOperation)ctx.getBean("userMapper"); 
        //測試id=1的用戶查詢,根據(jù)數(shù)據(jù)庫中的情況,可以改成你自己的.
        System.out.println("得到用戶id=1的用戶信息");
        User user = mapper.selectUserByID(1);
        System.out.println(user.getUserAddress()); 

        //得到文章列表測試
        System.out.println("得到用戶id為1的所有文章列表");
        List<Article> articles = mapper.getUserArticles(1);

        for(Article article:articles){
            System.out.println(article.getContent()+"--"+article.getTitle());
        }

    }  

}

運行即可得到相應(yīng)的結(jié)果。

工程圖:

http://wiki.jikexueyuan.com/project/mybatis-in-action/images/mybatis4.png" alt="" />

用到的 jar 包,如下圖:

http://wiki.jikexueyuan.com/project/mybatis-in-action/images/mybatis5.png" alt="" />