参考链接: Java在竞争性编程中的快速I/O

第1章 框架概述

1.1 什么是框架

1.1.1 什么是框架

框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。

简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

1.1.2 框架要解决的问题

框架要解决的最重要的一个问题是技术整合的问题,在 J2EE 的 框架中,有着各种各样的技术,不同的软件企业需要从 J2EE 中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设计和具体的实现技术解耦。这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应用的底层支撑,它不应该直接对应用产生影响。

框架一般处在低层应用平台(如 J2EE)和高层业务逻辑之间的中间层。

1.1.3 软件开发的分层重要性

框架的重要性在于它实现了部分功能,并且能够很好的将低层应用平台和高层业务逻辑进行了缓和。为了实现软件工程中的“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。我们常见的 MVC 软件设计思想就是很好的分层思想。  通过分层更好的实现了各个部分的职责,在每一层将再细化出不同的框架,分别解决各层关注的问题。

1.1.4 分层开发下的常见框架

常见的 JavaEE 开发框架: 1、解决数据的持久化问题的框架

1.1.5 MyBatis 框架概述

mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身, 而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。

mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。

采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。

为了我们能够更好掌握框架运行的内部过程,并且有更好的体验,下面我们将从自定义 Mybatis 框架开始来学习框架。此时我们将会体验框架从无到有的过程体验,也能够很好的综合前面阶段所学的基础。

1.2 JDBC 编程的分析

1.2.1 jdbc 程序的回顾

public static void main(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", "ro ot", "root");

//定义 sql 语句 ?表示占位符

//获取预处理 statement

preparedStatement = connection.prepareStatement(sql);

//设置参数,第一个参数为 sql 语句中参数的序号(从 1 开始),第二个参数为设置的

preparedStatement.setString(1, "王五");

//向数据库发出 sql 执行查询,查询出结果集

resultSet = preparedStatement.executeQuery();

//遍历查询结果集

while (resultSet.next()) {

System.out.println(resultSet.getString("id") + "

"+resultSet.getString("username"));

}

} catch (Exception e) {

e.printStackTrace();

} finally {

//释放资源

if (resultSet != null) {

try {

resultSet.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (preparedStatement != null) {

try {

preparedStatement.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (connection != null) {

try {

connection.close();

} catch (SQLException e) {

// TODO Auto-generated catch block e.printStackTrace();

}

}

}

}

上边使用 jdbc 的原始方法(未经封装)实现了查询数据库表记录的操作。

1.2.2 jdbc 问题分析

1、数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。 2、Sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java代码。 3、使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。 4、对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成 pojo 对象解析比较方便。

[转载] 快速学习-Mybatis框架概述相关推荐

  1. java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】

    第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定 ...

  2. (*)(转)要快速学习SSM框架,你需要一套学习曲线平滑的教程

    作者:meepo 链接:https://www.zhihu.com/question/57719761/answer/156952139 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  3. 新手搭ssm要多久_如何快速学习ssm 框架?

    要快速学习SSM框架,你需要一套学习曲线平滑的教程 1. 很快可以看到效果 SSM框架这种教程的,在百度或者git上一搜一大把,不过很遗憾,大部分你照着上面的流程做,是做不出来的,要么缺少包,要么配置 ...

  4. 快速学习MyBatis|实战项目详解

    作者主页:橙子! 主页 系列专栏:JavaWeb基础教程系列 精彩回顾:HTTP协议详解 文章目的:快速学习MyBatis及实战项目详解 文章目录 1.什么是MyBatis? 2. JDBC存在的缺点 ...

  5. MyBatis 框架概述

    1.什么是框架?     它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题.     使用框架的好处:         框架封装了很多的细节,使开发者可以使用极简的方式实现功能.大大提高 ...

  6. vue中集合取第一个_快速学习Vue框架(知识点集合)

    学习Vue的小伙伴速度看过来,快速学习Vue框架知识点集合贴来啦.建议收藏,尤其基础并不是很扎实的同学,本篇集合贴就是你日后工作的参考手册. 基础知识: ·vue的生命周期:beforeCreate/ ...

  7. 深入学习Mybatis框架(二)- 进阶

    1.动态SQL 1.1 什么是动态SQL? 动态SQL就是通过传入的参数不一样,可以组成不同结构的SQL语句. 这种可以根据参数的条件而改变SQL结构的SQL语句,我们称为动态SQL语句.使用动态SQ ...

  8. MyBatis框架概述

    MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设 ...

  9. java元婴期(22)----java进阶(mybatis(1)---mybatis框架概述入门程序)

    1.对原生态jdbc程序中问题总结(为啥要用mybatis) 1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能. 设想:使用数据库连接 ...

最新文章

  1. CB Insights发布最新AI 100排名,包含100家最有前景的AI初创公司
  2. sklearn中分类器的比较
  3. Vivado如何计算关键路径的建立时间裕量?(实践篇)
  4. tensorflow运行环境linux,在ubuntu或者min运行环境下安装gpu版本的tensorflow
  5. 微软发布紧急更新:修复Flash高危漏洞
  6. window点location(仅介绍window点location对象,不介绍属性,因标题不能含有非法字符,.用点来代替)
  7. js实现算法--割字符串
  8. oracle execute immediate执行多条语句_用数据库的方式思考SQL是如何执行的
  9. gensim提取一个句子的关键词_聊一聊 NLPer 如何做关键词抽取
  10. mySQL字符串字段区别_MySQL类型之(字符串列类型区分、数据类型区分)
  11. 夺命雷公狗ThinkPHP项目之----企业网站13之文章列表页的实现(主要是分页的实现)...
  12. golang 线程 Java线程_Java线程只能有上千个,而Go的Goroutine能有上百万个
  13. python全栈开发_day20_加密模块和excel操作模块以及xml
  14. Silverlight4 如何实现DataContextChanged事件
  15. 智能工厂信息化系统建设规划
  16. UC3842好坏的判断方法
  17. c语言写莫迪康通信,组态王modbus通信用法教程modbus-rtu、modbus-tcp莫迪康通信配置步骤...
  18. 利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标)
  19. U盘启动盘 U盘安装Win10系统图文教程
  20. 菱形杨辉三角形c语言,C++输出上三角/下三角/菱形/杨辉三角形(实现代码)

热门文章

  1. (三)linux之根文件系统的制作
  2. oracle 字段除以1000,ORACLE常用}1000(之一)_oracle
  3. php访问网页post获取源码,第一次抓别人网站数据,用postman直接请求可以获取到返回数据,通过代码的方式就一直报错,php...
  4. 下载国外网站资料需java_Java开发必知道的国外10大网站
  5. 计算机组装维护文献,组装计算机论文,关于《计算机组装维护》课程教学相关参考文献资料-免费论文范文...
  6. excel表格从某个标志计算机,让Excel也玩多标签 多个图表一个窗口 -电脑资料
  7. mysql给字段添加描述_用sql 语句给字段添加描述
  8. mqtt php 16进制数据,phpMQTT 内存耗死问题
  9. oftc注册服务器占用,golang服务器程序运行过程中崩溃,报错:fatal error: runtime: out of memory...
  10. kali 切换root权限_Ubuntu 被曝严重漏洞:切换系统语言 + 输入几行命令,就能获取 root 权限...