mybatis 架构的学习

本贴最后更新于 2922 天前,其中的信息可能已经渤澥桑田

mybaitis 的核心是用将 sql 写入 xml 文档代替传统 dao 层的开发,封装 jdbc,输入映射和输出映射
mybatis 是什么?
mybatis 是一人持久层框架,mybatis 是一个不完全的 ORM 框架。sql 语句需要程序员自己去编写,但是 mybatis 也有映射(输入参数映射、输出结果映射)。
mybatis 入门门槛不高,学习成本低,让程序员把精力放在 sql 语句上,对 sql 语句优化非常方便,适用与需求变化较多项目,比如互联网项目。
mybatis 框架执行过程:
1、配置 mybatis 的配置文件,SqlMapConfig.xml(名称不固定)
2、通过配置文件,加载 mybatis 运行环境,创建 SqlSessionFactory 会话工厂
SqlSessionFactory 在实际使用时按单例方式。
3、通过 SqlSessionFactory 创建 SqlSession
SqlSession 是一个面向用户接口(提供操作数据库方法),实现对象是线程不安全的,建议 sqlSession 应用场合在方法体内。
4、调用 sqlSession 的方法去操作数据。
如果需要提交事务,需要执行 SqlSession 的 commit()方法。
5、释放资源,关闭 SqlSession
mybatis 开发 dao 的方法:
1、原始 dao 的方法
需要程序员编写 dao 接口和实现类
需要在 dao 实现类中注入一个 SqlSessionFactory 工厂。
2、mapper 代理开发方法(建议使用)
需要程序员编写 mapper 接口(就是 dao 接口)
程序员在编写 mapper.xml(映射文件)和 mapper.java 需要遵循一个开发规范:
1、mapper.xml 中 namespace 就是 mapper.java 的类全路径。
2、mapper.xml 中 statement 的 id 和 mapper.java 中方法名一致。
3、mapper.xml 中 statement 的 parameterType 指定输入参数的类型和 mapper.java 的方法输入 参数类型一致。
4、mapper.xml 中 statement 的 resultType 指定输出结果的类型和 mapper.java 的方法返回值类型一致。
SqlMapConfig.xml 配置文件:可以配置 properties 属性、别名、mapper 加载。。。
输入映射:
parameterType:指定输入参数类型可以简单类型、pojo、hashmap。。
对于综合查询,建议 parameterType 使用包装的 pojo,有利于系统 扩展。
输出映射:
resultType:
查询到的列名和 resultType 指定的 pojo 的属性名一致,才能映射成功。
reusltMap:
可以通过 resultMap 完成一些高级映射。
如果查询到的列名和映射的 pojo 的属性名不一致时,通过 resultMap 设置列名和属性名之间的对应关系(映射关系)。可以完成映射。
高级映射:
将关联查询的列映射到一个 pojo 属性中。(一对一)
将关联查询的列映射到一个 List 中。(一对多)

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3194 引用 • 8214 回帖
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yangyujiao via macOS

    自从新公司用了 spring-boot 我就没看到那些乱七八糟的 xml 了··· 就是公司用的 mybatis 竟然用注解 也不用 xml 方法来写 ····

    2 回复
  • someone

    才开始学架构…很多不懂

  • teddyzhu via macOS

    不完全的 ORM, 你先去了解下 ORM 的定义

  • Eddie

    那是因为项目简单?

  • loocao via macOS

    自从用了 spring-data-jpa,一直都在使用注解

推荐标签 标签

  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    84 引用 • 324 回帖 • 1 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 431 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 1 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 134 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 9 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 610 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1057 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 5 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 651 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    28 引用 • 226 回帖 • 138 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 277 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 546 关注
  • gRpc
    11 引用 • 9 回帖 • 90 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 592 关注
  • 分享

    有什么新发现就分享给大家吧!

    247 引用 • 1794 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 1 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖 • 1 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 112 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖 • 1 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 819 关注
  • abitmean

    有点意思就行了

    31 关注
  • OnlyOffice
    4 引用 • 23 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