MyBatis学习总结

使用MyBatis的必要性:

  • 与传统的JDBC代码相比,可以省掉百分之95的代码量
  • MyBatis真正强大之处在于它的映射语句,XML(或者注解)的方式易于编写和应用

持久层的概念:

  • 持久化:只是把数据存储在可掉电的存储介质上
  • 持久层:可以把数据存储在磁盘上,具备长期存储的能力

JDBC实现

MyBatis学习总结

使用JDBC存在的问题

  • 数据库链接创建,释放频繁造成系统资源浪费从而影响系统性能
  • sql语句在代码中采用硬编码,造成代码不容易维护,实际应用sql变化很大,sql变动需要修改java代码
  • 使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,条统不易维护
  • 对结果集解析存在硬编码(查询到名),sql变化导致解析代码变化,条统不易维护

解决方法

  • 采用ORM框架,应用程序不会直接访问底层数据库,而是以面向对象的方式来操作持久化对象

流行的ORM框架

  • JPA
  • Hibernate
  • MyBatis

Mybatis核心组件

  • SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分步构建的建造者模式。
  • SqlSessionFactory(工厂接口):依靠宅来生成SqlSession,使用的是工厂模式。
  • SqlSession(会话):一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。在现有的技术中,一般我们会让其在业务逻辑代码中“消失”,而使用的是My Batis 提供的SQLMapper 接口编程技术,它能提高代码的可读性和可维护性o
  • SQL Mapper(映射器):MyBatis 新设计存在的组件,它由一个Java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。

任用

MyBatis学习总结

MyBatis配置文件结构

MyBatis学习总结

属性

properties:

MyBatis学习总结

setting:

MyBatis学习总结

typeAliases:

MyBatis学习总结

environment:

MyBatis学习总结
MyBatis学习总结
MyBatis学习总结
MyBatis学习总结

mapper

MyBatis学习总结

SQL映射文件常用元素:

  • select:查询语句
  • insert:插入语句
  • update:更新语句
  • delete:删除语句
  • sql:可被其他语句引用的重用语句块
  • cache 和 cache-ref: 命名空间的缓存配置引用
  • resultMap:用来描述如何从数据库结果集中加载对象

元素 sql 和 resultMap 的使用:(有时候 resultMap 不行可以试试 resultType )

MyBatis学习总结
MyBatis学习总结

级联(三种)

  • 一对一级联:比如身份证,每个人都是独一无二的一一对应的
  • 一对多级联:比如手机对应手机号码,一部手机里面可以有很多个手机号码
  • 多对多级联:(脑补吧)
    MyBatis学习总结
  • 一对多
    MyBatis学习总结

MyBatis的条件语句:(动态SQL)

  • if
    MyBatis学习总结
  • choose
    MyBatis学习总结
  • trim:prefix属性代表的语句前级,prefixOverrides代表的是需要按需去掉的字符串
    MyBatis学习总结
  • set
    • 在Hibernate中幸帝因为要更新某一对象,而发送所有的字段给持久对象。现实中的场景是,只想更新某一个字段,如果发送所有的属性去更新,对网络带宽消耗较大。性能最佳的办法是把主键和更新字段的值传递给SQL去更新。
    • 在MyBatis中,幸帝可以使用set元素来避免这样的问题。
      MyBatis学习总结
  • foreach:
    • collection配置的是传递进来的参数名称,它可以是一个数组、List、Set等集合。
    • item配置的是循环中当前的元素。
    • index配置的是当前元素在集合的位置下标。
    • open 和close配置的是以什么符号将这些集合元素包装起来。
    • separator是各个元素的问隔符。
      MyBatis学习总结
  • bind:(临时变量的作用)
    • bind元素可以从OGNL表达式中创建一个自定义变量,这样更方便使用。
    • bind元素的属性说明:name:自定义的变量名。value:变量的表达式。
      MyBatis学习总结

MyBatis注解(去掉映射的对应xml文件,直接用注解的方式在Dao层写SQL)

  • @Results( id 方便于在别处使用)
    MyBatis学习总结
    MyBatis学习总结
    MyBatis学习总结