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 环境搭 ...
随机推荐
- python教程(三)·函数进阶(下)
下半部分果然很快到来,这次介绍函数的更高级用法,装饰器! 函数嵌套 先来说说函数嵌套,python中的函数是可以嵌套的,也就是说可以将一个函数放在另一个函数里面,比如: >>> de ...
- ACM1009:FatMouse' Trade
Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding th ...
- 获取http-post请求的原生报文
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf-8&q ...
- 20155203 实验一《Java开发环境的熟悉》实验报告
20155203 实验一<Java开发环境的熟悉>实验报告 一.实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 二.练 ...
- 20155216 2017-2018-1 《信息安全系统设计基础》第二周课堂练习补交以及Myod的实现
20155216 2017-2018-1 <信息安全系统设计基础>第二周课堂练习补交 课堂测试3:行断点的设置 运行截图: 未完成原因:课前未安装 cgdb 具体步骤: 1.输入命令:gc ...
- 20155231 2016-2017-2 《Java程序设计》第4周学习总结
20155231 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 学习目标 理解封装.继承.多态的关系 理解抽象类与接口的区别 掌握S.O.L.I.D原则 了 ...
- 北京Uber优步司机奖励政策(4月13日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 创龙OMAPL138的SPI FLASH读写
1. 目前最大的疑问是OMAPL138和DSP6748的DSP部分是完全一样的吗(虽然知道芯片完全是引脚兼容的)?因此现在使用OMAPL138的DSP内核去读写一下外部的SPI FLASH芯片,先看下 ...
- mysql 创建外键时发生错误的原因和解决方法
可以去网上查看错误号,就能知道到底哪里出错了 https://zhidao.baidu.com/question/359868536.html 这里1452对应的错误是因为建立外键的表中还有数据,所以 ...
- shell 参数
转:http://hi.baidu.com/ipvsadm/item/489d9e16460195ddbe9042ee linux中shell变量$#,$@,$0,$1,$2的含义解释 linux中s ...