http://www.cnblogs.com/loger1995/p/6352179.html?utm_source=itdadao&utm_medium=referral

说明:这是我刚开始学SSM时候自己摸索的整合方式,我重新写了一个新的、比较流行的整合方式,建议两个都看看!传送门

1.总的目录

2.导包(我直接导入了常用的,有些是多余的)

打包下载:链接:http://pan.baidu.com/s/1bpimPB5 密码:yphy

说明:画了框框的那两个包一定要导对版本,另外有个包名为commons-dbcp-dbcp2xxxxx.jar 的,跟上面的一个画框框中的一个很像,不要导错了。(后期加入:很多数据库连接池的包都可以,唯独commons-dbcp-dbcp2xxxxx.jar会报错)

 3.数据库表

CREATE TABLE USER(
id VARCHAR(20) PRIMARY KEY,
NAME VARCHAR(20),
job VARCHAR(20)
);

4.web.xml 

配置 springmvc 配置文件的位置,配置编码过滤器

<?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>CRUD</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Map all requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- 配置编码过滤器 -->
    <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>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

5.springmvc 配置文件 spring-mvc.xml

配置自动扫面的包(controller) 和 springMVC 视图解析器

<?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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <context:component-scan base-package="com.loger.controller"></context:component-scan>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>

6.spring 的配置文件 applicationContext.xml

  1>配置数据源(org.apache.commons.dbcp2.BasicDataSource),不要导错包

  2>配置 SqlSessionFaction,属性包括数据源和 mybatis 的 mapper 的文件位置

  3> 配置 mybatis 注解 ,用此注解来标识 mybatis 的接口方法,使得该接口注入到 Spring 的 IOC 容器中,并且该接口的方法与 mapper 的各种操作对应。

<?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:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!-- 配置数据源 -->
    <bean class="org.apache.commons.dbcp2.BasicDataSource"
        id="dataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/crud"></property>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="username" value="root"></property>
        <property name="password" value="apple"></property>
    </bean>

    <!-- 配置SqlSessionFaction -->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean"
        id="sqlSessionFactory">
        <property name="dataSource" ref="dataSource"></property>
        <property name="mapperLocations" value="com/loger/entity/*.xml"></property>
    </bean>

    <!-- 配置 mybatis 注解 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.loger.dao"></property>
        <property name="annotationClass" value="com.loger.annotation.MyBatisRepository"></property>
    </bean>

</beans>

7. 建立 mybatis 注解接口 MyBatisRepository.java

package com.loger.annotation;

/**
 * Mybatis 使用该注解标识 DAO
 * @author Loger
 *
 */

public @interface MyBatisRepository {

}

8. 实体类 User.java

package com.loger.entity;

public class User {
    private String id;
    private String name;
    private String job;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", job=" + job + "]";
    }
    public User(String id, String name, String job) {
        super();
        this.id = id;
        this.name = name;
        this.job = job;
    }
    public User() {
        super();
    }

}

