SpringMVC+Spring+MyBatis框架学习笔记

视频地址
GitHub仓库地址

SSM-CRUD

ssm:SpringMVC+Spring+MyBatis

CRUD:Create(创建)

Retrieve(查询)

Update(更新)

Delete(删除)

功能点

  1. 分页
  2. 数据校验 : jquery前端校验+JSR303后端校验
  3. ajax
  4. Rest风格的URI;使用HTTP协议请求方式的动词,来表示对资源的操作(GET(查询),POST(新增),PUT(修改),DELETE(删除))

技术点

  1. 基础框架-ssm(SpringMVC+Spring+MyBatis)
  2. 数据库-MySQL
  3. 前端框架-bootstrap快速搭建简洁美观的界面
  4. 项目的依赖管理-Maven
  5. 分页-pagehelper
  6. 逆向工程-MyBatis Generator

基础环境搭建

  1. 创建一个maven工程
  2. 引入项目依赖的jar包
    • spring
    • springmvc
    • mybatis
    • 数据库连接池,驱动包
    • 其他(jstl,servlet-api,junit)
  3. 引入bootstrap前端框架
  4. 编写ssm整合的关键配置文件
    • web.xml,spring,springmvc,mybatis,使用mybatis的逆向工程生成对应的bean以及mapper
  5. 测试mapper
    • CRUD-查询
      • 查询
        1. 访问index.jsp页面
        2. index.jsp页面发送出查询员工列表请求
        3. EmployeeController来接受请求,查出员工数据
        4. 来到list.jsp页面进行展示
        5. pageHelper分页插件完成分页查询功能
        6. URI:/emps
      • 查询-ajax
        1. index.jsp页面直接发送ajax请求进行员工分页数据的查询
        2. 服务器将查出的数据,以json字符串的形式返回给浏览器
        3. 浏览器收到js字符串。可以使用js对json进行解析,使用js通过dom增删改改变页面。
        4. 返回json。实现客户端的无关性。
      • 新增
        • 新增-逻辑
          1. 在index.jsp页面点击”新增”
          2. 弹出新增对话框
          3. 去数据库查询部门列表,显示在对话框中
          4. 用户输入数据,并进行校验
            jquery前端校验,ajax用户名重复校验,重要数据(后端校验(JSR303),唯一约束);
          5. 完成保存
          6. URI:
            • /emp/{id} GET 查询员工
            • /emp POST 保存员工
            • /emp/{id} PUT 修改员工
            • /emp/{id} DELETE 删除员工
      • 修改
        • 修改-逻辑
          1. 点击编辑
          2. 弹出用户修改的模态框(显示用户信息)
          3. 点击更新,完成用户修改
      • 删除
        • 删除-逻辑
          1. 单个删除
            • URI:/emp/{id} DELETE
          2. 批量删除

SSM框架:

  1. Spring

    • Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
  2. SpringMVC

    • Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
  3. MyBatis

    • MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的XML或注解用于配置和原始映射,将接口和Java 的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

框架各层联系:

  • SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层
  • 使用spring MVC负责请求的转发和视图管理
  • spring实现业务对象管理,mybatis作为数据对象的持久化引擎

原理:

SpringMVC:

  • 客户端发送请求到DispacherServlet(分发器)
  • 由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller
  • Controller调用业务逻辑处理后,返回ModelAndView
  • DispacherSerclet查询视图解析器,找到ModelAndView指定的视图
  • 视图负责将结果显示到客户端

Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们Java中的类,当然也包括service dao里面的),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字new。另外spring的aop,事务管理等等都是我们经常用到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

使用方法:

要完成一个功能:

  • 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
  • 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
  • 写Mapper.java,将Mapper.xml中的操作按照id映射成Java函数。
  • 写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。
  • 写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。
  • 写JSP页面调用,请求哪些参数,需要获取什么数据。
  • DataBase ===> Entity ===>Mapper.xml===>Mapper.Java ===> Service.java ===> Controller.java ===> Jsp.
SpringMVC Spring MyBatis
拥有控制器,作用跟Struts类似,接收外部请求,解析参数传给服务层 容器属于协调上下文,管理对象间的依赖,提供事务机制 属于orm持久层框架,将业务实体与数据表联合起来
控制层,想当与Struts的作用 控制反转和依赖注入创建对象交由容器管理,达到了解耦的作用 主要用来操作数据库(数据库的增删改查)

IOC:控制反转,是一种降低对象之间耦合关系的设计思想,面试的时候最好能说出来个例子,加深理解。例子:租房子,以前租房子需要一个房子一个房子找,费时费力,然后现在加入一个房屋中介,把你需要的房型告诉中介,就可以直接选到需要的房子,中介就相当于spring容器。

AOP:面向切面编程,是面向对象开发的一种补充,它允许开发人员在不改变原来模型的基础上动态的修改模型以满足新的需求,如:动态的增加日志、安全或异常处理等。AOP使业务逻辑各部分间的耦合度降低,提高程序可重用性,提高开发效率。