SSM框架知识点整合及核心要点(三)--MyBatis 自动化生成&关联查询

MyBatis 自动化生成&关联查询

mybatis-generator-gui

代码自动生成插件。缺陷:没有多表操作.自动生成是针对互联网开发提出的.互联网开发 中多表操作很少.
类似 MyEclipse 中的一个逆向工程组件.根据数据库表格设计,自动生成实体类 型,Mapper/DAO 接口,有必要生成对应的实现类,相关的 Mapper/DAO 的配置文件。
MyBatis-generator : 是一个开发完善的 JavaSE 工程。主要实现方式,就是使用 JDBC/MyBatis 连接数据库,查询表格信息,自动化生成对应的 java 代码。
版本:
gui 版本:提供可视化界面,操作简单。弊端是一次只能生成一张表格的对应代码。
console 版本:无可视化界面,操作相对麻烦。优势是可以一次性生成若干表格的对应 代码。企业使用。
使用方式:
gui 版本:运行 com.zzg.mybatis.generator.MainUI。

mybatis-generator-console

插件工具。 是用于自动生成代码的。 可以生成的代码包括:实体类型,Mapper 接口, Mapper 接口对应的 SQL 映射文件。

代码生成方式
关注配置文件:generatorConfig.xml
配置文件中配置了需要逆向生成代码的表格有哪些。还配置了数据库的链接相关信息。

自动生成代码的优缺点

  • 优点
    方便。SQL 规范。快捷。维护成本低
  • 缺点
    只能单表操作。(互联网应用中,多表联合查询相对较少。) 如果表格中有 Text,BLOB 字段。查询、更新的时候,需要特殊注意。默认的查询方法 不查询 Text 和 BLOB 字段,默认的更新方法不更新 Text 和 BLOB 字段。必须调用 selectByExampleWithBLOBs,updateByExamaleWithBLOBs,updateByPrimaryKeyWithBLOBs。

Interceptor

是 MyBatis 提供的一个插件(plugin 扩展)。代表拦截器。可以拦截代码中的数据库访 问操作。就是 Statement 操作。
拦截后,可以去修改正在执行的 SQL 语句,可以额外访问数据库,可以实现若干数据 计算和处理。
使用场景不多。针对某类型的 SQL 实现拦截的工具。粒度太粗糙。
市场常用的 Interceptor 插件只有 PageHelper。
Interceptor 影响执行效率。

关联查询

在 MyBatis 中,关联查询分为一次查询和 N+1 次查询。
一次查询:是使用多表联合查询 SQL 语法实现。 一次查询 SQL 语法相对复杂,效率比较高。如果查询的数据量大,不推荐使用。
N+1 次查询:是使用多个单表查询 SQL 语法实现。
N+1 次查询效率低,多次访问数据库,网络操作为多次。可以使用 lazy 实现懒加载。 在 MyBatis 中懒加载并不是非常好用。
在一对一关系查询的时候,可以使用 AutoMapping 的方式实现查询。具体语法为:
select column as 关联属性名.关联对象内部属性名 from …
AutoMapping 不推荐使用,语义不明确,维护成本高。

一对一
在这里插入图片描述

一对多&多对多
在这里插入图片描述

深层嵌套
在这里插入图片描述

Provider

@InsertProvider @UpdateProvider @DeleteProvider @SelectProvider

lazy

在 mybatis 核心配置文件中增加下述配置.
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值