JavaEE框架技术

彭红伟、骆丽华、李康顺、聂鹏、袁大伟、孟雨、王诗雅、张新伟、聂军、谢备

目录

  • 1 初识MyBatis框架
    • 1.1 框架概述
    • 1.2 框架的优势
    • 1.3 当前主流框架
    • 1.4 传统JDBC的劣势
    • 1.5 MyBatis概述
    • 1.6 MyBatis环境搭建
    • 1.7 MyBatis入门程序
    • 1.8 MyBatis工作原理
    • 1.9 扩展阅读
    • 1.10 章节测试
  • 2 MyBatis的核心配置
    • 2.1 SqlSessionFactoryBuilder对象
    • 2.2 SqlSessionFactory对象
    • 2.3 SqlSession对象
    • 2.4 MyBatis配置文件的主要元素
    • 2.5 <properties>元素
    • 2.6 <settings>元素
    • 2.7 <typeAliases>元素
    • 2.8 <environments>元素
    • 2.9 <mappers>元素
    • 2.10 MyBatis映射文件中的常用元素
    • 2.11 <select>元素
    • 2.12 <insert>元素
    • 2.13 <update>元素
    • 2.14 <delete>元素
    • 2.15 <sql>元素
    • 2.16 <resultMap>元素
    • 2.17 案例:员工管理系统
    • 2.18 扩展阅读
    • 2.19 章节测试
  • 3 动态SQL
    • 3.1 动态SQL中的元素
    • 3.2 <if>元素
    • 3.3 <choose>、<when>、<otherwise>元素
    • 3.4 <where>元素
    • 3.5 <trim>元素
    • 3.6 更新操作
    • 3.7 <foreach>元素中的属性
    • 3.8 <foreach>元素迭代数组
    • 3.9 <foreach>元素迭代List
    • 3.10 <foreach>元素迭代Map
    • 3.11 案例:学生信息查询系统
    • 3.12 扩展阅读
    • 3.13 章节测试
  • 4 MyBatis的关联映射和缓存机制
    • 4.1 关联映射概述
    • 4.2 一对一查询
    • 4.3 一对多查询
    • 4.4 多对多查询
    • 4.5 一级缓存
    • 4.6 二级缓存
    • 4.7 案例:商品的类别
    • 4.8 扩展阅读
    • 4.9 章节测试
  • 5 MyBatis的注解开发
    • 5.1 @Select注解
    • 5.2 @Insert注解
    • 5.3 @Update注解
    • 5.4 @Delete注解
    • 5.5 @Param注解
    • 5.6 一对一查询
    • 5.7 一对多查询
    • 5.8 多对多查询
    • 5.9 案例:基于MyBatis注解的学生 管理程序
    • 5.10 扩展阅读
    • 5.11 章节测试
  • 6 初识Spring框架
    • 6.1 Spring概述
    • 6.2 Spring框架的优点
    • 6.3 Spring的体系结构
    • 6.4 Spring 5的新特性
    • 6.5 Spring的下载及目录结构
    • 6.6 Spring的入门程序
    • 6.7 控制反转的概念
    • 6.8 依赖注入的概念
    • 6.9 依赖注入的类型—构造方法注入
    • 6.10 依赖注入的类型—属性setter方法注入
    • 6.11 依赖注入的应用
    • 6.12 扩展阅读
    • 6.13 章节测试
  • 7 Spring中的Bean的管理
    • 7.1 BeanFactory接口
    • 7.2 ApplicationContext接口
    • 7.3 Bean的配置
    • 7.4 构造方法实例化
    • 7.5 静态工厂实例化
    • 7.6 实例工厂实例化
    • 7.7 singleton作用域
    • 7.8 prototype作用域
    • 7.9 基于XML的装配
    • 7.10 基于注解的装配
    • 7.11 自动装配
    • 7.12 Bean的生命周期
    • 7.13 扩展阅读
    • 7.14 章节测试
  • 8 Spring AOP
    • 8.1 Spring AOP概述
    • 8.2 Spring AOP术语
    • 8.3 JDK动态代理
    • 8.4 CGLib动态代理
    • 8.5 基于XML的AOP实现
    • 8.6 基于注解的AOP实现
    • 8.7 扩展阅读
    • 8.8 章节测试
  • 9 Spring的数据库编程
    • 9.1 JdbcTemplate概述
    • 9.2 Spring JDBC的配置
    • 9.3 excute()方法
    • 9.4 update()方法
    • 9.5 query()方法
    • 9.6 事务管理的核心接口
    • 9.7 事务管理的方式
    • 9.8 基于XML方式的声明式事务
    • 9.9 基于注解方式的声明式事务
    • 9.10 案例:实现用户登录
    • 9.11 扩展阅读
    • 9.12 章节测试
  • 10 初识Spring MVC框架
    • 10.1 Spring MVC概述
    • 10.2 Spring MVC特点
    • 10.3 Spring MVC入门程序
    • 10.4 Spring MVC工作原理
    • 10.5 扩展阅读
    • 10.6 章节测试
  • 11 Spring MVC的核心类和注解
    • 11.1 DispatcherServlet类
    • 11.2 @Controller注解
    • 11.3 @RequestMapping注解的使用
    • 11.4 @RequestMapping注解的属性
    • 11.5 请求映射方式
    • 11.6 扩展阅读
    • 11.7 章节测试
  • 12 Spring MVC数据绑定和相应
    • 12.1 数据绑定
    • 12.2 默认类型数据绑定
    • 12.3 简单数据类型绑定
    • 12.4 POJO绑定
    • 12.5 自定义类型转换器
    • 12.6 数组绑定
    • 12.7 集合绑定
    • 12.8 复杂POJO绑定—属性为对象类型的数据绑定
    • 12.9 复杂POJO绑定—属性为List类型的数据绑定
    • 12.10 复杂POJO绑定—属性为Map类型的数据绑定
    • 12.11 JSON数据绑定
    • 12.12 返回值为void类型的页面跳转
    • 12.13 返回值为String类型的页面跳转—不携带数据
    • 12.14 返回值为String类型的页面跳转—携带数据
    • 12.15 返回值为ModelAndView类型的页面跳转
    • 12.16 普通字符串的回写
    • 12.17 JSON数据的回写—对象数据转换成JSON数据后的回写
    • 12.18 JSON数据的回写—集合数据转换成JSON数据后的回写
    • 12.19 扩展阅读
    • 12.20 章节测试
  • 13 Spring MVC的高级功能
    • 13.1 简单异常处理器
    • 13.2 自定义异常处理器
    • 13.3 异常处理注解
    • 13.4 拦截器概述
    • 13.5 拦截器的配置
    • 13.6 拦截器的执行流程—单个拦截器
    • 13.7 拦截器的执行流程—多个拦截器
    • 13.8 案例:后台系统登录验证
    • 13.9 文件上传
    • 13.10 文件下载
    • 13.11 案例:文件上传和下载
    • 13.12 扩展阅读
    • 13.13 章节测试
  • 14 SSM框架整合
    • 14.1 常用方式整合思路
    • 14.2 项目基础结构搭建
    • 14.3 Spring和MyBatis整合
    • 14.4 Spring和Spring MVC整合
    • 14.5 纯注解方式整合思路
    • 14.6 纯注解SSM框架整合
    • 14.7 扩展阅读
    • 14.8 章节测试
  • 15 云借阅图书管理系统
    • 15.1 系统概述
    • 15.2 数据库设计
    • 15.3 系统环境搭建
    • 15.4 用户登录
    • 15.5 实现登录验证
    • 15.6 注销登录
    • 15.7 新书推荐
    • 15.8 图书借阅
    • 15.9 当前借阅
    • 15.10 借阅记录
    • 15.11 访问权限控制
    • 15.12 扩展阅读
    • 15.13 章节测试
