在這一系列文章中,前面講到純粹用 Mybatis 連接數(shù)據(jù)庫,然后 進行增刪改查,以及多表聯(lián)合查詢的的例子,但實際項目中,通常會用 Spring 這個沾合劑來管理 datasource 等。充分利用 Spring 基于接口的編程,以及aop ,ioc 帶來的方便。用 Spring 來管理 Mybatis 與管理 Hibernate 有很多類似的地方。今天的重點就是數(shù)據(jù)源管理以及 bean 的配置。
你可以下載源碼后,對比著看,源代碼沒有帶 jar 包,太大了,空間有限. 有截圖,你可以看到用到哪些jar包,源碼在本文最后。
<!--本示例采用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.SqlSessionFactoryBean
與 org.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="" />