SSM框架的使用

1.Maven工程需要导入的jar包
mybatis 3.3.8版本
mysql 5.1.37版本
junit 4.12版本
mybatis-spring 1.3.1版本
spring-webmvc 3.2.8版本
spring-jdbc 3.2.8版本
dbcp 1.4版本
jstl 1.2版本

2.配置文件web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>DAY08-01-SSM-Demo</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>DispatcherServlet</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:conf/spring-*.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>DispatcherServlet</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
</web-app>

3.resources下的配置文件
(1)conf文件的配置文件
db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/tedustore?useUnicode=true&characterEncoding=utf-8
username=root
password=
initsize=1
maxsize=5

spring-db.xml

<?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:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">

	<!-- conf/spring-db.xml 用于管理数据库的连接 -->
	
	<!-- 读取conf/db.properties -->
	<util:properties id="dbConfig" location="classpath:conf/db.properties"></util:properties>
	
	<!-- 配置DBCP所需的Bean -->
	<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="#{dbConfig.driver}"></property>
		<property name="url" value="#{dbConfig.url}"></property>
		<property name="username" value="#{dbConfig.username}"></property>
		<property name="password" value="#{dbConfig.password}"></property>
		<property name="initialSize" value="#{dbConfig.initsize}"></property>
		<property name="maxActive" value="#{dbConfig.maxsize}"></property>
	</bean>
	
</beans>

spring-mvc.xml

<?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:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">

	<!-- conf/spring-mvc.xml 用于管理MVC的配置 -->
	
	<context:component-scan base-package="cn.tedu.store.controller"/>
	
	<mvc:annotation-driven/>
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
	
</beans>

spring-mybatis.xml

<?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:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">

	<!-- conf/spring-mybatis.xml 用于管理MVC的配置 -->
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="ds"></property>
		<property name="mapperLocations" value="classpath:mapping/*.xml"></property>
	</bean>
	
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
		<!-- basePackage 设置Mapper(dao)的扫描位置 -->
		<property name="basePackage" value="cn.tedu.store.dao"></property>
	</bean>
	
</beans>

spring-service.xml

<?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:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">

	<!-- conf/spring-service.xml 用于管理业务层 -->
	
	<context:component-scan base-package="cn.tedu.store.service"/>
	
</beans>

(2)mapping文件夹下的
userMapper.xml

<?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">
<mapper namespace="cn.tedu.store.dao.UserDao">
  <!-- mapping/userMapper.xml 映射文件 -->
  <!-- result: 结果   parameter: 参数   type: 类型   
  resultType: 用于声明方法的返回结果元素的类型   paramterType: 参数的类型,当方法只有一个参数时候使用!
  如果有更多个参数建议使用@Param 注解标注 -->
  <select id="findAllUsers" resultType="cn.tedu.store.bean.User">
  	select id,username,password,mobile,email,create_time as createTime from user limit #{start},#{size}
  </select>
  
  <select id="countUsers" resultType="int">
  	select count(*) from user
  </select>
  
  <insert id="insertUser" parameterType="cn.tedu.store.bean.User" useGeneratedKeys="true" keyProperty="id">
  	insert into user(id,username,password,mobile,email,create_time) values(null,#{username},#{password},#{mobile},#{email},#{createTime})
  </insert>
</mapper>

4.WEB-INF下的文件
(1)inc文件夹下

footer.jsp

<%@ page contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
  <!-- Main Footer -->
  <footer class="main-footer">
    <!-- Default to the left -->
    <strong>Copyright &copy; 2016 <a href="#">Company</a>.</strong> 
  </footer>

header.jsp

<%@ page contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
  <!-- Main Header -->
  <header class="main-header">
    <span class="logo">功能列表</span>
    <!-- Header Navbar -->
    <span class="navbar">
    </span>
  </header>

left-side.jsp

<%@ page contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
  <aside class="main-sidebar">
    <section class="sidebar">
      <ul class="sidebar-menu" data-widget="tree">
        <li class="${userMenu} treeview">
          <a><i class="fa fa-user"></i> <span>用户</span>
          </a>
          <ul class="treeview-menu">
            <li class="${usersMenu}"><a href="${base}/user/users.do?page=1"> <i class="fa fa-users"></i> 用户管理</a></li>
            <li class="${userAddMenu}"><a href="${base}/user/add.do"> <i class="fa fa-user-plus"></i> 添加用户</a></li>
          </ul>
        </li>
      </ul>
    </section>
  </aside>

(2)jsp文件夹下user文件夹下

list.jsp

<%@ page contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="base" scope="request" value="${pageContext.request.contextPath}"/>
<%-- 设置那个左侧菜单是活动的 list.jsp--%>
<c:set var="userMenu" value="active" scope="request"/>
<c:set var="usersMenu" value="active" scope="request"/>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>用户列表</title>
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
			font-size: 14px;
		}
		.main-header{
			line-height: 100px;
			background-color: #367fa9;
		}
		.logo{
			background-color: #357ca5;
			color: #fff;
			font-size: 40px;
			text-align: center;
			width: 230px;
			position: relative;
		}
		.navbar{
			background-color: #3c8dbc;
			margin-left: 230px;
		}
		.main-sidebar{
			background-color: #222d32;
			position: absolute;
			width: 230px;
			font-size: 14px;
			color: #fff;
			height:100%;
		}
		.main-sidebar li{
			line-height: 30px;
		}
		.main-sidebar .treeview-menu a{
			text-decoration:none;
			color: #3c8dbc;
		}
		.content-wrapper{
			background-color: #fff;
			color: #333;
			margin-left: 230px;
			padding-top: 15px;
			padding-left: 30px;
			font-size: 14px;
		}
		.box-title{
			display:inline;
		}
		.content-wrapper li{
			display:inline;
		}
		tr,h1,.box-title{
			line-height: 30px;
		}
		.box-footer{
			padding-top: 20px;
		}
		table{
			border-collapse: collapse;
		}
		th,td{
			width: 120px;
			padding: 5px;
			text-align: center;
			border: 1px solid #d2d6de;
		}
		h1{
			font-size: 20px;
		}
		a{
			text-decoration:none;
		}
		.main-footer{
			background: #fff;
			border-top: 1px solid #d2d6de;
			margin-left: 230px;
			font-size: 14px;
			padding-top: 30px;
		}
		.content-wrapper .box-header a,.content-wrapper table a{
			padding: 5px;
			background-color: #367fa9;
			color: #fff;
		}
	</style>
