q3256 发表于 2016-11-21 08:53:26

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的记录。
  全部代码上传上去,一些包需要自己下载。
  
页: [1]
查看完整版本: Spring MyBatis PostgreSQL 整合