• 为什么MyBatis是Java数据库持久层的明智选择


    在Java应用程序的开发中,选择合适的数据库持久层框架至关重要。一个明智的选择可以帮助开发人员更好地管理数据库交互、提高性能和简化开发工作。

    (一)为什么要选MyBatis

    JDBCHibernate / JPAMyBatis
    简单直接ORM轻量+动态SQL+关联查询
    开发效率低屏蔽底层数据库差异国内生态
    重复冗余关联查询、动态SQL不友好不能屏蔽数据库差异

    在以前是直接用JDBC进行数据库查询,优点是简单直接,缺点是开发效率低。用JDBC写程序,需要大量手工写代码,

    代码重复率较高,后来逐渐演化出ORM框架。

    ORM框架最早期有Hibernate以及JPA规范,Hibernate能够屏蔽底层数据库差异,自动根据SQL语言生成对应底层不

    同数据库的方言,缺点是对关联查询支持与动态SQL能力不太友好,很难写出高效SQL。

    国内目前流行的是轻量级MyBatis,对动态SQL以及关联查询的支持性较高,缺点是因为它绑定一个DB,手写SQL还要

    动态拼接,很难从一个DB自由的切换到另外一个DB,但由于平时很少切换DB,因此问题不是很大。

    (二)MyBatis基本概念介绍

    在这里插入图片描述

    MyBatis主要分为三层:接口层,核心层与基础层。

    1.接口层

    是通过提供的API作为数据库进行增/删/改/查,都是MyBatis的API。

    2.核心层

    是SQL预处理、SQL执行、结果映射。

    1)SQL预处理:是对代码里的变量进行绑定,以及动态SQL生成;

    2)SQL执行:是把生成好的SQL,通过JDBC驱动,传到对应的DB里执行,而且要负责网络通信的部分;

    3)结果映射:是把数据库返回的结果从关系型数据转换成Java对象数据。

    3.基础层

    包括日志、事务管理、缓存、连接池、动态代理、配置解析。

    1)日志:是做框架里面的日志输出以及SQL语句输出;

    2)事务管理:是对 JDBC事物、数据库事物做管理;

    3)缓存:能够把结果集缓存在JVM的内存内部。优点是比较快,缺点是会占用堆内存。有条件的情况下,建议用户多

    使用分布式缓存;

    4)连接池:能够加速查询,提高性能;

    5)动态代理:在用MyBatis编程时,核心是通过接口执行数据库查询。而Mapper接口本身是没有实现的,通过注解

    或者XML配置SQL语句,动态代理会在运行时生成代理,当调用Mapper接口时,转换成实际的SQL语句;

    或者XML配置SQL语句,动态代理会在运行时生成代理,当调用Mapper接口时,转换成实际的SQL语句;

    6)配置解析:因为MyBatis里面有存在大量配置,需要配置新模块,读取XML配置,并把它映射为配置属性。

    参考:https://developer.aliyun.com/ebook/450?spm=a2c6h.20345107.ebook-index.28.6eb21f54J7SUYc

  • 相关阅读:
    LIO-SAM论文与代码总结
    Spring概述以及IoC和DI的使用
    excel表导出
    MLX90640 红外热成像仪测温传感器模块开发笔记(九)
    EndNote使用技巧之引用文献信息的导入与修改
    Salesforce-Visualforce-6.静态资源(Static Resources)
    在单链表中删除所有值为x的结点
    用DBCC checkcatalog(数据库)检测出结构异常
    NoSQL
    flink cdc原理与使用
  • 原文地址:https://blog.csdn.net/LSW1737554365/article/details/133789435