</head>
<body>
<div>

  <!-- 导入导航栏 -->
  <c:import url="/WEB-INF/inc/header.jsp"/>

  <!-- OK -->
  <c:import url="/WEB-INF/inc/left-side.jsp"></c:import>

  <div class="content-wrapper">
    <section class="content-header">
      <h1>用户管理
        <small>管理当前系统的全部用户</small>
      </h1>
    </section>

    <!-- Main content -->
    <section>
        <div>
          <div>
            <div class="box">
              <div class="box-header">
                <h3 class="box-title">全部用户</h3>
                <a href="${base}/user/add.do">添加</a>
              </div>
              <!-- /.box-header -->
              <div class="box-body">
                <table>
                  <tr>
                    <th style="width: 10px">#</th>
                    <th>用户名</th>
                    <th>邮箱</th>
                    <th>电话</th>
                    <th>创建时间</th>
                    <th></th>
                  </tr>
                  <c:forEach items="${users}"
                  	var="user" >
	                  <tr>
	                    <td>${user.id}</td>
	                    <td>${user.username}</td>
	                    <td>${user.email}</td>
	                    <td>${user.mobile}</td>
	                    <td><fmt:formatDate 
	                    	value="${user.createTime}"
	                    	pattern="yy年M月d日 H:m"/></td>
                       <td>
                         <a onclick="return confirm('真的删除 ${user.username}吗?')"
                         href="${base}/user/delete.do?id=${user.id}">删除</a>
                       </td> 
	                  </tr>
                  </c:forEach>
                </table>
              </div>
              <!-- /.box-body -->
              <div class="box-footer">
                <ul>
                  <li><a href="#">«</a></li>
                  <c:forEach begin="1" end="${pages}" 
                    var="i" >
                    <li><a href="${base}/user/users.do?page=${i}">${i}</a></li>
                  </c:forEach>
                  <li><a href="#">»</a></li>
                </ul>
              </div>
            </div>
            <!-- /.box -->
          </div>
       </div>
    </section>
  </div>

  <!-- Footer -->
  <c:import url="/WEB-INF/inc/footer.jsp"></c:import>
  
</div>

</body>
</html>

add.jsp

<%@ page contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="base" scope="request" value="${pageContext.request.contextPath}"/>
<%-- 设置那个左侧菜单是活动的  add.jsp--%>
<c:set var="userMenu" value="active" scope="request"/>
<c:set var="userAddMenu" value="active" scope="request"/>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>添加用户</title>
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
			font-size: 14px;
		}
		.main-header{
			line-height: 100px;
			background-color: #367fa9;
		}
		.logo{
			background-color: #357ca5;
			color: #fff;
			font-size: 40px;
			text-align: center;
			width: 230px;
			position: relative;
		}
		.navbar{
			background-color: #3c8dbc;
			margin-left: 230px;
		}
		.main-sidebar{
			background-color: #222d32;
			position: absolute;
			width: 230px;
			font-size: 14px;
			color: #fff;
			height:100%;
		}
		.main-sidebar li{
			line-height: 30px;
		}
		.main-sidebar .treeview-menu a{
			text-decoration:none;
			color: #3c8dbc;
		}
		.content-wrapper{
			background-color: #fff;
			color: #333;
			margin-left: 230px;
			padding-top: 15px;
			padding-left: 30px;
			font-size: 14px;
		}
		.form-group,h1,.box-title{
			line-height: 50px;
		}
		label{
			line-height: 50px;
			position: relative;
			bottom: 10px;
		}
		input{
			position: absolute;
			padding: 5px;
			left: 330px;
		}
		.box-footer{
			padding:10px 0;
		}
		h1{
			font-size: 20px;
		}
		a{
			text-decoration:none;
		}
		.main-footer{
			background: #fff;
			border-top: 1px solid #d2d6de;
			margin-left: 230px;
			font-size: 14px;
			padding-top: 50px;
		}
	</style>
