第一篇 mybatis的简介

       mybatis的目前最流行的ORM框架,几乎涵盖所有的互联网的领域,那么mybatis为什么会这么流行,相较JDBC和其他ORM框架又有什么样的特点和优势?我们会在接下来的学习中逐渐揭开?

一、 JDBC回顾

     我们先来回顾传统的JDBC开发,作为java提供给数据库厂商的接口规范,根据数据库的不同,有不同的实现方法,那么,JDBC的开发需要哪些步骤:

    (1) 加载驱动
    (2) 配置数据库连接参数
    (3) 获取数据库连接connection
    (4) 获取SQL执行通道statement
    (5) 执行SQL,返回结果集resultSet
    (6) 关闭数据库所有的连接通道
下面是操作代码:

package com.fan.jdbcdemo;

import java.sql.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class JdbcDemo {
     public static void main(String[] args) {
         try{
             Class.forName("com.mysql.jdbc.Driver");
             Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","www1928..com");
             Statement st = connection.createStatement();
             ResultSet rs = st.executeQuery("SELECT * FROM USER WHERE NAME = 'zhangqian'");
             Map<String, Object> resultMap = new HashMap<String, Object>(8);
             /*封装结果集*/
             while(rs.next()) {
                 resultMap.put("name", rs.getString(1));
                 resultMap.put("age", rs.getString(2));
             }
             Set<Map.Entry<String, Object>> set = resultMap.entrySet();
             Iterator<Map.Entry<String, Object>> iterator = set.iterator();
             while(iterator.hasNext()) {
                 Map.Entry<String, Object> entry = iterator.next();
                 System.out.println(entry.getKey() + ":" + entry.getValue());
             }
         } catch(Exception e) {
             e.printStackTrace();
         }finally {
//关闭连接通道,就不写了
} } }

       上面的数据库操作中,我们不仅需要通过大量代码去查询结果集,还得将结果手动封装,才能被其他代码调用,所以在实际的项目开发中,这显然会产生大量的无意义的重复性代码,所以需要将重复的代码进行抽取,

可以看出变化的都只是数据和结果集的映射,诸如数据库连接等是一直不变,所以为了解决这种问题就出现了ORM(Object  Reliational Mapper)框架,最早的ORM要追随EJB框架,但是EJB过于复杂,

很快就被淘汰,随之出现了Hibernate框架, Hibernate的出现解决了持久层代码重复的问题,但是随着互联网的发展,数据量越来越大,业务越来越复杂,数据库表变复杂,由于,高度的对sql的封装,

导致在性能上无法进行优化,甚至在一些查询,直接导致全表扫描等问题,这在今天网站访问中是不被允许的,为了解决的Hibernate的问题,半自动框架mybatis随之而生。

二、认识Mybatis

       那么,Mybatis的相较于JDBC做了哪些优化了,首先提一下Mybatis的开发步骤:

      (1)配置config.xml文件(主要配置数据库连接,驱动,缓存等)

      (2)配置映射文件mapper.xml(主要配置SQL和接口的映射)

        (3)  获取session执行数据库操作,返回结果集

      (4)关闭session对象

      可以看出,Mybatis框架,封装了数据路连接和结果集封装的代码,使用者只需要关心session对象和sql语句,在与Spring集成之后,几乎所有的功能代码交给框架,而开发人员只需要关心业务逻辑

代码。

三、JDBC、Mybatis、Hibernate的优缺点

(1)JDBC

        优点:原生javaAPI,执行效率高

        缺点:重复性代码过多

                  需要管理数据库连接

                 使用完成后需要关闭所有对象资源

(2)Hibernate

        优点:

                消除了代码的映射的规则
               无需管理数据库连接

               提供缓存支持
               持久化操作只需要操作session对象即可
               关闭资源只需要关闭session对象

        缺点:

              由于是对象和字段映射,对于更新操作需要发送所有字段,占用资源
              无法根据不同的条件组装不同SQL
              对于复杂的SQL查询,需要自己完成SQL,并封装结果集
             不能有效支持存储过程
             无法优化SQL,性能差

(3)Mybatis

      优点:

          可以动态生成映射关系
         消除了大多数JDBC代码
         提供缓存支持
         支持多数日志接口
         可以灵活的优化SQL
         维护简单,上手难度低

      缺点:

        需要自己动手完成SQL编写,工作量大

原文地址:https://www.cnblogs.com/zhexuejun/p/11190301.html