springmvc+mybatis+spring整合

一、springmvc+spring配置文件:

<?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:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	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.0.xsd 
						http://www.springframework.org/schema/mvc 
						http://www.springframework.org/schema/mvc/spring-mvc-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/tx 
						http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
	
	<!-- springmvc是spring的一部分,这个文件既可以作为spring配置文件也可以作为springmvc文件,导入相应的schema就行了 -->
	
	<!-- 数据源 -->	
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver"/>
		<property name="jdbcUrl" value="jdbc:mysql:///mybatisdb"/>
		<property name="user" value="root"/>
		<property name="password" value="root"/>
		<property name="initialPoolSize" value="10"/>
		<property name="maxPoolSize" value="20"/>
		<property name="minPoolSize" value="10"/>
	</bean>
	
	<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 注入mybatis配置文件 -->
		<property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
		<!-- 注入数据源 -->
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<!-- 配置拦截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/mvc/**"/>
			<bean class="cn.com.interceptor.LoginInterceptor"/>
		</mvc:interceptor>
	</mvc:interceptors>
	
	<!-- 事务管理器 -->
	<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<!-- 组件扫描 -->
	<context:component-scan base-package="cn.com"/>
	
	<tx:annotation-driven transaction-manager="txManager"/>
	<!-- spring mvc注解 -->
	<mvc:annotation-driven/>
	<!-- 配置mvc静态资源,如js,css,html等,如果不配置,则会出现jsp中导入了jquery,但是无法使用的现象,也放不到相应的html 
	配置方式有很多,我觉得最简单的就是下面这种方式
	-->
	<mvc:default-servlet-handler/>	
	
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="utf-8"/>
	</bean>
	
	<!-- 视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/pages/"/>
	<property name="suffix" value=".jsp"></property>
</bean>
</beans>

二、mybatis配置文件

<span style="font-size:18px;color:#FF0000;"><strong>sqlMapConfig.xml</strong></span>

<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
		PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
		"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<typeAliases>
		<!-- 定义别名 -->
		<typeAlias type="cn.com.domain.User" alias="User"/>
		<typeAlias type="cn.com.domain.Privilege" alias="Privilege"/>
		<typeAlias type="cn.com.domain.UpDownLoadFile" alias="File"/>
		<typeAlias type="cn.com.domain.Page" alias="Page"/>
	</typeAliases>
	<!-- 注册SQL映射文件 -->
	<mappers>
		<mapper resource="cn/com/domain/UserMapper.xml" />
		<mapper resource="cn/com/domain/PrivilegeMapper.xml" />
		<mapper resource="cn/com/domain/UpDownLoadFileMapper.xml"/>
		<mapper resource="cn/com/domain/PageMapper.xml"/>
	</mappers>
</configuration>

三、相关实体类
dao


package cn.com.dao;

import java.util.List;

import cn.com.domain.UpdatePwdUser;
import cn.com.domain.User;

public interface UserDao {

	int saveUser(User user);
	int deleteUserById(Integer userId);
	User findUserById(Integer userId);
	int updateUser(User user);
	List<User> findAllUser();
	User findUserByUandP(User user);
	
	User findUserByUserName(String userName);
	User findUserByUserNameAndId(String userName,Integer userId);
	User findUserByUserTel(String userTel,Integer userId);
	User findUserByUserQq(String userQq,Integer userId);
	User findUserByUserEmail(String userEmail,Integer userId);
	
	int updateUserPwd(UpdatePwdUser user);
}


 
daoimpl 

package cn.com.dao.impl;

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

import javax.annotation.Resource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.stereotype.Repository;

import cn.com.dao.UserDao;
import cn.com.domain.UpdatePwdUser;
import cn.com.domain.User;
import cn.com.sql.SQLConstant;
@Repository("userDao")
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{
	private static Log log = LogFactory.getLog(UserDaoImpl.class);
	//由于setSqlSessionFactory方法是final修饰的,所以不能在这里重写,通过这种方式也可以将SqlsessionFactory注入
	@Resource
	public void set(SqlSessionFactory sqlSessionFactory){
		this.setSqlSessionFactory(sqlSessionFactory);
	}
	@Override
	public int saveUser(User user) {
		int ret = this.getSqlSession().insert(SQLConstant.INSERT_USER, user);
		log.info("添加用户 : "+(ret==1?"success":"fail"));
		return ret;
	}

	@Override
	public int deleteUserById(Integer userId) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public User findUserById(Integer userId) {
		User user = this.getSqlSession().selectOne(SQLConstant.SELECT_USER_BY_USER_ID, userId);
		log.info("查询到的用户信息: "+user);
		return user;
	}

	@Override
	public int updateUser(User user) {
		//不能存在相同用户名,手机号,邮箱,qq
		int ret = this.getSqlSession().update(SQLConstant.UPDATE_USER, user);
		log.info("修改 :"+(ret==1?"成功":"失败"));
		return ret;
	}

	@Override
	public List<User> findAllUser() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public User findUserByUandP(User user) {
		User dbUser = this.getSqlSession().selectOne(SQLConstant.SELECT_USER_BY_USERNAME_PASSWORD, user);
		log.info("查询到的用户信息 : "+dbUser);
		return dbUser;
	}

	@Override
	public User findUserByUserName(String userName) {
		User user = this.getSqlSession().selectOne(SQLConstant.SELECT_USER_BY_USER_NAME, userName);
		log.info("查询到的用户信息 : "+user);
		return user;
	}
	@Override
	public User findUserByUserTel(String userTel,Integer userId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("userTel", userTel);
		map.put("userId", userId);
		User user = this.getSqlSession().selectOne(SQLConstant.SELECT_USER_BY_USER_TEL, map);
		log.info("通过电话和非id查找的用户信息:"+user);
		return user;
	}
	@Override
	public User findUserByUserQq(String userQq,Integer userId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("userQq", userQq);
		map.put("userId", userId);
		User user = this.getSqlSession().selectOne(SQLConstant.SELECT_USER_BY_USER_QQ, map);
		log.info("通过qq和非id查找的用户信息:"+user);
		return user;
	}
	@Override
	public User findUserByUserEmail(String userEmail,Integer userId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("userEmail", userEmail);
		map.put("userId", userId);
		User user = this.getSqlSession().selectOne(SQLConstant.SELECT_USER_BY_USER_EMAIL, map);
		log.info("通过邮箱和非id查找到的用户信息:"+user);
		return user;
	}
	@Override
	public int updateUserPwd(UpdatePwdUser user) {
		int ret = this.getSqlSession().update(SQLConstant.UPDATE_USER_PWD, user);
		log.info("密码修改:"+(ret==1?"成功":"失败"));
		return ret;
	}
	@Override
	public User findUserByUserNameAndId(String userName, Integer userId) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("userName", userName);
		map.put("userId", userId);
		User user = this.getSqlSession().selectOne(SQLConstant.SELECT_USER_BY_NAME_ID, map);
		log.info("通过name和非id查找到的用户信息:"+user);
		return user;
	}
	
	
	
}

service

package cn.com.service;

import java.util.List;

import cn.com.domain.UpdatePwdUser;
import cn.com.domain.User;

public interface UserService {

	int saveUser(User user);
	int updateUser(User user);
	int deleteUserById(Integer userId);
	User findUserById(Integer userId);
	User findUserForLogin(User user);
	List<User> findAllUser();
	boolean findUserByUserName(String userName);
	boolean findForSaveUpdate(User user);
	
	int updateUserPwd(UpdatePwdUser user);
}

serviceImpl

package cn.com.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import cn.com.dao.UserDao;
import cn.com.domain.UpdatePwdUser;
import cn.com.domain.User;
import cn.com.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService {
	@Resource
	private UserDao userDao;

	@Transactional(propagation = Propagation.REQUIRED)
	public int saveUser(User user) {
		int ret = 0;
		if(this.findForSaveUpdate(user)){
			ret = this.userDao.saveUser(user);
		}
		return ret;
	}

	@Transactional
	public int updateUser(User user) {
		int ret = 0;
		if(this.findForSaveUpdate(user)){
			//没有相同的name等,可以进行修改
			ret = this.userDao.updateUser(user);
		}
		return ret;
	}

	@Override
	public int deleteUserById(Integer userId) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public User findUserById(Integer userId) {
		// TODO Auto-generated method stub
		return this.userDao.findUserById(userId);
	}

	@Override
	public List<User> findAllUser() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public User findUserForLogin(User user) {
		return this.userDao.findUserByUandP(user);
	}

	@Override
	public boolean findUserByUserName(String userName) {
		boolean flag = false;
		if(this.userDao.findUserByUserName(userName)!=null){
			flag = true;
		}
		return flag;
	}

	@Override
	public boolean findForSaveUpdate(User user) {
		//查到返回false,查不到返回true
		if(this.userDao.findUserByUserNameAndId(user.getUserName(),user.getUserId())!=null
				||this.userDao.findUserByUserQq(user.getUserQq(),user.getUserId())!=null
				||this.userDao.findUserByUserTel(user.getUserTel(),user.getUserId())!=null
				||this.userDao.findUserByUserEmail(user.getUserEmail(),user.getUserId())!=null){
			return false;
		}
		
		return true;
	}

	@Override
	public int updateUserPwd(UpdatePwdUser user) {
		// TODO Auto-generated method stub
		return this.userDao.updateUserPwd(user);
	}

}
controller

package cn.com.controller;


import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.com.domain.UpdatePwdUser;
import cn.com.domain.User;
import cn.com.service.UserService;

@Controller
@RequestMapping("/mvc/user")
@Scope("prototype")
public class UserController {
	@Resource
	private UserService userService;
	
	//跳转到完善用户信息页面
	@RequestMapping("toCompleteRegisterPage")
	public String toCompleteRegisterPage(Model model,String userId){
		model.addAttribute("userId", userId);
		return "user/completeRegister";
	}
	@RequestMapping("toUpdateUser")
	public String toUpdateUser(){
		//修改的是当前登陆用户信息,当前登录用户信息已经放入到session中,直接取出就行
		return "user/updateUser";
	}
	@RequestMapping("updateUser")
	public String updateUser(User user,HttpServletRequest request){
		int ret = this.userService.updateUser(user);
		if(ret==1){
			return "redirect:/mvc/user/findAssignedUser?userId="+user.getUserId();
		}
		request.setAttribute("dbUser", user);
		request.setAttribute("updateFlag", "修改失败,用户名或者手机或者qq或者邮箱出现重复");
		
		return "user/updateUser";
	}
	@RequestMapping("findAssignedUser")
	public String findUserByUserId(Integer userId,HttpServletRequest request){
		if(userId!=null){
			User user = this.userService.findUserById(userId);
			request.getSession().setAttribute("dbUser", user);
		}
		return "user/showUser";
	}
	@RequestMapping("toUpdateUserPwd")
	public String toUpdateUserPwd(){
		return "user/changePwd";
	}
	@RequestMapping("updatePwd")
	public String updateUserPwd(UpdatePwdUser user,HttpServletRequest request){
		if(this.userService.updateUserPwd(user)==1){
			request.setAttribute("updateFlag", "密码修改成功");
			return "success";
		}
		request.setAttribute("updateFlag","修改失败");
		return "user/error";
	}
}

注:省略掉spring的配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值