文章目录:
1.框架的概述
三层架构:MVC,在web开发中,使用MVC架构模式。其中 M:数据,V:视图,C:控制器。
M数据:来自数据库MySQL、文件、网络等等。
V视图:现在主要使用 jsp、html、css、js。来显示请求的处理结果,把M中的数据显示出来。
C控制器:接收请求,调用 service 对象,显示请求的处理结果。当前主要使用servlet作为控制器。
MVC的作用:①实现解耦合。②让MVC各负其职。③使得系统扩展更好,更容易维护。
框架其实就是一个软件,完成了部分的功能。软件中的类和类之间的方法调用都已经规定好了,通过这些可以完成某些特定的功能。框架就可以看作是模板!!!
框架是可以升级、改造的,同时,框架也是安全的。
框架要解决的最重要的一个问题是技术整合,在 J2EE 的框架中,有着各种各样的技术,不同的应用,系统使用不同的技术解决问题。需要从 J2EE 中选择不同的技术,而技术自身的复杂性,有导致更大的风险。企业在开发软件项目时,主要目的是解决业务问题。即要求企业负责技术本身,又要求解决业务问题。这是大多数企业不能完成的。框架把相关的技术融合在一起,企业开发可以集中在业务领域方面。另一个方面可以提供开发的效率。
2.三层架构
接收用户的请求,调用service,显示请求的处理结果。包含了 jsp、html、css、js、servlet等对象。对应的是 controller包。
2.2 业务逻辑层
处理业务逻辑,使用算法处理数据,把数据返回给界面层。对应的是 service 包,以及包中的很多 XXXService 类。例如:StudentService、OrderService、ShopService等等。
2.3 持久层(数据库访问层)
访问数据库、或读取文件、访问网络来获取数据,对应的是 dao 包,以及包中的很多 XXXDao 类,例如:StudentDao、OrderDao、ShopDao等等。
2.4三层架构请求的处理流程
用户发起请求 ---> 界面层 ---> 业务逻辑层 ---> 数据访问层 ---> 数据库(MySQL)
1.结构清晰、耦合度低, 各层分工明确。
2. 可维护性高,可扩展性高。
3. 有利于标准化。
4. 开发人员可以只关注整个结构中的其中某一层的功能实现。
5. 有利于各层逻辑的复用。
2.6 三层架构模式中的框架
在三层架构模式中,每一层都对应着一个框架。
①界面层:SpringMVC框架。②业务逻辑层:Spring框架。③数据库访问层:MyBatis框架。
3.回顾JDBC编程——引出MyBatis框架
public void findStudent() { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { //注册 mysql 驱动 Class.forName("com.mysql.jdbc.Driver"); //连接数据的基本信息 url ,username,password String url = "jdbc:mysql://localhost:3306/springdb"; String username = "root"; String password = "123456"; //创建连接对象 conn = DriverManager.getConnection(url, username, password); //保存查询结果 List<Student> stuList = new ArrayList<>(); //创建 Statement, 用来执行 sql 语句 stmt = conn.createStatement(); //执行查询,创建记录集, rs = stmt.executeQuery("select * from student"); while (rs.next()) { Student stu = new Student(); stu.setId(rs.getInt("id")); stu.setName(rs.getString("name")); stu.setAge(rs.getInt("age")); //从数据库取出数据转为 Student 对象,封装到 List 集合 stuList.add(stu); } }catch(Exception e) { e.printStackTrace(); }finally { try { //关闭资源 if(rs != null) { rs.close(); } if(stmt != null) { stmt.close(); } if(conn != null) { conn.close(); } }catch(Exception e) { e.printStackTrace(); } } }
优点:直观,好理解。
缺点:①注册驱动,代码比较多,开发效率低。
②需要关注 Connection ,Statement, ResultSet 对象创建和销毁。
③对 ResultSet 查询的结果,需要自己封装为 List。
④ sql语句和业务逻辑代码混在一起。
4.MyBatis框架
官网:https://mybatis.org/mybatis-3/zh/index.html
MyBatis本是 apache 的一个开源项目 iBatis, 2010 年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github。
MyBatis是一个优秀的基于 Java 的持久层框架,内部封装了 JDBC(可以看作是高级的JDBC),开发者只需要关注 sql 语句本身,而不需要处理加载驱动、创建连接、创建 statement、关闭连接服务。
它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
1)注册驱动。
2)创建JDBC中使用的 Connection、Statement、ResultSet这些对象,执行sql语句,得到ResultSet。
3)处理ResultSet,把结果集中的数据转为Java对象,同时还能把Java对象放入到List集合中。
4)关闭资源。
5)实现sql语句和Java代码的解耦合。