基于之前写的博客(SSM框架搭建以及简单增删改查以及分页功能的实现(前端bootstrap+css+jq))进一步的封装(改为SqlSessionTemplate方式实现)

前言:这篇博客就不从头写了,只写改的的部分,其他的可以对照之前的博客

1、目录改动:
在这里插入图片描述

2、配置文件改动:
(1)、spring-mybatis.xml:
增加了事务管理功能,把之前的扫描dao接口的方法注释掉,换成了注册SqlSessionTemplate的配置

<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                    http://www.springframework.org/schema/context
                    http://www.springframework.org/schema/context/spring-context-3.1.xsd
                    http://www.springframework.org/schema/tx
                    http://www.springframework.org/schema/tx/spring-tx.xsd
                    http://www.springframework.org/schema/aop
                     http://www.springframework.org/schema/aop/spring-aop.xsd ">

    <!-- 自动扫描,自动扫描这些包下的java文件,如果带有spring注解
    (@Service,@Component,@Repository,@Controller等),
    就把这些类注册为bean,由spring管理  -->
    <context:component-scan base-package="com.base"/>

    <!--加载多个properties文件,加载后,当前xml就可以使用加载文件的属性-->
    <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath:system/jdbc.properties</value>
            </list>
        </property>
        <property name="fileEncoding" value="UTF-8"/>
    </bean>
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="properties" ref="configProperties"/>
    </bean>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="${driverClasss}"/>
        <property name="url" value="${jdbcUrl}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>
    </bean>

    <!-- mybatis和spring完美整合,不需要mybatis的配置映射文件,
    声明sqlSessionFactory,注入数据源和mybatis核心配置文件,
    配置扫描路径configLocation(扫描xml -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置Mybati的核心配置文件 -->
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
        <!-- 自动扫描mapping.xml文件-->
     	<property name="mapperLocations" value="classpath:**/dao/mapping/*.xml"></property>
    </bean>

    <!--  DAO接口所在包名,Spring会自动查找其下的类,扫描dao接口 -->
<!--     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> -->
<!--         <property name="basePackage" value="com.base.dao"/> -->
<!--         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> -->
<!--     </bean> -->
	
	<!-- 在会话工厂中取出SqlSessionTemplate这个对象 -->
     <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
     	<constructor-arg index="0" ref="sqlSessionFactory" />
     </bean>
     

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
	<!-- 注解方式配置事务 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    
    <!-- 拦截器方式配置事物(声明AOP通知) -->
    <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
    	<tx:attributes>
    		<tx:method name="add*" propagation="REQUIRED" />
    		<tx:method name="save*" propagation="REQUIRED" />
    		<tx:method name="del*" propagation="REQUIRED" />
    		<tx:method name="update*" propagation="REQUIRED" />
    		<tx:method name="get*" propagation="REQUIRED" read-only="true"/>
    		<tx:method name="select*" propagation="REQUIRED"  read-only="true"/>
    		<tx:method name="*" propagation="REQUIRED"  read-only="true"/>
    	</tx:attributes>
    </tx:advice>
    
    <!--配置AOP-->
    <aop:config>
    	<!--声明切点transactionPointcut,配置切面expression-->
    	<aop:pointcut id="transactionPointcut" expression="execution(* com.base.service.*.*.*(..))" />
    	<!--切入通知-->
    	<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
    </aop:config>
    
    </beans>

(2)、UserMapper.xml

改动namespace为"user",不用dao接口之间映射xml配置的namespace(命名空间了,所以可以随便取命名空间名)

<?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" >

<!--namespace就是与此文件对应的Dao接口的全路径-->
<mapper namespace="user" >
	
	<!--根据id查询user实体-->		
	<select id="getUserEntityByID"  parameterType="java.lang.Integer" resultType="userEntity">
	    SELECT 
	    	ID as id, NAME as name, AGE as age
	    FROM 
	    	USER
	    WHERE 
	    	ID = #{id}
   </select>
   
   <!--插入user实体数据到数据库-->
   <insert id="insertUserEntity" parameterType="java.util.HashMap">
   		INSERT INTO USER(
	   		NAME,
	   		AGE
   		) 
   		VALUES (
	   		#{userEntity.name},
	   		#{userEntity.age}
   		);
   </insert>
   
   <!--根据id删除user信息-->
   <delete id="deleteUserEntity" parameterType="java.util.HashMap">
   		DELETE 
   		FROM  
   			USER 
 		WHERE
   			ID IN (#{ids})
   </delete>
   
    <!--根据id删除user信息-->
   <delete id="tof" parameterType="java.lang.Integer">
   		DELETE 
   		FROM  
   			USER 
 		WHERE
   			ID IN (11)
   </delete>
   
   
   
   <!--根据id更新user信息-->
   <update id="updateUserEntity"  parameterType="java.util.HashMap">
   		UPDATE 
   			USER 
  		SET 
  			NAME=#{userEntity.name},
  			AGE=#{userEntity.age}
  		WHERE
  			ID=#{userEntity.id}
   </update>
   
   
   <!--查询所有user数据集合-->
   <select id="getUserList" parameterType="java.util.HashMap" resultType="java.util.HashMap">
   		SELECT 
   			ID AS id,
   			NAME AS name,
   			AGE AS age
   		FROM 
   			USER
  		WHERE
  		1=1
  		<if test="id !=null">
  			AND ID=#{id}
  		</if>
   </select>

</mapper>

3、JAVA文件改动:

(1)、新增Dao层的通用接口和实现类(IMybatisDao和MybatisDaoImpl)

IMybatisDao:

/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述:
 * @Package: com.base.dao 
 * @author: zhangCheng   
 * @date: 2019年3月17日 下午1:01:01 
 */
package com.base.dao;

import java.util.List;
import java.util.Map;

/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: IMybatisDao.java
* @Description: DAO公共方法接口
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月17日 下午1:01:01 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月17日     zhangCheng           v1.0.0               修改原因
*/
public interface IMybatisDao {

	/**
	 * 
	* @Function: IMybatisDao.java
	* @Description: 根据id查询对象
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws Exception 
	* @date: 2019年3月17日 下午1:05:06 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public Object getObjectByID(String statement,int id) throws Exception;
	
	
	
	/**
	 * 
	* @Function: IMybatisDao.java
	* @Description: 根据参数查询list
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月17日 下午1:12:49 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public <E> List<E> getObjectList(String statement,Map<String, Object> parameter)throws Exception;
	
	
	/**
	 * 
	* @Function: IMybatisDao.java
	* @Description: 根据参数更新数据
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月17日 下午1:25:19 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public void update(String statement,Map<String, Object> parameter)throws Exception;
	
	/**
	 * 
	* @Function: IMybatisDao.java
	* @Description: 根据参数添加数据
	*
	* @param:根据参数插入数据
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月17日 下午1:27:41 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public void insert(String statement,Map<String, Object> parameter)throws Exception;
	
	
	
	/**
	 * 
	* @Function: IMybatisDao.java
	* @Description: 根据参数删除数据
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月17日 下午1:28:34 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public void delete(String statement,Map<String, Object> parameter)throws Exception;
}

MybatisDaoImpl

/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述:
 * @Package: com.base.dao 
 * @author: zhangCheng   
 * @date: 2019年3月17日 下午1:31:08 
 */
package com.base.dao;

import java.util.List;
import java.util.Map;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: MybatisDaoImpl.java
* @Description: DAO公共方法接口实现类
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月17日 下午1:31:08 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月17日     zhangCheng           v1.0.0               修改原因
*/
@Repository(value="mybatisDao")
public class MybatisDaoImpl implements IMybatisDao{

	@Autowired
	private SqlSessionTemplate sqlSessionTemplate;
	/** 
	* @see com.base.dao.IMybatisDao#getObjectByID(java.lang.String, int)  
	* @Function: MybatisDaoImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws Exception 
	* @date: 2019年3月17日 下午1:31:33 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public Object getObjectByID(String statement, int id) throws Exception {
		Object object=null;
		try {
			object=sqlSessionTemplate.selectOne(statement, id);
		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception();
		}
		return object;
	}

	/** 
	* @see com.base.dao.IMybatisDao#getObjectList(java.lang.String, java.util.Map)  
	* @Function: MybatisDaoImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws Exception 
	* @date: 2019年3月17日 下午1:31:33 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public <E> List<E> getObjectList(String statement, Map<String, Object> parameter) throws Exception {
		try {
			return sqlSessionTemplate.selectList(statement, parameter);
		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception();
		}
	}

	/** 
	* @see com.base.dao.IMybatisDao#update(java.lang.String, java.util.Map)  
	* @Function: MybatisDaoImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws Exception 
	* @date: 2019年3月17日 下午1:31:33 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public void update(String statement, Map<String, Object> parameter) throws Exception {
		try {
			sqlSessionTemplate.update(statement, parameter);
		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception();
		}
	}

	/** 
	* @see com.base.dao.IMybatisDao#insert(java.lang.String, java.util.Map)  
	* @Function: MybatisDaoImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws Exception 
	* @date: 2019年3月17日 下午1:31:33 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public void insert(String statement, Map<String, Object> parameter) throws Exception {
		try {
			sqlSessionTemplate.insert(statement, parameter);
		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception();
		}
		
	}

	/** 
	* @see com.base.dao.IMybatisDao#delete(java.lang.String, java.util.Map)  
	* @Function: MybatisDaoImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws Exception 
	* @date: 2019年3月17日 下午1:31:33 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public void delete(String statement, Map<String, Object> parameter) throws Exception {
		try {
			sqlSessionTemplate.delete(statement, parameter);
		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception();
		}
	}

}

(2)、新增Service层的通用接口和实现类(IBaseService和BaseServiceImpl)

IBaseService

/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述:
 * @Package: com.base.service 
 * @author: zhangCheng   
 * @date: 2019年3月17日 下午2:02:32 
 */
package com.base.service;


/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: IBaseService.java
* @Description: 业务层公共方法接口
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月17日 下午2:02:32 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月17日     zhangCheng           v1.0.0               修改原因
*/
public interface IBaseService {

}

BaseServiceImpl:注入dao接口mybatisDao

/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述:
 * @Package: com.base.service 
 * @author: zhangCheng   
 * @date: 2019年3月17日 下午2:11:43 
 */
package com.base.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.base.dao.IMybatisDao;

/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: BaseServiceImpl.java
* @Description: 业务层公共方法接口实现类
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月17日 下午2:11:43 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月17日     zhangCheng           v1.0.0               修改原因
*/
@Service(value="baseService")
public class BaseServiceImpl implements IBaseService{
	
	@Autowired
	public IMybatisDao mybatisDao;
}

(3)、改动IUserService接口和UserServiceImpl实现类

IUserService:继承BaseService接口

package com.base.service.user;

import java.util.List;
import java.util.Map;
import javax.xml.rpc.ServiceException;
import com.base.service.IBaseService;
/**
 * 
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: IUserService.java
* @Description: 用户模块Service接口
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月3日 上午10:33:13 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月3日     zhangCheng           v1.0.0               修改原因
 */
public interface IUserService extends IBaseService{
	
	/**
	 * 
	* @see com.base.service.IBaseService#getObjectByID(java.lang.String, int)  
	* @Function: IUserService.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws ServiceException 
	* @date: 2019年3月17日 下午3:37:59 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public Object getUserEntityByID(int id) throws ServiceException;
	
	
	/**
	 * 
	* @Function: IUserService.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月17日 下午4:46:33 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public <E> List<E> getObjectList(Map<String, Object> parameter) throws ServiceException;
	
	
	/**
	 * 
	* @see com.base.service.IBaseService#update(java.lang.String, java.util.Map)  
	* @Function: IUserService.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws ServiceException 
	* @date: 2019年3月17日 下午3:39:01 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public void updateUserEntity(Map<String, Object> parameter) throws ServiceException;
	
	/**
	 * 
	* @see com.base.service.IBaseService#insert(java.lang.String, java.util.Map)  
	* @Function: IUserService.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws ServiceException 
	* @date: 2019年3月17日 下午3:39:07 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public void insertUserEntity(Map<String, Object> parameter) throws ServiceException;
	
	/**
	 * 
	* @see com.base.service.IBaseService#delete(java.lang.String, java.util.Map)  
	* @Function: IUserService.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws ServiceException 
	* @date: 2019年3月17日 下午3:39:11 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	 */
	public void deleteUserEntity(Map<String, Object> parameter) throws ServiceException;
	
	
	
}

UserServiceImpl:继承BaseServiceImpl实现类,实现IUserService。

继承BaseServiceImpl实现类是为了引用BaseServiceImpl里面注入的dao接口,从而引用dao接口里面的方法

/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述:用户模块Service接口实现
 * @Package: com.base.service.impl 
 * @author: zhangCheng   
 * @date: 2019年3月3日 上午10:38:42 
 */
package com.base.service.user.impl;

import java.util.List;
import java.util.Map;

import javax.xml.rpc.ServiceException;

import org.springframework.stereotype.Service;

import com.base.service.BaseServiceImpl;
import com.base.service.user.IUserService;
/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: UserServiceImpl.java
* @Description: 用户模块Service接口实现类
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月3日 上午10:38:42 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月3日     zhangCheng           v1.0.0               修改原因
*/

@Service("userService")
public class UserServiceImpl extends BaseServiceImpl implements  IUserService {

	/** 
	* @see com.base.service.user.IUserService#getUserEntityByID(java.lang.String, int)  
	* @Function: UserServiceImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws ServiceException 
	 * @date: 2019年3月17日 下午3:47:47 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public Object getUserEntityByID(int id) throws ServiceException {
		Object object=null;
		try {
			object=this.mybatisDao.getObjectByID("user.getUserEntityByID", id);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException();
		}
		return object;
	}

	/** 
	* @see com.base.service.user.IUserService#updateUserEntity(java.lang.String, java.util.Map)  
	* @Function: UserServiceImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws ServiceException 
	* @date: 2019年3月17日 下午3:47:47 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public void updateUserEntity(Map<String, Object> parameter) throws ServiceException {
		try {
			this.mybatisDao.update("user.updateUserEntity", parameter);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException();
		}
		
	}

	/** 
	* @see com.base.service.user.IUserService#insertUserEntity(java.lang.String, java.util.Map)  
	* @Function: UserServiceImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws ServiceException 
	* @date: 2019年3月17日 下午3:47:47 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public void insertUserEntity(Map<String, Object> parameter) throws ServiceException {
		try {
			this.mybatisDao.insert("user.insertUserEntity", parameter);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException();
		}
	}

	/** 
	* @see com.base.service.user.IUserService#deleteUserEntity(java.lang.String, java.util.Map)  
	* @Function: UserServiceImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	 * @throws ServiceException 
	* @date: 2019年3月17日 下午3:47:47 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public void deleteUserEntity(Map<String, Object> parameter) throws ServiceException {
		try {
			this.mybatisDao.delete("user.deleteUserEntity", parameter);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException();
		}
	}

	/** 
	* @see com.base.service.user.IUserService#getObjectList(java.lang.String, java.util.Map)  
	* @Function: UserServiceImpl.java
	* @Description: 该函数的功能描述
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月17日 下午4:46:44 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月17日     zhangCheng           v1.0.0               修改原因
	*/
	@Override
	public <E> List<E> getObjectList(Map<String, Object> parameter) throws ServiceException {
		List<E> list=null;
		try {
			list=this.mybatisDao.getObjectList("user.getUserList", parameter);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException();
		}
		return list;
	}

	

}

(4)、新增BaseController类
注入IUserService接口

/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述:
 * @Package: com.base.controller 
 * @author: zhangCheng   
 * @date: 2019年3月17日 下午3:54:15 
 */
package com.base.controller;

import org.springframework.beans.factory.annotation.Autowired;
import com.base.service.user.IUserService;

/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: IBaseController.java
* @Description: 该类的功能描述
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月17日 下午3:54:15 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月17日     zhangCheng           v1.0.0               修改原因
*/
public class BaseController {
	
	@Autowired
	public IUserService userService;
}

(5)、新增BaseController类
注入IUserService接口

/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述:
 * @Package: com.base.controller 
 * @author: zhangCheng   
 * @date: 2019年3月17日 下午3:54:15 
 */
package com.base.controller;

import org.springframework.beans.factory.annotation.Autowired;
import com.base.service.user.IUserService;

/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: IBaseController.java
* @Description: 该类的功能描述
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月17日 下午3:54:15 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月17日     zhangCheng           v1.0.0               修改原因
*/
public class BaseController {
	
	@Autowired
	public IUserService userService;
}

(6)、改动UserController
继承BaseController类,方便调用IUserService接口

/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述:
 * @Package: com.base.controller 
 * @author: zhangCheng   
 * @date: 2019年3月3日 下午1:18:14 
 */
package com.base.controller.user;

import java.util.HashMap;
import javax.xml.rpc.ServiceException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.base.controller.BaseController;
import com.base.entity.UserEntity;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
/**   
* Copyright: Copyright (c) 2019 LanRu-Caifu
* 
* @ClassName: UserController.java
* @Description: 用户模块Controller层
*
* @version: v1.0.0
* @author: zhangCheng
* @date: 2019年3月3日 下午1:18:14 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2019年3月3日     zhangCheng           v1.0.0               修改原因
*/

@Controller
@RequestMapping(value = "/user")
public class UserController extends BaseController{
	

	/**
	 * 
	* @Function: UserController.java
	* @Description: 根据id查询user信息
	*
	* @param: id:用户id 
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月8日 下午8:56:17 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月8日     zhangCheng           v1.0.0               修改原因
	 */
    @RequestMapping(value="selectByPrimaryKey")
	public ModelAndView selectByPrimaryKey(Integer id) throws ServiceException {
    	//声明ModelAndView对象
    	ModelAndView mv=new ModelAndView();
    	try {
    		//加入属性"user",设置值为查询出来的user实体
    		mv.addObject("user",this.userService.getUserEntityByID(id));
            //为了跳转到editUser.jsp页面
    		mv.setViewName("/user/editUser");
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException("错误信息:"+e.getMessage());
		}
		return mv;
	}
    
    /**
     * 
    * @Function: UserController.java
    * @Description: 添加用户信息
    *
    * @param:userEntity 用户信息
    * @return:返回结果描述
    * @throws:异常描述
    *
    * @version: v1.0.0
    * @author: zhangCheng
     * @throws ServiceException 
    * @date: 2019年3月8日 下午9:14:32 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2019年3月8日     zhangCheng           v1.0.0               修改原因
     */
    @RequestMapping("saveUser") 
    public String saveUser(UserEntity userEntity) throws ServiceException {
    	try {
			if(userEntity!=null);
			HashMap<String, Object> paraMap=new HashMap<String, Object>();
			paraMap.put("userEntity", userEntity);
			this.userService.insertUserEntity(paraMap);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException("错误信息:"+e.getMessage());
		}
    	//重定向到getUserList方法
    	return "redirect:/user/getUserList";
	};
	
	/**
	 * 
	* @Function: UserController.java
	* @Description: 跳转到用户添加页面
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月9日 上午10:34:16 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月9日     zhangCheng           v1.0.0               修改原因
	 */
	@RequestMapping("toAdduser")
	public String toAdduser() {
		//转发到addUser.jsp页面
		return "/user/addUser";
	}
	
	
	
	/**
	 * 
	* @Function: UserController.java
	* @Description: 删除user信息
	*
	* @param: ids: id字符串
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月8日 下午9:24:33 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月8日     zhangCheng           v1.0.0               修改原因
	 */
	@RequestMapping("/deleteUser")
	public String deleteUser(Integer ids) throws ServiceException {
		try {
			HashMap<String, Object> paraMap=new HashMap<String, Object>();
			paraMap.put("ids", ids);
			this.userService.deleteUserEntity(paraMap);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException("错误信息:"+e.getMessage());
		}
		//重定向到getUserList方法
		return "redirect:/user/getUserList";  
	};
	
	
	/**
	 * 
	* @Function: UserController.java
	* @Description: 更新user实体
	*
	* @param:描述1描述
	* @return:返回结果描述
	* @throws:异常描述
	*
	* @version: v1.0.0
	* @author: zhangCheng
	* @date: 2019年3月10日 下午12:32:26 
	*
	* Modification History:
	* Date         Author          Version            Description
	*---------------------------------------------------------*
	* 2019年3月10日     zhangCheng           v1.0.0               修改原因
	 */
	@RequestMapping("updateUser")  
	public String updateUser(UserEntity userEntity) throws ServiceException {
		try {
			HashMap<String, Object> paraMap=new HashMap<String, Object>();
			paraMap.put("userEntity", userEntity);
			this.userService.updateUserEntity(paraMap);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException("错误信息:"+e.getMessage());
		}
		//重定向到getUserList方法
		return "redirect:/user/getUserList";  
	};
	
	 /**
	  * 
	 * @Function: UserController.java
	 * @Description: 跳转到首页
	 *
	 * @param:描述1描述
	 * @return:返回结果描述
	 * @throws:异常描述
	 *
	 * @version: v1.0.0
	 * @author: zhangCheng
	 * @throws ServiceException 
	 * @date: 2019年3月9日 上午10:01:21 
	 *
	 * Modification History:
	 * Date         Author          Version            Description
	 *---------------------------------------------------------*
	 * 2019年3月9日     zhangCheng           v1.0.0               修改原因
	  */
	 @RequestMapping("getUserList")
	 public ModelAndView getUserList(@RequestParam(value="pn",defaultValue="1")Integer pn,ModelAndView mav) throws ServiceException{
		 PageHelper.startPage(pn, 5);
		 mav.setViewName("/user/userInfo");
		 HashMap<String, Object> paramMap=new HashMap<String, Object>();
		//将用户信息放入PageInfo对象里
	     PageInfo page = new PageInfo(this.userService.getObjectList(paramMap),5);
		 mav.addObject("pageInfo",page);
		 return mav;  
	 };
	 
	 /*public String getUserList(HttpServletRequest request) throws ServiceException{
		 HashMap<String, Object> paramMap=new HashMap<String, Object>();
		 request.setAttribute("userList", userService.getUserList(paramMap));
		 return "/user/userInfo";
	 }*/
	 
}

我的总结:
用SqlSessionTemplate的方式加上封装dao层和service层的base类,比dao接口之间映射xml的方式要方便扩展一些,更适合实际项目。

过程:
(1)、 新建IMybatisDao接口,声明通用的方法
(2)、新建MybatisDaoImpl接口实现类,实现这些方法,这个类里面注入SqlSessionTemplate(就是spring-mybatis配置文件里面声明的sqlSessionTemplate),通过sqlSessionTemplate调用增删改查方法
(3)、新建IBaseService接口,声明一下通用的业务层方法
(4)、新建BaseServiceImpl接口实现类,实现IBaseService接口的方法,并且注入IMybatisDao接口
(5)、业务层UserServiceImpl继承BaseServiceImpl接口实现类,方便调用IMybatisDao(通过接口调用方法)
(6)、新建BaseController(控制层base类),注入IUserService接口
(7)、控制层UserController继承BaseController类,方便调用IUserService接口,IUserService接口。
通过调用IUserService接口的方法(这些方法里面会调用IMybatisDao接口的实现方法),从而实现SqlSessionTemplate方式的封装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值