前言:这篇博客就不从头写了,只写改的的部分,其他的可以对照之前的博客
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方式的封装。