Mybatis(基于SqlSessionTemplate的实现) + Spring 练习实战
mybatis学习篇:上次使用映射接口实现Mybatis,有不方便指出就是需要接口,且需要保证接口上不能存在其他的代理。这次通过SqlSessionTemplate基于模板类实现Mybatis,总的来说就是1.建立pojo类,sql映射文件,2.Spring中装配,3.调用SqlSessionTemplate类访问数据库。这三个步骤:
一:sql映射文件
City.java
- 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:
- <?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>
二: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>
三:调用sqlSessionTemplate
MybatisService.java:
- 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);
- }
- }
测试类MybatisMain.java:
- 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());
- }
- }
log日志: