MyBatis

ORM框架简介

主流ORM选项 (建议: 小型项目用jpa,大型项目用mybatis

对比项Spring Data JPAMybatis
单表操作方式只需继承,代码量极少,非常方便,而且支持方法名用关键字生成SQL可以使用代码生成工具,也很方便,但相对JPA单表弱很多JPA单表操作简单到令人发指
多表关联查询友好 动态sql使用不够方便,而且sql和代码耦合到一起非常友好,可以有非常直观的动态sql
自定义SQLsql写在注解里面,写动态sql有些费劲sql可以写在
学习成本略高会写sql就会用

认识MyBatis

优点:

  • SQL被统一提取出来,便于统一管理和优化
  • SQL和代码解耦,将业务逻辑和数据访问逻辑分离
  • 提供映射标签,支持对象和数据库的ORM字段关系映射
  • 提供对象关系映射标签,支持对象关系组件维护
  • 灵活书写动态SQL,支持各种条件的动态SQL生成

缺点:

  • 编写SQL语句时工作量大,尤其是字段多、关联表多的时候更是如此
  • SQL语句依赖数据可,导致数据库移植性差

MyBatis的基本概念

  • Mapper配置:可以使用基于xml的Mapper配置文件来实现,也可以使用基于java注解的MyBatis注解来实现,甚至可以直接用MyBatis提供的API来实现。
  • Mapper接口:自行定义一个数据操作的接口,类似于通常说的DAO接口,MyBatis会自动为Mapper接口创建动态代理对象。
  • Executor:Mybatis中所有的Mapper语句的执行都是通过Excutor进行,Executor是MyBatis的一个核心接口。
  • SqlSession:执行持久化草所的对象,类似于JDBC中的Connection对象。可以使用SqlSession实例直接执行被映射的SQL语句。
  • SqlSessionFactory:单个数据库映射关系经过编译后的内存镜像。SqlSessionFactory对象的实例通过SqlSessionFactoryBuilder对象获得。

MyBatis工作流程

  1. 加载Mapper配置的SQL映射文件或SQL注解
  2. 通过读取配置文件,创建会话工厂SqlSessionFactory
  3. 根据会话工厂创建会话对象Sqlsession,绘画对象是一个接口,包含CRUD数据库操作的方法
  4. 创建Executor接口帮助会话对象执行操作
  5. 执行器处理的SQL信息封装到MappedStatement对象中
  6. 操作数据库,返回结果,结束流程

Spring中使用Mybatis

  1. 创建项目选择依赖、依赖配置
  2. Mybatis的公共属性配置peoperties相关配置等
  3. 表的映射xml文件配置
  4. java类和接口的定义

映射文件的元素

mapper:

  •  <select>: 映射查询语句,可自定义参数,返回结果集等
    
  •  <insert>: 映射插入语句,执行返回一个整数,代表插入的条数
    
  •  <update>: 映射更新语句,执行返回一个整数,代表更新的条数
    
  •  <delete>:映射删除语句,执行返回一个整数,代表删除的条数
    
  •  <sql>:   用于定义一部分SQL,然后可被其他语句引用此SQL
    
  •  <cache>: 给定命名空间的缓存配置
    
  •  <cache-ref>: 其他命名空间缓存配置的引用
    
  •  <resultMap>: 用来描述如何从数据库结果集中来加载对象
    

ResultMap

  • 解决两个问题
    • Pojo属性名和表结构字段名不一致(有时候不只是驼峰式)
    • 高级查询
  • 主要作用:定义映射规则、级联的更新以及定义类型转换器等

SQL语句日志输出配置

  • SpringBoot默认使用logback记录日志
  • MyBatis的执行SQL也可以使用Logback记录
    • 在properties文件中配置logback配置文件的位置:logging.config = classpath:logback.xml
    • 在logback.xml文件中加入MyBatis SQL的输出配置

MyBatis的注解

  • 注解版最大的特点就是具体的SQL文件需要写在Mapper类中,取消了Mapper的xml配置。
  • 数据库操作的注解:
    • @Select: 查询时使用
    • @Insert: 插入数据库时使用,直接传入实体类会自动解析属性到对应的值
    • @Update: 处理数据更新
    • @Delete: 处理数据删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值