扩展阅读

MyBatis的扩展点(plugins)

一、Mybatis概述

1. 框架简介

目标

了解什么是框架

理解框架解决的问题

讲解

1.1 什么是框架

框架是整个或部分应用的可重用设计,是可定制化的应用骨架。它可以帮开发人员简化开发过程,提高开发效率。


项目里有一部分代码:和业务无关,而又不得不写的代码==>框架

项目里剩下的部分代码:实现业务功能需要的逻辑代码

简而言之,框架是一个应用系统的半成品,开发人员在框架的基础上,根据业务需求开发功能。即:别人搭台,你唱戏。


1.2 框架解决了什么问题

框架主要是解决了技术整合问题,实现了项目和具体技术的解耦,提升项目的可维护性


一个应用系统,必定要选用大量的技术来完成业务需求,实现功能。这就导致应用系统依赖于具体的技术,一旦技术发生了变化或者出现问题,会对应用系统造成直接的冲击,这是应该避免的。


框架的出现,解决了这个问题:框架是技术的整合。如果使用了框架,在框架基础上进行开发,那么开发人员就可以直接调用框架的API来实现功能,而不需要关注框架的底层具体使用了哪些技术。这就相当于框架“屏蔽”了具体的技术,实现了应用系统功能和技术的解耦。


