ssm整合(简单的增删改查)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: ssm整合(简单的增删改查)

1 创建maven web项目;

2 添加jar包(所有的依赖)

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!--json依赖-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
    </dependency>
    <!--添加springwebmvc依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.6.RELEASE</version>
    </dependency>
    <!--mybatis依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <!--mybatis的spring接口实现依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>
    <!--数据源依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.6.RELEASE</version>
    </dependency>
    <!--数据库驱动依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.32</version>
    </dependency>
    <!--druid依赖-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.26</version>
    </dependency>
    <!--jstl依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!---->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.4.0.Final</version>
    </dependency>
  </dependencies>


添加最主要的Tomact目录

<plugins>
      <!--添加tomcat-plugin插件用于web发布执行-->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <path>/</path>
          <port>8080</port>
        </configuration>
      </plugin>
    </plugins>



3 补充目录及配置文件

我们用的是idea所以目录是不完整的,需要我们自己来配置,




4 整合spring与mybatis


spring-mybatis.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"
       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.xsd">
    <!--4.1加载数据库参数文件-->
    <context:property-placeholder location="classpath:res/db.properties"/>
    <!--4.2配置数据库连接池druid-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--4.3配置sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath*:mapping/*.xml"/>
    </bean>
    <!--4.4 配置mapper扫描器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!--配置dao扫描接口-->
        <property name="basePackage" value="mapper"/>
    </bean>
</beans>

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mmmm
jdbc.username=root
jdbc.password=root


mapper路径下的DeptController

public interface DeptMapper {
    public List<Dept> findAll();
    public Dept findById(int deptno);
    public boolean updateDept(Dept dept);
    public boolean insertDept(Dept dept);
    public boolean deleteDept(int deptno);
}


resources资源目录下的mapping文件夹的DeptMapper.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.zyzy.day54.mapper.DeptMapper">
    <select id="findAll" resultType="com.zyzy.day54.po.Dept">
        SELECT *
        FROM DEPT
    </select>
    <select id="findById" parameterType="int" resultType="com.zyzy.day54.po.Dept">
        SELECT *
        FROM DEPT
        WHERE deptno = #{deptno}
    </select>
    <update id="updateDept" parameterType="com.zyzy.day54.po.Dept">
        UPDATE DEPT
        SET dname=#{dname},loc=#{loc}
        WHERE deptno=#{deptno}
    </update>
    <insert id="insertDept" parameterType="com.zyzy.day54.po.Dept">
        INSERT INTO
        DEPT
        (dname,loc)
        VALUES (#{dname},#{loc})
    </insert>
    <delete id="deleteDept" parameterType="int" >
        DELETE FROM
        DEPT
        WHERE deptno=#{deptno}
    </delete>
</mapper>


po里面我们封装的实体类

public class Dept {
    private Integer deptno;
    private String dname;
    private String loc;
    public Dept(Integer deptno, String dname, String loc) {
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc;
    }
    public Dept() {
    }
    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", dname='" + dname + '\'' +
                ", loc='" + loc + '\'' +
                '}';
    }
    public Integer getDeptno() {
        return deptno;
    }
    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getLoc() {
        return loc;
    }
    public void setLoc(String loc) {
        this.loc = loc;
    }
}


5 整合web容器与spring

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!--5整合spring和web容器 begin-->
  <!--配置全局参数上下文-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring-*.xml</param-value>
  </context-param>
  <!--7.1 配置编码过滤器-->
  <filter>
    <filter-name>characterFilter</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>characterFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!--配置侦听器-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--整合spring和web容器 end-->
  <!--7 整合springmvc+web容器begin-->
  <!--因为web.xml书写规范必须要求过滤器在监听前所以提到前面-->
  <!--7.2配置核心处理器-->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>


先完成service和mapper层的解耦

public interface DeptService {
    public List<Dept> findDepts();
    public Dept findById(int deptno);
    public boolean updateDept(Dept dept);
    public boolean insertDept(Dept dept);
    public boolean deleteDept(int deptno);
}
service的实现类
@Service
public class DeptServiceImpl implements DeptService {
    @Autowired
    private DeptMapper deptMapper;
    @Override
    public List<Dept> findDepts() {
        List<Dept> all = deptMapper.findAll();
        return all;
    }
    @Override
    public Dept findById(int deptno) {
        Dept dept = deptMapper.findById(deptno);
        return dept;
    }
    @Override
    public boolean updateDept(Dept dept) {
        boolean b = deptMapper.updateDept(dept);
        return b;
    }
    @Override
    public boolean insertDept(Dept dept) {
        boolean b = deptMapper.insertDept(dept);
        return b;
    }
    @Override
    public boolean deleteDept(int deptno) {
        boolean b = deptMapper.deleteDept(deptno);
        return b;
    }
}


配置spring-service.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"
       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.xsd">
    <context:component-scan base-package="com.zyzy.day54.service"/>
</beans>



完成controller和service解耦

DeptController

@Controller
public class DeptController {
    @Autowired
    public DeptService deptService;
    @RequestMapping(value = "/depts",method = RequestMethod.GET)
    public String findAll(Model model){
        List<Dept> depts = deptService.findDepts();
        model.addAttribute("depts",depts);
        return "list";
    }
    @RequestMapping(value = "/edit",method = RequestMethod.GET)
    public String findById(@RequestParam("deptno") int deptno ,Map map){
        Dept dept = deptService.findById(deptno);
        map.put("dept",dept);
        return "edit";
    }
    @RequestMapping( value = "/update" , method = RequestMethod.POST)
    public String updateDept( Dept dept){
            boolean b = deptService.updateDept(dept);
            if (b){
                return "redirect:/depts";
            }
            return null;
    }
    @RequestMapping(value = "/add" , method = RequestMethod.POST)
    public String insertDept(Dept dept){
            boolean b = deptService.insertDept(dept);
            if (b){
                return "redirect:/depts";
            }
        return null;
    }
    @RequestMapping(value = "/delete" , method = RequestMethod.GET)
    public String deleteDept(@RequestParam("deptno") int deptno){
        boolean b = deptService.deleteDept(deptno);
        if (b){
            return "redirect:/depts";
        }else
            return null;
    }
}


6 完善springmvc配置

springmvc.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:mvc="http://www.springframework.org/schema/mvc"
       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.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--6.1 配置controller(c处理器)扫描包路径-->
    <context:component-scan base-package="com.zyzy.day54.controller"/>
    <!--6.2 配置注解驱动-->
    <mvc:annotation-driven/>
    <!--6.3 配置静态资源处理器-->
    <mvc:default-servlet-handler/>
    <!--5.4 配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>



7 整合web容器与springmvc


web.xml(看第五步)


8 检验整合效果


附上所用的前端页面

add.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="add" method="post">
    部门名称<input type="text" name="dname" >
    <br>
    部门地址<input type="text" name="loc" >
    <br>
    <input type="submit" value="add">
</form>
</body>
</html>


edit.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="update" method="post">
    部门id<input type="text" name="deptno" value="${dept.deptno}" readonly><br>
    部门名称<input type="text" name="dname" value="${dept.dname}">
    <br>
    部门地址<input type="text" name="loc" value="${dept.loc}">
    <br>
    <input type="submit" value="update">
</form>
</body>
</html>


index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
<a href="/depts">查看全部信息</a>
<br>
<a href="/add.jsp">添加</a>
</body>
</html>


list.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <c:forEach items="${depts}" var="dept">
        ${dept.deptno}
        ${dept.dname}
        ${dept.loc}
        <a href="/edit?deptno=${dept.deptno}">修改</a>
        <a href="/delete?deptno=${dept.deptno}">删除</a>
        <br>
    </c:forEach>
</body>
</html>


    水平有限,有什么错误希望大家指出!!!


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
SQL 数据库连接 API
ThinkPHP6实现增删改查接口
ThinkPHP6实现增删改查接口
12 1
|
3天前
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
3天前
|
SQL XML Java
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
这篇文章是Spring5框架的实战教程,详细讲解了如何使用JdbcTemplate进行数据库的增删改查操作,包括在项目中引入依赖、配置数据库连接池、创建实体类、定义DAO接口及其实现,并提供了具体的代码示例和测试结果,最后还提供了完整的XML配置文件和测试代码。
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
|
14天前
|
关系型数据库 MySQL 大数据
C#使用SqlSugar操作MySQL数据库实现简单的增删改查
C#使用SqlSugar操作MySQL数据库实现简单的增删改查
42 2
|
4天前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
18 0
|
5天前
|
前端开发 Java 关系型数据库
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
|
2月前
|
Java 数据库 Maven
自己本地模拟内存数据库增删改查
自己本地模拟内存数据库增删改查
13 0
|
3月前
|
SQL 关系型数据库 MySQL
mysql 数据库 增删改查 基本操作
mysql 数据库 增删改查 基本操作
|
2月前
|
关系型数据库 MySQL 数据库
mysql数据库表格的增删改查
mysql数据库表格的增删改查
|
2月前
|
SQL 存储 开发框架
【Entity Framework】EF中的增删改查
【Entity Framework】EF中的增删改查
53 0