mybatis 的 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"><!-- namespace对应接口的全类名 -->
<mapper namespace="com.loger.dao.UserDao">
    <select id="findAll" resultType="com.loger.entity.User">
        select * from user
    </select>

    <select id="findById" resultType="com.loger.entity.User">
        select * from user where id = #{id}
    </select>

    <delete id="deleteById" parameterType="int">
        delete from user where id = #{id}
    </delete>

    <insert id="addUser" parameterType="com.loger.entity.User">
        insert into user(id,name,job) values (#{id},#{name},#{job})
    </insert>

    <update id="updateUser" parameterType="com.loger.entity.User">
        update user set name=#{name},job=#{job} where id=#{id}
    </update>
</mapper>

对数据库操作的接口 UserDao.java

这个接口的方法名要与上面的 mapper 的对应 id 名一致 ,这个接口要用 mybatis 注解标识

package com.loger.dao;

import java.util.List;

import com.loger.annotation.MyBatisRepository;
import com.loger.entity.User;

@MyBatisRepository
public interface UserDao {
    List<User> findAll();
    User findById(String  id);
    void deleteById(String  id);
    void addUser(User user);
    void updateUser(User user);
}

控制器 UserController.java

package com.loger.controller;

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

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

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.loger.dao.UserDao;
import com.loger.entity.User;

@Controller
@RequestMapping("/user")
public class UserController {
    ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    UserDao dao = ctx.getBean(UserDao.class);

    @RequestMapping("/list")
    public String list(HttpServletRequest request){
        List<User> list = dao.findAll();
        request.setAttribute("users", list);
        return "list";
    }

    @RequestMapping("/add")
    public String add(User user){
        dao.addUser(user);
        return "success";
    }

    @RequestMapping("/delete")
    public String delete(String id){
        dao.deleteById(id);
        return "success";
    }

    @RequestMapping("/get")
    public String get(String id,HttpServletRequest request) throws IOException{
        User user = dao.findById(id);
        request.setAttribute("user", user);
        return "show";
    }

    @RequestMapping("/update")
    public String update(User user){
        dao.updateUser(user);
        return "success";
    }
}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
查询所有:<br>
<a href="user/list">List All</a><br><br>

    新增:<br><form action="user/add">
        ID:<input type="text" name="id"><br>
        NAME:<input type="text" name="name"><br>
        JOB:<input type="text" name="job"><br>
        <input type="submit" value="提交">
    </form><br>

    删除:<br><form action="user/delete">
        输入要删除的ID:<input type="text" name="id"><input type="submit" value="提交"><br>
    </form><br>

    查询:<br><form action="user/get">
        输入要查询的ID:<input type="text" name="id"><input type="submit" value="提交"><br>
    </form><br>

    修改:<br><form action="user/update">
        根据ID来改,不支持修改ID,输入的名字,工作为修改值:<br>
        ID:<input type="text" name="id"><br>
        NAME:<input type="text" name="name"><br>
        JOB:<input type="text" name="job"><br>
        <input type="submit" value="提交">
    </form><br>
</body>
</html>

list.jsp (/WEB-INF/views/目录下的,包括下面几个JSP页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <table width="60%" border="1" cellpadding="2" cellspacing="0">
        <tr>
            <th>ID</th>
            <th>NAME</th>
            <th>JOB</th>
        </tr>
        <c:forEach items="${users }" var="user">
            <tr>
                <td>${user.id }</td>
                <td>${user.name }</td>
                <td>${user.job }</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <table width="60%" border="1" cellpadding="2" cellspacing="0">
        <tr>
            <th>ID</th>
            <th>NAME</th>
            <th>JOB</th>
        </tr>
        <tr>
            <td>${user.id }</td>
            <td>${user.name }</td>
            <td>${user.job }</td>
        </tr>
    </table><br>

    <a href="../index.jsp">返回</a>
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    操作成功!<br>
    <a href="../index.jsp">返回</a>
</body>
</html>

运行效果:

首页:

点击List All

增:

删:

查:

改:

SSM整合CRUD操作(一)的更多相关文章

  1. SSM整合_年轻人的第一个增删改查_查找

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  2. SSM整合_年轻人的第一个增删改查_基础环境搭建

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  3. SSM整合_年轻人的第一个增删改查_新增

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  4. Spring Boot整合Mybatis并完成CRUD操作

    MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...

  5. Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  6. Spring Boot整合Mybatis完成级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  7. SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作

    SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作 1> 数据准备 -- 创建测试表 CREATE TABLE `tb_user` ( `id` ) NOT ...

  8. 08 SSM整合案例(企业权限管理系统):07.订单操作

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 07.订单操作 SSM订单操作 ...

  9. 08 SSM整合案例(企业权限管理系统):06.产品操作

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 06.产品操作 SSM 环境搭 ...

随机推荐

  1. exynos4412—CMU裸板复习

    本章描述了Exynos 4412 SCP的时钟管理单元(CMUs).在Exynos 4412 SCP中,CMUs控制相位锁相环(PLLs),并为CPU.总线和单个ip的功能时钟生成系统时钟.它们还与电 ...

  2. 20155212——man指令的使用及mypwd的实现

    man指令的使用及mypwd的实现 man指令的使用 一.man -k的k参数以及代表的意思 代号 代表內容 1 使用者在shell中可以操作的指令或可执行档 2 系統核心可呼叫的函数与工具等 3 一 ...

  3. 20155338 2016-2017-2 《Java程序设计》第3周学习总结

    20155338 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 本周学习量比较多,但是知识点并不是特别难,学习了书本的第四五章,其中个人重点学习了数组对象. ...

  4. apt-get 0%

    错误如下:      www.2cto.com   使用apt-get命令安装软件时出现“0%[正在等待报头]“的提示且无法继续安装,一般出现此问题是因为安装过程中Ctrl+C强行中断或其它原因导致上 ...

  5. 【java笔记】Calendar.getInstance()是什么意思

    Calendar类是个抽象类,因此本身不能被实例化,然而在却创建了Calendar 的对象,但并不是抽象类可以创建对象这个对象并不是Calendar 自身实例,而是其子类实例,这是在getInstan ...

  6. 【转载】D3D深度测试和Alpha混合

    原文:D3D深度测试和Alpha混合 1.       深度测试 a)         深度缓冲区:屏幕上每个像素点的深度信息的一块内存缓冲区.D3D通过比较当前绘制的像素点的深度和对应深度缓冲区的点 ...

  7. CF 868 F. Yet Another Minimization Problem

    F. Yet Another Minimization Problem http://codeforces.com/contest/868/problem/F 题意: 给定一个长度为n的序列.你需要将 ...

  8. XAF-如何改变列表点击时的默认行为

    在 Windows 窗体应用程序中,按下回车或双击列表会打开默认的详细视图. 在 ASP.NET Web 应用程序中,单击对象时执行此操作. 这一行为是由 ListViewProcessCurrent ...

  9. spring 属性文件加载接口---PropertySourceLoader

    org.springframework.boot.config Interface PropertySourceLoader 实现类: PropertiesPropertySourceLoader, ...

  10. Google Chrome插件分享

    前言 浏览器是大家日常使用最多的工具之一,对于程序员来说,Google Chrome浏览器当然是大家优选的最爱之一.面对Chrome丰富的插件真的是爱不释手,如何把自己的Chrome调教成自己心仪的样 ...