</head>
<body>
<div class="wrapper">
  <!-- 导入导航栏 -->
  <c:import url="/WEB-INF/inc/header.jsp"/>
  <!-- OK -->
  <c:import url="/WEB-INF/inc/left-side.jsp"></c:import>
  <div class="content-wrapper">
    <section class="content-header">
      <h1>用户管理
        <small>管理用户信息</small>
      </h1>
    </section>

    <!-- Main content -->
    <section>
        <div>
          <div>
            <div class="box">
              <div class="box-header">
                <h3 class="box-title">添加用户
                  <small>${error}</small>
                </h3>
              </div>
              <!-- /.box-header -->
              <div class="box-body">
                <!-- 表单 -->
                <!-- form start -->
                <form class="form-horizontal" 
                  method="post" action="${base}/user/save.do">  
                  <div class="box-body">
                    <div class="form-group">
                      <label for="inputEmail3">用户名</label>
                        <input type="text" id="inputEmail3" placeholder="用户名" name="username">
                    </div>
                    <div class="form-group">
                    	<label for="inputPassword3">密码</label>
                        <input type="password" id="inputPassword3" placeholder="密码" name="password">
                    </div>
                    <div class="form-group">
                      <label for="inputConfirm">确认密码</label>
                        <input type="password" id="inputConfirm" placeholder="确认密码" name="confirm">
                    </div>
                    <div class="form-group">
                      <label for="inputEmail">e-mail</label>
                        <input type="email" id="inputEmail" placeholder="e-mail" name="email">
                    </div>
                    <div class="form-group">
                      <label for="inputMobile">电话</label>
                        <input type="text" id="inputMobile" placeholder="电话" name="mobile">
                    </div>
                  </div>
                  <!-- /.box-body -->
                  <div class="box-footer">
                    <button type="submit">保存</button>
                  </div>
                  <!-- /.box-footer -->
                </form>
              </div>
              <!-- /.box-body -->
            </div>
            <!-- /.box -->
          </div>
       </div>
    </section>
  </div>
  <!-- Footer -->
  <c:import url="/WEB-INF/inc/footer.jsp"></c:import>
</div>
</body>
</html>

5.JavaBean类

package cn.tedu.store.bean;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
	
	private static final long serialVersionUID = -6325206870033939864L;
	private Integer id;
	private String username;
	private String password;
	private String mobile;
	private String email;
	private Date createTime;
	
	public User() {
		super();
	}
	
	public User(Integer id, String username, String password, String mobile, String email, Date createTime) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
		this.mobile = mobile;
		this.email = email;
		this.createTime = createTime;
	}
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((createTime == null) ? 0 : createTime.hashCode());
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + ((mobile == null) ? 0 : mobile.hashCode());
		result = prime * result + ((password == null) ? 0 : password.hashCode());
		result = prime * result + ((username == null) ? 0 : username.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (createTime == null) {
			if (other.createTime != null)
				return false;
		} else if (!createTime.equals(other.createTime))
			return false;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (mobile == null) {
			if (other.mobile != null)
				return false;
		} else if (!mobile.equals(other.mobile))
			return false;
		if (password == null) {
			if (other.password != null)
				return false;
		} else if (!password.equals(other.password))
			return false;
		if (username == null) {
			if (other.username != null)
				return false;
		} else if (!username.equals(other.username))
			return false;
		return true;
	}
	
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + ", mobile=" + mobile
				+ ", email=" + email + ", createTime=" + createTime + "]";
	}
	
}

6.Dao接口类

package cn.tedu.store.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.tedu.store.bean.User;

public interface UserDao {
	/**
	 * 查询全部的用户信息
	 * @return 用户信息列表
	 */
	List<User> findAllUsers(@Param("start") int start,@Param("size") int size);
	
	
	/**
	 * 统计用户数量
	 * @return
	 */
	int countUsers();
	
	int insertUser(User user);
}

7.业务层类:

package cn.tedu.store.service;

import java.util.List;

import cn.tedu.store.bean.User;

