关于java:从JDBC到Mybatis

39次阅读

共计 2218 个字符,预计需要花费 6 分钟才能阅读完成。

第一个问题 Mybatis 是什么?

这是咱们首先得晓得的一个问题,Mybatis 是由 apache 提供的一个针对数据长久层开源框架 ,对 J DBC 拜访数据库的过程 进行了 简化 封装

第二个问题 JDBC 是什么?

JDBC(java DataBase Connectivity) java 数据库连贯,这是一门技术,一门利用 java 程序连贯并拜访数据库 的技术。当然咱们也能够应用 cmd 或者 Navicat 连贯数据库,操作数据表等操作。然而在开发中,这样应用未免太不不便了,所以通过 java 程序连贯数据库,就必须要应用 JDBC 这门技术。

JDBC 是如何实现连贯数据库的呢?

1.首先注册数据库驱动

Class.forName("com.mysql.jdbc.Driver");

2.获取数据库连贯 (url 指向数据库所在位置,userpassword 数据库账户名 以及 明码,传入 getConnection()里时,userpassword 均为 字符串模式传入)。

utf-8“ 为编码名,Asia/Shanghai为时区对应地址。

Connection conn=null; 
String url="http:mysql:/// 数据库名?characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
conn=DriverManager.getConnection(url,user,password); // 获取连贯对象

3.获取传输器对象(Statement), 通过数据库连贯对象获取

Statement stat=conn.CreateStatement();

4.发送 sql 语句到服务器执行,并返回后果

String sql="select user,password from user"
Result rs=stat.executeQuery(sql);// 执行查问则须要一个后果集来承受查问后果
while(rs.next()){// 遍历后果集
  ......
}

// 若是执行增加,删除,批改操作, 当然这不须要后果集来承受,返回的仅为一个 int 类型值

int rows=stat.executeUpdate();

5.解决执行后果

6.敞开资源(资源敞开须要遵循程序敞开)

// 若有后果集
rs.close();
stat.close();
conn.close();
// 若无后果集
stat.close();
conn.close();

以上就是 JDBC 的大抵操作

由 JDBC 固定模板代码而发现的问题

  1. 执行一次操作(增删改查),就须要反复以上的操作,这就呈现了一个代码反复过多的问题,也就是代码冗余。
  2. 连贯对象创立过于多,这不利于我的项目的保护,举个例子,若有一个我的项目有 100 个操作都跟增删改查无关,就须要创立 100 次,如果真要这样做,也未免太恶心了,而且这会拖慢我的项目运行速度,占用过多的内存,配置过低的电脑还可能真运行不了该我的项目。

由此咱们引入了连接池。

连接池

什么是连接池?(是什么?有什么用?)

池:常量池 线程池 连接池 等中的池都是一个容器。是指 内存中的一片空间
连接池: 就是将一批连贯资源存入到一个容器中 。目标是为了 实现连贯的复用 ,缩小 连贯创立和敞开的次数 ,以此来 进步程序执行的效率

为什么要应用连接池?

传统形式中,每次须要连贯都是间接创立一个连贯(对象 / 资源),再基于这个创立的连贯去拜访数据库,最初用完连贯还要敞开!

而每次【创立连贯 】和【 敞开连贯 】相比应用连贯是要耗费大量的工夫和资源,导致 程序的执行效率十分低下
为了进步程序执行的效率,咱们能够在程序一启动时,就创立一批连贯放在一个连接池中,供整个程序共享。

用户须要连贯 时,不必再去创立连贯,而是间接从连接池中获取一个连贯进行应用,在用完连贯后,也不须要敞开,而是间接将连贯还回到连接池中。这样一来,用来用去都是连接池中的这一批连贯,必然能够实现连贯的复用,缩小连贯创立和敞开的次数。进步程序执行的效率!
连贯复用的代码体现在 close()上, 不应用的连接池的 close() 办法时 间接销毁连贯对象 ,而应用了连接池的close() 办法是将 连贯对象放回连接池


为何会应用 Mybatis 而不是原生 JDBC?

开发软件我的项目这种有工期的工作,天然是越省工夫越好,工夫就是金钱,当然开发效率也是如此。为此就呈现了一些一系列的开源框架,例如 Mybatis。

与 JDBC 相比,Mybatis 有什么劣势值得咱们去学习?

应用 mybatis 能够只关注 SQL 语句自身,而不须要关注注册驱动,获取连贯,获取传输器,开释资源等过程(底层当然也实现了这些操作,有趣味能够翻翻源码瞅瞅,多多学习嘛,不寒碜)。

mybatis 能够将要执行的 SQL 语句应用 xml 文件的形式或者注解形式配置起来,在执行时,将 Java 对象中携带的参数值和 SQL 骨架进行映射,生成最终要执行的 SQL,将执行的后果解决后再返回。

mybatis 的一些劣势

  1. JDBC 连贯拜访数据库有大量反复的代码,而 mybatis 能够极大的简化 JDBC 代码:注册驱动、获取连贯、获取传输器、开释资源。
  2. JDBC 没有自带连接池,而 mybatis 自带的有连接池。
  3. JDBC 中是将 SQL 语句、连贯参数写死在程序中,而 mybatis 是将 SQL 语句以及连贯参数都写在配置文件中。
  4. JDBC 执行查问后失去的 ResultSet 咱们须要手动解决,而 mybatis 执行查问后失去的后果会解决完后,将解决后的后果返回。

正文完
 0