Struts2+Mybatis+Spring整合增删改查实例

在我的博客首页有s2sh整合的例子,现在要做的工作就是将此工程中hibernate换成mybatis,并且使用比较流行的annotation注解来实现。首先肯定是要将hibernate的jar包全部干掉,然后加上mybatis的jar包及其与spring整合所需jar包,下面只贴主要改动的类及其配置文件:

一.mybatis配置文件mybatis-config.xml

  1. >  
  2. <configuration>  
  3.     <typeAliases>  
  4.         <typeAlias alias="User" type="com.anxin.bean.User" />  
  5.         <typeAlias alias="Student" type="com.anxin.bean.Student" />  
  6.     typeAliases>  
  7.     <mappers>  
  8.         <mapper resource="com/anxin/orm/mapping/User.xml" />  
  9.         <mapper resource="com/anxin/orm/mapping/Student.xml" />  
  10.     mappers>  
  11. configuration>  

二、bean的mapper文件

Student.xml

  1. xml version="1.0" encoding="utf-8" ?>  
  2. >  
  3. <mapper namespace="Student">  
  4.       
  5.     
  6.         class="com.mchange.v2.c3p0.ComboPooledDataSource">  
  7.           
  8.           
  9.             ${driverClass}  
  10.           
  11.           
  12.           
  13.             ${jdbcUrl}  
  14.           
  15.           
  16.           
  17.             ${user}  
  18.           
  19.           
  20.           
  21.             ${password}  
  22.           
  23.           
  24.           
  25.             20  
  26.           
  27.           
  28.           
  29.             2  
  30.           
  31.           
  32.           
  33.             2  
  34.           
  35.           
  36.           
  37.             20  
  38.           
  39.       
  40.     
  41.         class="org.mybatis.spring.SqlSessionFactoryBean">  
  42.         
  43.             value="classpath:mybatis-config.xml" />  
  44.           
  45.       
  46.       
  47.   
  48.       
  49.       
  50.     
  51.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  52.           
  53.       
  54.       
  55.       

  56.   
  57. 四、泛型基类BaseDAOImpl.java
      
  58. package com.anxin.dao.impl;  
  59.   
  60. import java.io.Serializable;  
  61. import java.util.List;  
  62. import java.util.Map;  
  63.   
  64. import javax.annotation.Resource;  
  65.   
  66. import org.apache.ibatis.session.SqlSessionFactory;  
  67. import org.mybatis.spring.support.SqlSessionDaoSupport;  
  68. import org.slf4j.Logger;  
  69. import org.slf4j.LoggerFactory;  
  70. import org.springframework.beans.factory.annotation.Autowired;  
  71.   
  72. import com.anxin.dao.BaseDAO;  
  73. import com.anxin.util.PageListData;  
  74.   
  75. public class BaseDAOImpl extends  
  76.         SqlSessionDaoSupport implements BaseDAO {  
  77.   
  78.     public static Logger logger = LoggerFactory.getLogger(BaseDAOImpl.class);  
  79.     @Autowired(required = true)  
  80.     @Resource(name = "sqlSessionFactory")  
  81.     public void setSuperSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {  
  82.         super.setSqlSessionFactory(sqlSessionFactory);  
  83.     }  
  84.     // 保存  
  85.     public T save(T entity) {  
  86.         try {  
  87.             getSqlSessionTemplate().insert(  
  88.                     entity.getClass().getSimpleName() + ".save", entity);  
  89.             return entity;  
  90.         } catch (RuntimeException re) {  
  91.             logger.error("save " + entity.getClass().getName() + " failed :{}",  
  92.                     re);  
  93.             throw re;  
  94.         }  
  95.     }  
  96.     // 更新  
  97.     public void update(T entity) {  
  98.         try {  
  99.             this.getSqlSessionTemplate().update(  
  100.                     entity.getClass().getSimpleName() + ".update", entity);  
  101.         } catch (RuntimeException re) {  
  102.             logger.error("update " + entity.getClass().getName()  
  103.                     + " failed :{}", re);  
  104.             throw re;  
  105.         }  
  106.     }  
  107.     // 删除  
  108.     public void delete(T entity) {  
  109.         try {  
  110.             this.getSqlSessionTemplate().delete(  
  111.                     entity.getClass().getSimpleName() + ".delete", entity);  
  112.         } catch (RuntimeException re) {  
  113.             logger.error("delete " + entity.getClass().getName()  
  114.                     + " failed :{}", re);  
  115.             throw re;  
  116.         }  
  117.     }  
  118.   
  119.     // 根据id删除某个对象  
  120.     public void delete(Class entityClass, PK id) {  
  121.         try {  
  122.             this.getSqlSessionTemplate().delete(  
  123.                     entityClass.getSimpleName() + ".deleteById", id);  
  124.         } catch (RuntimeException re) {  
  125.             logger.error("delete " + entityClass.getName() + "failed :{}", re);  
  126.             throw re;  
  127.         }  
  128.     }  
  129.     // 根据id加载某个对象  
  130.     public T findById(Class entityClass, PK id) {  
  131.         try {  
  132.             return (T) this.getSqlSessionTemplate().selectOne(  
  133.                     entityClass.getSimpleName() + ".findById", id);  
  134.         } catch (RuntimeException re) {  
  135.             logger.error("findById " + entityClass.getName() + "failed :{}",  
  136.                     re);  
  137.             throw re;  
  138.         }  
  139.     }  
  140.   
  141.     // 查找所有的对象  
  142.     public List findAll(Class entityClass) {  
  143.         try {  
  144.             return this.getSqlSessionTemplate().selectList(  
  145.                     entityClass.getSimpleName() + ".findAll");  
  146.         } catch (RuntimeException re) {  
  147.             logger  
  148.                     .error("findAll " + entityClass.getName() + "failed :{}",  
  149.                             re);  
  150.             throw re;  
  151.         }  
  152.     }  
  153.     // 根据查询参数,当前页数,每页显示的数目得到分页列表  
  154.     public PageListData queryPage(Class entityClass, Map param,  
  155.             int currentPage, int pageSize) {  
  156.         try {  
  157.             return new PageListData((Integer)getSqlSessionTemplate()  
  158.                     .selectOne(entityClass.getSimpleName()+".getTotalCounts",param), pageSize, currentPage, this  
  159.                     .getSqlSessionTemplate().selectList(  
  160.                             entityClass.getSimpleName() + ".queryPage", param));  
  161.         } catch (RuntimeException re) {  
  162.             logger.error("findList " + entityClass.getName() + "failed :{}",  
  163.                     re);  
  164.             throw re;  
  165.         }  
  166.     }  
  167. }
      

  168.   
  169.   
  170.   
  171.   
  172.   
  173.   
  174. StudentDAOImpl.java
      
  175.   

  176.   

  177.   
  178.   
  179. package com.anxin.dao.impl;  
  180.   
  181. import org.springframework.stereotype.Repository;  
  182.   
  183. import com.anxin.bean.Student;  
  184. import com.anxin.dao.StudentDAO;  
  185.   
  186. @Repository  
  187. public class StudentDAOImpl extends BaseDAOImpl implements StudentDAO {  
  188. }  
  189.   
  190.   
  191.   
  192.   
  193.   
  194.   
  195.  

你可能感兴趣的:(Struts2+Mybatis+Spring整合增删改查实例)