Mybatis(基于SqlSessionTemplate的实现) + Spring 练习实战

mybatis学习篇:上次使用映射接口实现Mybatis,有不方便指出就是需要接口,且需要保证接口上不能存在其他的代理。这次通过SqlSessionTemplate基于模板类实现Mybatis,总的来说就是1.建立pojo类,sql映射文件,2.Spring中装配,3.调用SqlSessionTemplate类访问数据库。这三个步骤:


一:sql映射文件

City.java
[java] view plain copy
  1. package com.suning.schema.mabatisInterface;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. public class City implements Serializable{  
  6.       
  7.     /** 
  8.      */  
  9.     private static final long serialVersionUID = 1L;  
  10.     private String provinceCode;  
  11.     private String cityCode;  
  12.     private String cityName;  
  13.       
  14.     public String getProvinceCode() {  
  15.         return provinceCode;  
  16.     }  
  17.     public void setProvinceCode(String provinceCode) {  
  18.         this.provinceCode = provinceCode;  
  19.     }  
  20.     public String getCityCode() {  
  21.         return cityCode;  
  22.     }  
  23.     public void setCityCode(String cityCode) {  
  24.         this.cityCode = cityCode;  
  25.     }  
  26.     public String getCityName() {  
  27.         return cityName;  
  28.     }  
  29.     public void setCityName(String cityName) {  
  30.         this.cityName = cityName;  
  31.     }  
  32. }  


sqlMap_city.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">    
  3. <mapper namespace="city">    
  4.   <select id="selectCity" parameterType="java.lang.String"  resultType="City">    
  5.     SELECT   
  6.         PROVINCE_CODE   AS   "provinceCode",  
  7.         CITY_CODE       AS   "cityCode",  
  8.         CITY_NAME       AS   "cityName"  
  9.     FROM  
  10.         PUMS_CITY  C  
  11.     WHERE    
  12.         C.CITY_CODE = #{cityCode}   
  13.   </select>    
  14. </mapper>   
定义命名空间namespace为city,sql的ID为selectCity,其中resultType="city",可以写全路径,也可以通过配置文件简写。


二:Spring中装配

sample-mybatis.xml

[html] view plain copy
  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"   
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"   
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xmlns:mvc="http://www.springframework.org/schema/mvc"   
  8.     xsi:schemaLocation="   
  9.           http://www.springframework.org/schema/beans   
  10.           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  11.           http://www.springframework.org/schema/tx   
  12.           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  13.           http://www.springframework.org/schema/context   
  14.           http://www.springframework.org/schema/context/spring-context-3.0.xsd   
  15.           http://www.springframework.org/schema/aop   
  16.           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
  17.           http://www.springframework.org/schema/mvc  
  18.           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" >  
  19.             
  20.       
  21.         <!--  autowised注解,注入Bean 等同 <context:component-scan base-package=”XX.XX”/>-->  
  22.     <context:annotation-config />  
  23.       
  24.     <!-- 基于sqlSessionTemplate的mybatis配置 -->  
  25.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    
  26.         <property name="dataSource" ref="dataSource" />    
  27.         <property name="configLocation" value="classpath:conf/spring/mybatisConfig.xml"/>  
  28.         <property name="mapperLocations" value="classpath:conf/sqlMapMybatis/sqlMap_city.xml"/>  
  29.     </bean>  
  30.       
  31.     <!-- sqlSessionTemplate配置 -->  
  32.     <bean id="sqlSession"    class="org.mybatis.spring.SqlSessionTemplate">     
  33.         <constructor-arg index="0" ref="sqlSessionFactory" />     
  34.     </bean>    
  35.       
  36.     <bean id="mybatisService" class="com.suning.mybatis.MybatisService">  
  37.     </bean>  
  38. </beans>  
定义一个核心的SqlSessionFactoryBean实例,mybatis的核心管理类,通过dataSource指定数据源,configLocation代表mybatis的配置文件,mapperLocations指sql文件地址。注入SqlSessionTemplate的实例,构造方法初始化sqlSessionFactory。定义业务的实现类mybatisService。


三:调用sqlSessionTemplate

MybatisService.java:

[java] view plain copy
  1. package com.suning.mybatis;  
  2.   
  3. import org.mybatis.spring.SqlSessionTemplate;  
  4. import org.springframework.beans.factory.annotation.Autowired;  
  5.   
  6. //mabitis测试的业务类  
  7. public class MybatisService {  
  8.   
  9.     @Autowired  
  10.     private SqlSessionTemplate sqlSessionTemplate;  
  11.       
  12.     //获取市详情  
  13.     public City getCityDetail(String cityCode){  
  14.         return (City)sqlSessionTemplate.selectOne("city.selectCity", cityCode);  
  15.     }  
  16. }  
通过自动注解,注入sqlSessionTemplate。city对应sql中命名空间,selectCity对应sql的ID,如图:

Mybatis(基于SqlSessionTemplate的实现) + Spring 练习实战


测试类MybatisMain.java:

[java] view plain copy
  1. package com.suning.mybatis;  
  2.   
  3. import org.springframework.beans.factory.BeanFactory;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. public class MybatisMain {  
  7.   
  8.     /** 
  9.      * 功能描述: <br> 
  10.      * 〈功能详细描述〉 
  11.      *  
  12.      * @param args 
  13.      * @see [相关类/方法](可选) 
  14.      * @since [产品/模块版本](可选) 
  15.      */  
  16.     public static void main(String[] args) {  
  17.         BeanFactory factory = new ClassPathXmlApplicationContext(new String[] {  
  18.                 "classpath:conf/spring/sample-mybatis.xml""classpath:conf/spring/sample-ds.xml" });  
  19.         MybatisService test = (MybatisService) factory.getBean("mybatisService");  
  20.         City cityDetail = (City) test.getCityDetail("560");  
  21.         System.out.println("cityCode:560代表的城市为" + cityDetail.getCityName());  
  22.     }  
  23.   
  24. }  
sample-ds.xml为数据源配置文件。


log日志:

Mybatis(基于SqlSessionTemplate的实现) + Spring 练习实战