深入浅出MyBatis技术原理与实战

深入浅出MyBatis技术原理与实战


衍变

  • MyBatis 前身是 Apache 的开源项目 ibatis
    • ibatis 源于 internet 和 abatis 的组合
    • ibatis 是一个基于java的持久层框架
  • 2010年由 apache software foundation 迁移到了 google code ,更名为 MyBatis
  • 2013年11月迁移到 Github ,目前由 Github 维护

JDBC

  • JDBC : Java Data Base Connectivity
    • JDBC定义了一系列的接口规范,具体的实现是由各数据库厂商去实现,是一种典型的桥接模式
    • JDBC使用示例
    • 缺点
      • JDBC的工作量大:需要先注册驱动和数据库信息、操作Connection、通过statement对象执行SQL,将结果返回给resultSet,然后从resultSet中读取数据并转换为pojo对象,最后需要关闭数据库相关资源
      • 需要手动生成映射对象并逐个属性进行赋值
      • SQL写在代码中不便于维护,传值传参是固定的,复用率不高
      • JDBC手动释放资源,如:数据库连接池,不便于管理与维护

ORM

  • 背景:解决JDBC的种种缺点
  • 定义:
    • ORM <==> Object Relational Mapping 对象关系映射
    • 含义:数据表与 POJO (Plain Ordinary Java Object 简单Java对象)之间的映射关系
  • 包含:
    • Hibernate
    • MyBatis
  • 相比于JDBC的优势
内容HibernateMyBatis
优势通过配置文件生成映射对象,自动映射,映射关系为全表映射MyBatis使用SqlSessionFactoryBuilder来连接完成JDBC需要代码完成的数据库获取和连接,减少了代码的重复
通过配置文件管理数据库连接MyBatis 无需关注数据库连接,配置最大连接数即可;有数据库连接池,连接可复用,不必每条SQL都建立一次连接
一个会话中可以操作多个对象SessionMyBatis可以将SQL代码写入xml中,易于修改和维护
一个会话相当于发起一次数据库连接,数据连接可以复用MyBatis的mapper会自动将执行后的结果映射到对应的Java对象中
关闭资源只需关闭一个Session,无需关注Conncetion、ResultSet、Statement
  • Hibernate 与 MyBatis
内容HibernateMyBatis
语言HQL(Hibernate Query Language)SQL(Structured Query Language)
优势动态设置映射规则,可以只查询某几个字段,而无需全表查询
支持SQL优化,可以减少数据传递
支持存储过程
支持简易的缓存、日志、级联
劣势全表映射,更新时需传递全部参数;无法做到只查询某一个字段,无法减少数据传递动态设置映射规则,需手动开发,实现自动映射;开发量大于Hibernate
无法根据不同的条件组装不同的SQL半自动映射,需要手动提供 POJO SQL 和映射关系
关联查询和复杂SQL查询支持较差,需要自己将多个结果集合组装POJO
不支持存储过程
HQL,不同于SQL,无法进行优化

MyBatis

  • 官网:mybatis

    • 简介:

    The MyBatis data mapper framework makes it easier to use a relational database with object-oriented applications. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or annotations. Simplicity is the biggest advantage of the MyBatis data mapper over object relational mapping tools.

    • MyBatis并不是一个完整的ORM框架,它主要实现 Relation --> Object1
  • 持久层框架组成部分:

    • SQL Maps
    • Dao (Data Access Objects)
  • 映射文件组成部分:

    • SQL
    • POJO
    • 映射关系
  • MyBatis示例


  1. MyBatis架构设计及源代码分析系列(一):MyBatis架构 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值