第一章 框架概述
1.1 软件开发常用结构
三层架构包含的三层:
界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)
三层的职责
1、界面层(表示层,视图层):主要功能是接受用户的数据,显示请求的处理结果。使用web页面和用户交互,手机app也是表示层,用户在app中操作,业务逻辑在服务器端处理。
2、业务逻辑层:接受表示传递过来的数据,检查数据,计算业务逻辑,调用数据访问层获取数据。
3、数据访问层(也叫持久层):与数据打交道。主要实现对书籍的增、删、改、查。将数据在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库中。
三层对应的包:
界面层:controller包(servlet)
业务逻辑层:service包(xxxxservice类)
数据访问层:dao包(xxxDao类)
三层对应的处理框架:
界面层:----servlet----->SpringMVC(框架)
业务逻辑层:service类---->spring(框架)
数据访问层:---->dao类----->mybatis(框架)
三层的处理请求交互:
用户---->界面层------->业务逻辑层—>数据访问层------>DB数据库
1.2 框架是什么
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。
简单说就是使用别人搭好的舞台,你来做表演,别人也可以来使用,使用舞台现有的道具(框架的功能)来达到不同的效果,舞台是可以重复使用的。而且,框架一般是成熟的,不断升级的软件。
1.3 JDBC编程
1.3.1 JDBC程序的回顾
publicstaticvoidmain(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try{
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//通过驱动管理类获取数据库链接
connection = DriverManager
.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root", "root");
//定义sql语句?表示占位符
String sql = "select *from user where username =?";
//获取预处理statement
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "王五");
//向数据库发出sql执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
//遍历查询结果集
while(resultSet.next()){
System.out.println(resultSet.getString("id")+"
"+resultSet.getString("username"));
}
}catch(Exception e){
e.printStackTrace();
}
//释放资源 代码省略
......
//上边使用jdbc的原始方法(未经封装)实现了查询数据库表记录的操作。
}
1.3.2 JDBC的问题分析
1、数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,
如果使用数据库链接池可解决此问题。
2、Sql语句在代码中硬编码,造成代码不易维护,
实际应用sql变化的可能较大,sql变动需要改变java代码。
3、使用preparedStatement向占有位符号传参数存在硬编码,
因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。
4、对结果集解析存在硬编码(查询列名),
sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。
1.4 MyBatis框架概述
Mybatis本是apche的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了goole code,并改名为Mybatis。2013年11月迁移到Github。
iBATIS一词源于“internet”和“abatis”的组合,是一个基于java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
当前,最新版本是Mybatis3.5.1,其发布时间是2019年4月8日。
总结: mybatis是一个sql映射框架,提供数据库的操作能力,增强的JDBC,使用Mybatis让开发人员集中精神写sql语句就行了,不必关心Connection、Statement、ResultSet的创建,销毁。