public interface UserService {
	/**
	 * 获取全部用户信息
	 * @return 用户信息
	 */
	List<User> list(Integer page);
	
	/**
	 * 获取用户信息的页数
	 */
	int listPages();
	
	User save(String username,String password,String mobile,String email);
}

package cn.tedu.store.service.impl;

import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import cn.tedu.store.bean.User;
import cn.tedu.store.dao.UserDao;
import cn.tedu.store.service.UserService;

@Service("userService") //当前类是业务层组件
public class UserServiceImpl implements UserService {

	@Resource
	private UserDao userDao;
	
	public List<User> list(Integer page) {
		if (page==null) {
			page=1;
		}
		//计算页面范围
		int size=8;
		int start=(page-1)*size;
		
		//调用数据层处理业务
		return userDao.findAllUsers(start,size);                                                              
	}

	public int listPages() {
		int rows = userDao.countUsers();
		int size = 8;
		int pages = rows/size;
		if(rows%size==0) {
			return pages;
		}
		return pages+1;
	}

	public User save(String username,String password,String mobile,String email) {
		User user = new User(null,username,password,mobile,email,new Date());
		int n = userDao.insertUser(user);
		if (n!=1) {
			throw new RuntimeException("添加失败");
		}
		return user;
	}
}

8.控制器类

package cn.tedu.store.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import cn.tedu.store.bean.User;
import cn.tedu.store.service.UserService;

/**
 * 控制器,用于处理用户有关的业务功能 
 *
 */
@Controller
@RequestMapping("/user")
public class UserController {
	
	@Resource
	private UserService userService;
	
	@RequestMapping("/users.do")
	public String users(ModelMap map,@RequestParam(required=false,value="page") Integer page) {
		//访问业务员获取全部用户信息
		List<User> list = userService.list(page);
		int pages = userService.listPages();
		map.put("users", list);
		map.put("pages", pages);
		System.out.println(list);
		//转发到JSP页面,显示结果
		return "user/list";
	}
	
	@RequestMapping("/add.do")
	public String add() {
		return "user/add";
	}
	
	@RequestMapping("save.do")
	public String save(String username,String password,String mobile,String email) {
		User user = userService.save(username,password,mobile,email);
		return "redirect:users.do";
	}
}

9.如需要测试类

package cn.tedu.test;


import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyBatisTest {
	ClassPathXmlApplicationContext ctx;
	
	@Before
	public void init() {
		ctx = new ClassPathXmlApplicationContext("conf/spring-db.xml","conf/spring-mybatis.xml");
	}
	
	@Test
	public void testSqlSession() {
		SqlSessionFactory factory = ctx.getBean("sqlSessionFactory", SqlSessionFactory.class);
		SqlSession session = factory.openSession();
		System.out.println(session);
		session.close();
	} 
}

package cn.tedu.test;

import java.util.Date;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.tedu.store.bean.User;
import cn.tedu.store.dao.UserDao;

public class UserDaoTest {
	ClassPathXmlApplicationContext ctx;
	UserDao dao;
	
	@Before //在全部测试案例之前执行的方法
	public void init() {
		ctx = new ClassPathXmlApplicationContext("conf/spring-db.xml","conf/spring-mybatis.xml");
		dao = ctx.getBean("userDao", UserDao.class);
	}
	
	@After //全部测试案例执行之后执行 destory方法
	public void destory() {
		ctx.close();
	}
	
	@Test
	public void testFindAllUsers() {
		List<User> list = dao.findAllUsers(0,8);
		for (User user : list) {
			System.out.println(user);
		}
	}
	
	@Test
	public void testCountUsers() {
		int n = dao.countUsers();
		System.out.println(n);
	}
	
	@Test
	public void testInsertUser() {
		User user=new User(null, "Andy", 
				"123", "119", "[email protected]", new Date());
				int n = dao.insertUser(user);
				System.out.println(n);		
	}
}

package cn.tedu.test;

import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.tedu.store.bean.User;
import cn.tedu.store.service.UserService;

public class UserServiceTest {
	ClassPathXmlApplicationContext ctx;
	UserService service;

	@Before
	public void init() {
		ctx = new ClassPathXmlApplicationContext("conf/spring-db.xml","conf/spring-mybatis.xml","conf/spring-service.xml");
		service = ctx.getBean("userService", UserService.class);
	}
	
	@After
	public void destory() {
		ctx.close();
	}
	
	@Test
	public void testList() {
		List<User> list = service.list(null);
		for(User user : list) {
			System.out.println(user);
		}
	}
	
	
	@Test
	public void testListPages() {
		int n = service.listPages();
		System.out.println(n);
	}
	
	@Test
	public void testSave() {
		User user=service.save("Wang","123", "12345678", "[email protected]");
		System.out.println(user); 
	}
}


猜你喜欢

转载自blog.csdn.net/linsa_pursuer/article/details/79117819
今日推荐