框架一般处于低层应用平台(如JavaEE)和高层业务逻辑之间

1.3 有哪些常见的框架

       每个框架都是要解决一些具体的问题的,我们可以从JavaEE的三层架构,来说一下常见的框架有哪些。

Mybatis:

框架职责:作用在dao层,负责数据库访问的框架。

框架介绍:

它原本是Apache的一个开源项目ibatis,后来迁移到了Google code,并改名为Mybatis;之后又迁移到了github上。

它是一个优秀的Java轻量级dao层框架,对JDBC进行了封装,使开发人员只需要关注SQL语句,而不需要关注JDBC的API执行细节。

Hibernate:

框架职责:作用在dao层,负责数据库访问的框架。

框架介绍:

Hibernate是一个完全面向对象的Dao层框架,封装程度非常高,开发人员可以完全以面向对象的方式操作数据库,甚至不需要编写SQL语句。

但是,正因为Hibernate的封装程度过高,导致它的执行效率受到了影响,是重量级框架。目前在国内使用的越来越少了。

SpringMVC:

框架职责:作用在web层,负责和客户端交互的框架。

框架介绍:

SpringMVC是Spring Framework的后续产品,受益于Spring框架的流行,并且因为SpringMVC使用简单、和Spring整合简单,导致SpringMVC框架在国内使用的也越来越多。

Struts1/Struts2:

框架职责:作用在web层,负责和客户端交互的框架。

框架介绍:

Struts1是比较老的框架,目前已经基本不使用了。

Struts2目前使用的也越来越少,逐步被SpringMVC代替

Spring:

框架职责:不是作用在某一层,而是实现web层、Service层、Dao层之间解耦的框架,是三层之间的粘合剂

框架介绍:Spring框架是为了解决应用开发的复杂性而创建的,任何Java应用都可以从Spring中受益。Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。

2. Mybatis简介

2.1 JDBC的问题

JDBC是操作数据库的最基本的规范,它的功能简单单一,在使用时需要开发人员处理很多问题:

硬编码问题

大量的重复代码

性能问题

JavaBean和表数据的映射转换问题

2.2 ORM思想【面试】

ORM:Object Relation Mapping,对象关系映射思想。指把Java对象和数据库的表的字段进行关联映射,从而达到操作Java对象,就相当于操作了数据库。查询了数据库,自动封装成JavaBean对象

关系—>对象: 查询表数据,ORM框架自动帮我们把结果封装成JavaBean对象

对象—>关系: 插入数据、修改数据等等,ORM框架自动帮我们把JavaBean对象转换成对应的SQL语句

常见的ORM框架:

Hibernate:是完全ORM框架,实现了双向映射。简单功能更简单,复杂功能更复杂

关系—>对象:查询不用写SQL,也不用自己封装JavaBean

对象—>关系:DML也不用写DQL

Mybatis:是半ORM框架,只实现了单向映射

关系—>对象:查询不用自己封装JavaBean

对象—>关系:没有实现,还需要我们自己编写SQL语句

2.3 Mybatis介绍

Mybatis是一个优秀的Java轻量级持久层框架。apache的ibatis,后来托管到google code,后来又迁移到github上。 Mybatis官网:http://www.mybatis.org/mybatis-3/zh/index.html


它内部封装了JDBC,使开发人员只需要关心SQL语句,而不需要处理繁琐的JDBC步骤

它采用了ORM思想(半ORM),解决了实体和数据库映射的问题。只要提供好sql语句,配置了映射,Mybatis会自动根据参数值动态生成SQL,执行SQL并把结果封装返回给我们。

它支持XML和注解两种方式配置映射。

小结

ORM:对象-关系映射思想。表示一个JavaBean对象,要对应表里的一行数据。

关系->对象的映射:从表里查询数据,由框架帮我们自动封装成JavaBean对象

对象->关系的映射:把JavaBean里的数据存储到表里时,由框架帮我们自动把JavaBean的属性值,设置到表里对应的字段上

Hibernate是一个全ORM框架,实现了双向的自动映射。如果使用Hibernate,简单功能不需要写SQL。复杂功能需要再学习一套HQL语言

Mybatis是一个半ORM框架,只实现了"关系->对象"的自动映射。如果使用Mybatis框架,需要自己编写SQL