SSM整合CRUD操作(一)
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操作(一)的更多相关文章
- SSM整合_年轻人的第一个增删改查_查找
写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...
- SSM整合_年轻人的第一个增删改查_基础环境搭建
写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...
- SSM整合_年轻人的第一个增删改查_新增
写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...
- Spring Boot整合Mybatis并完成CRUD操作
MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...
- Springboot整合Mybatis实现级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- Spring Boot整合Mybatis完成级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作
SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作 1> 数据准备 -- 创建测试表 CREATE TABLE `tb_user` ( `id` ) NOT ...
- 08 SSM整合案例(企业权限管理系统):07.订单操作
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 07.订单操作 SSM订单操作 ...
- 08 SSM整合案例(企业权限管理系统):06.产品操作
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 06.产品操作 SSM 环境搭 ...
随机推荐
- DOM操作和jQuery实现选项移动操作
DOM: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- 20155301第十二周java课程程序
20155301第十二周java课程程序 内容一:在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Ar ...
- 20155339 2016-2017-2 《Java程序设计》第3周学习总结
20155339 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 认识对象 类与对象 1.定义类时使用class关键词再加名称,例如 class Cl ...
- css3新增的content 的用法:
<-----------------------------------------------文字加在内容后面----------------------------------------- ...
- 【LG3237】[HNOI2014]米特运输
题面 洛谷 题解 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include < ...
- WPF 如何自定义一个弹框
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 简述: 手工以原生Grid的方式,自定义了一个仿弹窗效果,优点可以自定义,缺点需要自己实现以及维护整个弹窗的效 ...
- 《Node.js 包教不包会》
<Node.js 包教不包会> 为何写作此课程 在 CNode(https://cnodejs.org/) 混了那么久,解答了不少 Node.js 初学者们的问题.回头想想,那些问题所需要 ...
- CI框架浅析(一)
CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序.本人使用CI框架有一段时间了,现在决定把 ...
- 视觉SLAM中的深度估计问题
一.研究背景 视觉SLAM需要获取世界坐标系中点的深度. 世界坐标系到像素坐标系的转换为(深度即Z): 深度的获取一共分两种方式: a)主动式 RGB-D相机按照原理又分为结构光测距.ToF相机 To ...
- 【转】glumer Appium + Python环境搭建(移动端自动化)
最近整理了一下自动化的东西,好久没搭建环境又踩了不少坑,appium的环境搭建比较繁琐,好多同行估计都在环境上被卡死了.分享一下~~ 一.安装JDK,配置JDK环境 百度搜索下载就行,这里分享一 ...