mybatis學習篇:上次使用映射接口實現Mybatis,有不方便指出就是須要接口,且須要保證接口上不能存在其餘的代理。此次經過SqlSessionTemplate基於模板類實現Mybatis,總的來講就是1.創建pojo類,sql映射文件,2.spring中裝配,3.調用SqlSessionTemplate類訪問數據庫。這三個步驟:java
一:sql映射文件
City.javaspring
package com.suning.schema.mabatisInterface; import java.io.Serializable; public class City implements Serializable{ /** */ private static final long serialVersionUID = 1L; private String provinceCode; private String cityCode; private String cityName; public String getProvinceCode() { return provinceCode; } public void setProvinceCode(String provinceCode) { this.provinceCode = provinceCode; } public String getCityCode() { return cityCode; } public void setCityCode(String cityCode) { this.cityCode = cityCode; } public String getCityName() { return cityName; } public void setCityName(String cityName) { this.cityName = cityName; } }
sqlMap_city.xml:sql
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="city"> <select id="selectCity" parameterType="java.lang.String" resultType="City"> SELECT PROVINCE_CODE AS "provinceCode", CITY_CODE AS "cityCode", CITY_NAME AS "cityName" FROM PUMS_CITY C WHERE C.CITY_CODE = #{cityCode} </select> </mapper>
定義命名空間namespace爲city,sql的ID爲selectCity,其中resultType="city",能夠寫全路徑,也能夠經過配置文件簡寫。
二:Spring中裝配
sample-mybatis.xml數據庫
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" > <!-- autowised註解,注入Bean 等同 <context:component-scan base-package=」XX.XX」/>--> <context:annotation-config /> <!-- 基於sqlSessionTemplate的mybatis配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:conf/spring/mybatisConfig.xml"/> <property name="mapperLocations" value="classpath:conf/sqlMapMybatis/sqlMap_city.xml"/> </bean> <!-- sqlSessionTemplate配置 --> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean id="mybatisService" class="com.suning.mybatis.MybatisService"> </bean> </beans>
定義一個核心的SqlSessionFactoryBean實例,mybatis的核心管理類,經過dataSource指定數據源,configLocation表明mybatis的配置文件,mapperLocations指sql文件地址。注入SqlSessionTemplate的實例,構造方法初始化sqlSessionFactory。定義業務的實現類mybatisServicespring-mvc
三:調用sqlSessionTemplate
MybatisService.Java:mybatis
package com.suning.mybatis; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; //mabitis測試的業務類 public class MybatisService { @Autowired private SqlSessionTemplate sqlSessionTemplate; //獲取市詳情 public City getCityDetail(String cityCode){ return (City)sqlSessionTemplate.selectOne("city.selectCity", cityCode); } }
經過自動註解,注入sqlSessionTemplate。city對應sql中命名空間,selectCity對應sql的ID,如圖:mvc
測試類MybatisMain.javaapp
package com.suning.mybatis; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MybatisMain { /** * 功能描述: <br> * 〈功能詳細描述〉 * * @param args * @see [相關類/方法](可選) * @since [產品/模塊版本](可選) */ public static void main(String[] args) { BeanFactory factory = new ClassPathXmlApplicationContext(new String[] { "classpath:conf/spring/sample-mybatis.xml", "classpath:conf/spring/sample-ds.xml" }); MybatisService test = (MybatisService) factory.getBean("mybatisService"); City cityDetail = (City) test.getCityDetail("560"); System.out.println("cityCode:560表明的城市爲" + cityDetail.getCityName()); } }