第一个问题Mybatis是什么?

这是我们首先得知道的一个问题,Mybatis是由apache提供的一个针对数据持久层开源框架,对JDBC访问数据库的过程进行了简化封装

第二个问题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执行查询后得到的结果会处理完后,将处理后的结果返回。

倚剑向天笑
1 声望0 粉丝