1.1 框架介绍
-
框架是一款半成品软件,可以基于这个半成品软件继续开发,来完成我们个性化的需求!
-
如图:
1.2 框架要解决的问题
-
框架要解决最重要的是技术整合的问题
-
不同的软件企业需要从 J2EE 中选择不同的技术,使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技术的风险性将会直接对应用造成冲击
-
应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设计和具体的实现技术解耦
-
这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应用的底层支撑,它不应该直接对应用产生影响
框架一般处在低层应用平台(如 J2EE)和高层业务逻辑之间的中间层
1.3 软件开发的分层重要性
框架的重要性在于它实现了部分功能,并且能将低层应用平台和高层业务逻辑进行缓和。
为了实现软件工程中的“高内聚、低耦合”,把问题划分开来各个解决,易于控制,易于延展,易于分配资源
常见的 MVC 软件设计思想就是很好的分层思想
1.3.1 分层开发下的常见框架
1、解决数据的持久化问题的框架
https://mybatis.net.cn/ 中文网站
作为持久层的框架,还有一个封装程度更高的框架就是 Hibernate,
但这个框架因为各种原因目前在国内的流行程度下降太多, 现在公司开发也越来越少使用。
目前使用 Spring Data 来实现数据持久化也是一种趋势。
2、解决 WEB 层问题的 MVC 框架
通过策略接口,Spring 框架是高度可配置的,并包含多种视图技术,
例如 JSP 技术、POI。
Spring MVC 框架并不知道使用的视图,所以不会强迫开发者只使用 JSP 技术,它分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
它是一个典型的教科书式的mvc构架,并且是一个纯正的servlet系统。而且框架本身有代码,看起来容易理解。
3、解决技术整合问题的框架
Spring是Java EE编程领域的一个轻量级开源框架,它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理
Spring是控制反转(IOC)和面向切面(AOP)的容器框架
-
目的:解决企业应用开发的复杂性
-
功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
-
范围: 任何java应用
1.4 ORM介绍
-
ORM(Object Relational Mapping): 对象关系映射
-
指的是持久化数据和实体对象的映射模式,为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。
-
如图: dao -->实体类–>数据库
具体映射关系:
- 数据库的表(table) --> 类(class)
- 记录(record,行数据) --> 对象(object)
- 字段(field) --> 对象的属性(attribute)
1.5 原始jdbc操作(查询数据)
1.6 原始jdbc操作(插入数据)
1.7 原始jdbc操作的分析
-
原始 JDBC 的操作问题分析
-
频繁创建和销毁数据库的连接会造成系统资源浪费从而影响系统性能
-
sql 语句在代码中硬编码,如果要修改 sql 语句,就需要修改 java 代码,造成代码不易维护
-
查询操作时,需要手动将结果集中的数据封装到实体对象中
-
增删改查操作需要参数时,需要手动将实体对象的数据设置到 sql 语句的占位符
-
-
原始 JDBC 的操作问题解决方案
-
使用数据库连接池初始化连接资源
-
将 sql 语句抽取到配置文件中
-
使用反射、内省等底层技术,将实体与表进行属性与字段的自动映射
-
1.8 什么是Mybatis
mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,不用与jdbc api 打交道,就可以完成对数据库的持久化操作。
mybatis通过xml或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement 中 sql 的动态参数进行映射生成最终执行的sql语句
最后mybatis框架执行sql并将结果映射为java对象并返回
MyBatis官网地址:http://www.mybatis.org/mybatis-3/
https://mybatis.org/mybatis-3/zh/index.html
2 Mybatis的快速入门
MyBatis案例简化步骤
1、导入pom包
2、创建mapper映射文件
3、创建config文件
准备工作:
创建数据库: 数据库名称: mybatisdb 创建数据表:
CREATE TABLE `user` (
`id` int(30) PRIMARY KEY AUTO_INCREMENT NOT NULL,
`username` varchar(255) DEFAULT NULL,
`sex` varchar(10) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
`birthday` date DEFAULT NULL
)
导入pom包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16