Spring MyBatis PostgreSQL 整合

Spring MyBatis整合,首先来看Spring配置文件,

Spring配置文件如下:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context
="http://www.springframework.org/schema/context"
xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
"
>

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.postgresql.Driver">
</property>
<property name="url"
value
="jdbc:postgresql:testdb">
</property>
<property name="username" value="postgres"></property>
<property name="password" value="nirvana7"></property>
</bean>
 <!----> 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="configLocation" value="bin/resource/mybatis-config.xml"/>
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="Mapper"/>
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource"/>
</bean>
</beans>

 

跟MyBatis直接连接数据库不一样的地方,

在SqlSessionFactory的生成方式上,

MyBatis直接连接的时候,是通过SqlSessionFactoryBuilder读取MyBatis配置文件生成。

Spring整合MyBatis的时候,是通过Spring配置文件片段生成的。

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
<property name="dataSource" ref="myDataSource"/>
<property name="configLocation" value="bin/resource/mybatis-config.xml"/>
</bean>

配置源和事务处理方式的指定也由Spring配置文件完成了。

当然MyBatis配置文件还是有用处的,比如typeAlias和Setting等的设置还是要通过它来完成的。


这里没有指定MyBatis的Sql映射器配置文件,因为我这里指定了MyBatis配置文件,在MyBatis配置文件当中,指定了Sql映射器配置文件。

如果没有配置MyBatis配置文件的话,且Sql映射器配置文件与相应的接口同名,且在同一路径下,那么可以不配置该选项。

如果配置的话,需要在sqlSessionFactory里进行配置,例:

<property name="mapperLocations" value="src/UserMapper.xml"/>

 

还需要注册映射接口的。

有两种方式,我用的是扫描法,如下:

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
<property name="basePackage" value="Mapper"/>
</bean>

还有一种方式是

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
<property name="mapperInterface" value="com.deppon.pda.v2.mapper.User.UserMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>

这样就整合完成了,原来使用的MyBatis配置文件和Sql映射文件都可以不用改变。

调用代码为,

package test;

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

import bean.User;

import Mapper.UserMapper;

import dao.UserDao;

public class UserTest {

public static void main(String[] args){
ApplicationContext aContext =new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper = aContext.getBean(UserMapper.class);
User user = userMapper.getUser("fff");
System.out.println(user.getAge());
}

}

当然了,数据库里面要插入一条fff的记录。

全部代码上传上去,一些包需要自己下载。




posted @ 2011-12-15 16:36  nirvana7  阅读(7680)  评论(0编辑  收藏  举报