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我就不寫了

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM