zoukankan      html  css  js  c++  java
  • 第一篇 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编写,工作量大

  • 相关阅读:
    Mybatis一级缓存和二级缓存总结
    UML模型的基本概念
    Proxy patten 代理模式
    UML 基础:类图
    Java与UML交互图
    Composite Pattern (组合模式)
    用例建模指南
    Prototype Pattern(原型模式)
    Adapter Pattern(适配器模式)
    UML 类与类之间的关系
  • 原文地址:https://www.cnblogs.com/zhexuejun/p/11190301.html
Copyright © 2011-2022 走看看