一、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的配置