SSM配置并实现简单的数据库增删改查操作

一、程序结构图

二、jar包导入

  链接:https://pan.baidu.com/s/1jJDMlyI 密码:i610

  

                       开始编写程序 

  数据库的创建我就不写了 大家可以根据自己的喜好创建数据库

  一、创建User实体类

package com.ssm.model;

public class User {
    private int id;
    private String username;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int 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;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password="
                + password + "]";
    }
}

  二、创建和实现mapper接口

    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="com.ssm.mapper.UserMapper">
    <!-- 添加 -->
    <insert id="save" parameterType="com.ssm.model.User">
        INSERT INTO Demo4(id,username,password) VALUES(#{id},#{username},#{password})
    </insert>
    <!-- 修改 -->
    <update id="update" parameterType="User">
        UPDATE Demo4 SET username=#{username},password=#{password} where id=#{id}
    </update>
    <!-- 删除 -->
    <delete id="delete" parameterType="int">
        DELETE FROM Demo4 WHERE id=#{id}
    </delete>
    <!-- 查询 -->
    <select id="findById" parameterType="int" resultType="User">
        SELECT id,username,password FROM Demo4 WHERE id=#{id}
    </select>
    <!-- 查询 -->
    <select id="findAll" resultType="User">
        SELECT id,username,password FROM Demo4
    </select>
    <!-- 分页 -->
    <select id="selectUsersByPage" parameterType="int" resultType="User">
           SELECT TOP 10 * FROM
        (SELECT ROW_NUMBER() OVER (ORDER BY ID) AS ROWNUMBER,* FROM Demo4 )
        AS A WHERE ROWNUMBER>10*(#{page}-1)
    </select>
</mapper>

 

    UserMapper.java

package com.ssm.mapper;

import java.util.List;

import com.ssm.model.User;

public interface UserMapper {
    void save(User user);
    int update(User user);
    boolean delete(int id);
    User findById(int id);
    List<User> findAll();
}

  三、mybatis和spring的整合

    spring-common.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:util="http://www.springframework.org/schema/util" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" 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/util http://www.springframework.org/schema/util/spring-util-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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<!-- Mybatis和Spring的整合 -->
    <!-- 1. 数据源 : DriverManagerDataSource -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
        <property name="jdbcUrl" value="jdbc:sqlserver://localhost:1433;databaseName=Demo"></property>
        <property name="user" value="sa"></property>
        <property name="password" value="yi19950816"></property>
    </bean>
    <!--2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源  
        MyBatis定义数据源,同意加载配置-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>
    <!--3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory  
        basePackage:指定sql映射文件/接口所在的包(自动扫描)  -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
        <property name="basePackage" value="com.ssm.mapper"></property>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>
    <!--4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源-->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 5. 使用声明式事务  transaction-manager:引用上面定义的事务管理器-->
    <tx:annotation-driven transaction-manager="txManager"/>
</beans>

  四、mybatis的配置文件 

    mybatis-config.xml

<?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 alias="User" type="com.ssm.model.User"/>
    </typeAliases>
    <!-- 实体接口映射资源 -->
    <!--说明:如果xxMapper.xml配置文件放在和xxMapper.java统一目录下
        mappers也可以省略
        因为org.mybatis.spring.mapper.MapperFactoryBean默认会去查找与xxMapper.java相同目录和名称的xxMapper.xml  
    -->
    <mappers>
        <mapper resource="com/ssm/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

  五、配置log4j.properties

log4j.rootLogger=DEBUG, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
#log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# Print the date in ISO 8601 format
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

  六、整合springmvc

    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:util="http://www.springframework.org/schema/util" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" 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/util http://www.springframework.org/schema/util/spring-util-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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
    <!-- 注解扫描包 -->
    <context:component-scan base-package="com.ssm.controller"></context:component-scan>
    <context:component-scan base-package="com.ssm.service"></context:component-scan>
    <!-- 开启注解 -->
    <mvc:annotation-driven/>
    <!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd -->
    <mvc:resources location="/img/**" mapping="/img/"/>
    <mvc:resources location="/js/**" mapping="/js/"/>
    <mvc:resources location="/css/**" mapping="/css/"/>
    <mvc:resources location="/html/**" mapping="/html/"/>
    <!-- 定义跳转的文件的前后缀 ,视图模式配置-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

  七、web.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ssm001</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>
  <!-- 加载spring容器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
   <!-- 设置Spring容器加载所有的配置文件的路径 -->
   <context-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:spring-common.xml,classpath:spring-mvc.xml</param-value>
   </context-param>
   <!-- 配置SpringMVC核心控制器 -->
   <servlet>
           <servlet-name>springMVC</servlet-name>
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
           <!-- 配置初始配置化文件,前面contextConfigLocation看情况二选一 -->
           <init-param>
               <param-name>contextConfigLocation</param-name>
               <param-value>classpath:spring-common.xml,classpath:spring-mvc.xml</param-value>
           </init-param>
           <!-- 启动加载一次 -->
           <load-on-startup>1</load-on-startup>
   </servlet>
   <!--为DispatcherServlet建立映射 -->
   <servlet-mapping>
           <servlet-name>springMVC</servlet-name>
           <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
           <url-pattern>/</url-pattern>
   </servlet-mapping>
   <!-- 防止Spring内存溢出监听器 -->
   <listener>
           <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
   </listener>
   <!-- 解决工程编码过滤器 -->
   <filter>
           <filter-name>encodingFilter</filter-name>
           <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
           <init-param>
               <param-name>encoding</param-name>
               <param-value>UTF-8</param-value>
           </init-param>
           <init-param>
               <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
           </init-param>
   </filter>
   
   <filter-mapping>
           <filter-name>encodingFilter</filter-name>
           <url-pattern>/*</url-pattern>
   </filter-mapping>
   <welcome-file-list>
           <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
</web-app>

  八、srevice的 创建和 实现

    UserService.java

package com.ssm.service;

import java.util.List;

import com.ssm.model.User;

public interface UserService {
 void save(User user);
 int update(User user);
 boolean delete(int id);
 User findById(int id);
 List<User> findAll();
}

  UserServiceImpl.java

package com.ssm.service.impl;

import java.util.List;

import javax.annotation.Resource;

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

import com.ssm.mapper.UserMapper;
import com.ssm.model.User;
import com.ssm.service.UserService;
@Service
@Transactional
public class UserServiceImpl implements UserService{

    @Resource
    private UserMapper usermapper;
    @Override
    public void save(User user) {
        // TODO Auto-generated method stub
        usermapper.save(user);
    }

    @Override
    public boolean update(User user) {
        // TODO Auto-generated method stub
        return usermapper.update(user);
    }

    @Override
    public boolean delete(int id) {
        // TODO Auto-generated method stub
        return usermapper.delete(id);
    }

    @Override
    public User findById(int id) {
        // TODO Auto-generated method stub
        User user=usermapper.findById(id);
        return user;
    }

    @Override
    public List<User> findAll() {
        // TODO Auto-generated method stub
        List<User> findAllList=usermapper.findAll();
        return findAllList;
    }
}

  九、控制层Controller

    UserController.java

package com.ssm.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.ssm.model.User;
import com.ssm.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    /**
     * 获取所有用户列表
     * @param request
     * @param model
     * @return
     */
    @RequestMapping("/getAllUser")
    public String getAllUser(HttpServletRequest request,Model model){
        List<User> user=userService.findAll();
        model.addAttribute("userList",user);
        request.setAttribute("userList",user);
        return "/allUser";
    }
    /**  
         * 跳转到添加用户界面  
         * @param request  
         * @return  
         */
    @RequestMapping("/toAddUser")
    public String toAddUser()
    {
        return "/addUser";
    }
    /**  
         * 添加用户并重定向  
         * @param user  
         * @param request  
         * @return  
         */
    @RequestMapping("/addUser")
    public String addUser(User user,Model model){
        userService.save(user);
        return "redirect:/user/getAllUser";
    }
    /**  
         *编辑用户  
         * @param user  
         * @param request  
         * @return  
         */
    @RequestMapping("/updateUser")
    public String updateUser(User user,HttpServletRequest request,Model model){
        if(userService.update(user)!=0)
        {
            user=userService.findById(user.getId());
            request.setAttribute("user",user);
            model.addAttribute("user",user);
            return "redirect:/user/getAllUser";
        }
        else {
            return "/error";                    
        }
    }
    /**  
         * 根据id查询单个用户  
         * @param id  
         * @param request  
         * @return  
         */
    @RequestMapping("/getUser")
    public String getUser(int id,HttpServletRequest request,Model model){
        request.setAttribute("user",userService.findById(id));
        model.addAttribute("user",userService.findById(id));
        return "/editUser";
    }
    /**  
         * 删除用户  
         * @param id  
         * @param request  
         * @param response  
         */
    @RequestMapping("/delUser")
    public void delUser(int id,HttpServletRequest request,HttpServletResponse response){
        String result="{\"result\":\"error\"}";
        if(userService.delete(id))
        {
            result="{\"result\":\"success\"}";
        }else {
            result="{\"result\":\"error\"}";
        }
        response.setContentType("application/json");
        try {
            PrintWriter out=response.getWriter();
            out.write(result);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

  十、jap页面

  index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>用户列表</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript" src="js/jquery-3.2.1.js"></script>
    <script type="text/javascript">
        
    </script>
  </head>
  
  <body>
      <h5>
          <a href="<%=basePath%>user/getAllUser">进入用户管理页</a>
      </h5>
  </body>
</html>

    addUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'addUser.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript" src="js/jquery-1.7.1.js"></script>
    <script type="text/javascript">
            function addUser(){  
            var form = document.forms[0];  
            form.action "<%=basePath%>user/addUser";  
            form.method="post";  
            form.submit();
        }
    </script>
  </head>
  
  <body>
    <h1><%=path%>添加用户<%=basePath%></h1>  
    <form action="" name="userForm">  
        ID:<input type="text" name="id">  
        账号:<input type="text" name="username">  
        密码:<input type="text" name="password">  
        <input type="button" value="添加" onclick="addUser()">  
    </form> 
  </body>
</html>

    allUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'allUser.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript" src="js/jquery-1.7.1.js"></script>
    <script type="text/javascript">  
        function del(id){  
             $.get("<%=basePath%>user/delUser?id="+id,function(data){  
                if("success"==data.result){  
                        alert("删除成功"); 
                    window.location.reload();  
                }else{alert("删除失败");}  
            });
        }  
</script>
  </head>
  
  <body>
    <h6><a href="<%=basePath%>user/toAddUser">添加用户</a></h6>
    <table border="1">
        <tbody>
            <tr>
                <th>id</th>
                <th>账号</th>
                <th>密码</th>
                <th>操作</th>
            </tr>
            <c:if test="${!empty userList}">
                <c:forEach items="${userList}" var="user">
                    <tr>
                        <td>${user.id}</td>
                        <td>${user.username}</td>
                        <td>${user.password}</td>
                        <td>  
                            <a href="<%=basePath%>user/getUser?id=${user.id}">编辑</a>  
                            <a href="javascript:del('${user.id}')">删除</a>  
                        </td>
                    </tr>
                </c:forEach>
            </c:if>
        </tbody>
    </table>
  </body>
</html>

    editUser.jsp

s<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'editUser.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript" src="js/jquery-1.7.1.js"></script>
    <script type="text/javascript">  
        function updateUsers(){ 
            var form=document.forms[0];
            form.action="<%=basePath%>user/updateUser";
            form.method="post";  
            form.submit() ; 
        }  
    </script>
    </head>
  
  <body>
  <h1>修改用户</h1>  
    <form action="" name="userForm">  
        <input type="hidden" name="id" value="${user.id}"/> 
        ID:<a>${user.id}</a> 
        账号:<input type="text" name="userName" value="${user.username}"/>  
        密码:<input type="text" name="password" value="${user.password}"/>  
        <input type="button" value="编辑" onclick="updateUsers()"/>  
    </form> 
  </body>
</html>

    error.jsp就是一个显示错误的 jsp我就不写了

 

 

 

 

 

posted @ 2018-01-12 15:49  Fulcrum.of.the.world  阅读(12685)  评论(1编辑  收藏  举报