MyBatis+Spring整合示例

 说明:  

1,             由于目前Spring官方还没有出整合Mybatis的特性,所以这里在Spring框架和MyBatis框架上再添加用于整合的框架“mybatis-spring-1.0.0.jar”(该框架时MyBatis官方自己出的)

2,             这里同样以持久化一个User bean为示例,这里不在详述每个文件的意义,可参考上一篇日志: http://wanqiufeng.blog.51cto.com/409430/515132

建表代码如下

  
  
  
  
  1. create table pda2_user( 
  2.        id varchar2(50) primary key
  3.        name varchar2(100) not null
  4.        psw  varchar2(100) not null 
  5. ); 
  6. ###################################### 
  7. create sequence pda2_user_sequence 
  8. minvalue 1 
  9. maxvalue 999999999999999999999999999 
  10. start with 1 
  11. increment by 1 
  12. cache 20; 
  13. ##################################### 
  14. create trigger "id_auto_increment_triger" 
  15.   before insert on pda2_user 
  16.   for each row 
  17.   when (new.id is null
  18. begin 
  19.   select pda2_user_sequence.nextval into :new.id from dual; 
  20. end
  21.  
  22. ################################################### 
  23.  
  24. insert into pad2_user (name,psw) values('chenjun','123'
  25.  
  26. ####说明###### 
  27.  
  28. 我使用的是Oracle数据库,为了使用主键自增长的方式,特此建立一个使用sequence的触发器 

 

User bean代码如下:

  
  
  
  
  1. package com.deppon.pda.v2.model.basic.User; 
  2.   
  3. public class User { 
  4.     private String ID; 
  5.     private String name; 
  6.     private String psw; 
  7.     
  8.     public User() { 
  9.        super(); 
  10.     } 
  11.   
  12.     public User(String name, String psw) { 
  13.        super(); 
  14.        this.name = name; 
  15.        this.psw = psw; 
  16.     } 
  17.   
  18.     public String getID() { 
  19.        return ID; 
  20.     } 
  21.   
  22.     public void setID(String iD) { 
  23.        ID = iD; 
  24.     } 
  25.   
  26.     public String getName() { 
  27.        return name; 
  28.     } 
  29.   
  30.     public void setName(String name) { 
  31.        this.name = name; 
  32.     } 
  33.   
  34.     public String getPsw() { 
  35.        return psw; 
  36.     } 
  37.   
  38.     public void setPsw(String psw) { 
  39.        this.psw = psw; 
  40.     } 

User实体对应的映射器UserMapper代码如下:

  
  
  
  
  1. package com.deppon.pda.v2.mapper.User; 
  2.   
  3. import com.deppon.pda.v2.model.basic.User.User; 
  4.   
  5. public interface UserMapper { 
  6.     public void insertUser(User user); 
  7.     public User getUser(String name); 

映射器配置文件UserMapper.xml代码如下:

  
  
  
  
  1. ?xml version="1.0" encoding="UTF-8" ?> 
  2. <!DOCTYPE mapper 
  3.     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
  4.     "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
  5.   
  6. <mapper namespace="com.deppon.pda.v2.mapper.User.UserMapper"> 
  7.     <insert id="insertUser" parameterType="com.deppon.pda.v2.model.basic.User.User"> 
  8.        insert into pda2_user(name,age) values(#{name},#{age}) 
  9.     </insert> 
  10.     <select id="getUser" resultType="com.deppon.pda.v2.model.basic.User.User" parameterType="java.lang.String"> 
  11.         select * from pda2_user where name=#{name} 
  12.     </select> 
  13.     
  14.     <!-- 当使用该Mybatis与Spring整合的时候,该文件必须和相应的Mapper接口文件同名,并在同一路径下 --> 
  15. </mapper> 

相应的Spring配置文件,applicationContext.xml代码如下:

  
  
  
  
  1. xml version="1.0" encoding="UTF-8"?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
  4.     xmlns:context="http://www.springframework.org/schema/context" 
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
  6.     http://www.springframework.org/schema/context 
  7.     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
  8.     "> 
  9.        
  10.     <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
  11.        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"> 
  12.        </property> 
  13.        <property name="url" 
  14.            value="jdbc:oracle:thin:@192.168.56.201:1521:system"> 
  15.        </property> 
  16.        <property name="username" value="vincent"></property> 
  17.        <property name="password" value="1234"></property> 
  18.     </bean> 
  19.   
  20.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
  21.        <property name="dataSource" ref="myDataSource"/> 
  22.        
  23.        <!-- <property name="configLocation" value=""/> --> 
  24.        <!-- 该属性用来指定MyBatis的XML配置文件路径,跟Spring整合时,编写MyBatis映射文件的目的无非是配置一下typeAlias、setting之类的 
  25.        元素。不用在其中指定数据源,或者事务处理方式。就算配置了也会被忽略。因为这些都是使用Spring中的配置 。当然如果你不打算添加typeAlias 
  26.        之类的设置的话,你连MyBatis的配置文件都不用写,更不用配置这个属性了--> 
  27.        
  28.        <!--<property name="mapperLocations" value="src/UserMapper.xml"/>--> 
  29.        <!-- 该配置文件用来指定Mapper映射文件的位置 ,如果映射文件与相应的接口同名,且在同一路径下,那么可以不配置该选项--> 
  30.     </bean> 
  31.     
  32.     <!--注册Mapper方式一   
  33.     <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
  34.        <property name="mapperInterface" value="com.deppon.pda.v2.mapper.User.UserMapper"/> 
  35.        <property name="sqlSessionFactory" ref="sqlSessionFactory"/> 
  36.     </bean> 
  37.     --> 
  38.     
  39.     <!-- 注册Mapper方式二:也可不指定特定mapper,而使用自动扫描包的方式来注册各种Mapper ,配置如下:--> 
  40.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
  41.        <property name="basePackage" value="com.deppon.pda.v2.mapper"/> 
  42.     </bean> 
  43.     
  44.     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
  45.        <property name="dataSource" ref="myDataSource"/> 

注意

1,           这里不用在spring中注册User Bean,而只注册映射器UserMapperbean就好。映射器会根据映射器配置文件去操作相应的表,和返回对应的User实体对象。

2,           如果映射器的配置文件这里是UserMapper.xml和映射器同名,且在同一路径下,就不需要配置Mybatis的配置文件。

3,           就算配置Mybatis文件,也不需要配置数据源和事务特性,因为这些都会被Spring中的配置所忽略,所以Mybatis的配置文件只能用来配置一些settings和别名之类的属性。本示例省略了Mybatis相应的配置文件

测试代码如下:

  
  
  
  
  1. package loginTest; 
  2.   
  3. import org.junit.Test; 
  4. import org.springframework.context.ApplicationContext; 
  5. import org.springframework.context.support.FileSystemXmlApplicationContext; 
  6.  
  7. import com.deppon.pda.v2.framework.CheckUser; 
  8. import com.deppon.pda.v2.mapper.User.UserMapper; 
  9. import com.deppon.pda.v2.model.basic.User.User; 
  10. public class UserMapperTest { 
  11.     @Test 
  12.     public void testMapper() { 
  13.        ApplicationContext aContext = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml"); 
  14.        UserMapper userMapper = aContext.getBean(UserMapper.class); 
  15.        User user = userMapper.getUser("chenjun"); 
  16.        System.out.println(user.getPsw()); 
  17.     } 
  18. }

 

你可能感兴趣的:(spring,mybatis,职场,示例,整合,休闲)