在这里分享一份 [mybatis从入门到精通] 的强力教程,定能够助你一臂之力。

Mybatis基本介绍

  1. ORM和MyBatis
  2. 对象/关系数据库映射(ORM)
  3. 基本映射方式
  4. 流行的ORM框架简介

目前流行的编程语言,例如Java、 C#等,都是面向对象的编程语言;而目前主流的数据库产品,例如Oracle、DB2等,依然是关系数据库。编程语言和底层数据库的发展不协调,催生出了ORM框架,ORM框架可作为面向对象编程语言和数据库之间的桥梁。

确切地说,MyBatis 并不完全是一种ORM框架,它的设计思想和ORM相似,只是它允许开发,人员直接编写SQL语句,使得访问数据库更加灵活,更准确地说,它应该是一种“SQL Mapping”框架。

Mybatis的体系结构

  1. SqlSessionFactory
  2. SqlSession
  3. MyBatis的配置文件结构
  4. settings设置
  5. typeAliases类型命名
  6. typeHandlers类型处理器
  7. objectFactory对象工厂
  8. environments配置环境
  9. mapper映射器

通过前面的介绍可以知道,MyBatis 的持久化解决方案将用户从原始的JDBC访问中解放出来,用户只需要定义需要操作的SQL语句,无须关注底层的JDBC操作,就可以面向对象的方式进行持久层操作。底层数据库连接的获取、数据访问的实现、事务控制等都无须用户关心,从而将应用层从底层的JDBC/JTAAPI抽取出来。通过配置文件管理JDBC连接,让MyBatis解决持久化访问的实现。

MyBatis中的常用对象有SqSessionFactory和SlSession。

Mybatis的关联映射和动态SQL

  1. 一对一
  2. 一对多
  3. 多对多
  4. 动态SQL

关联关系是面向对象分析、面向对象设计最重要的知识,MyBatis完全可以理解这种关联关系,如果映射得当,MyBatis的关联映射将可以大大简化持久层数据的访问。关联关系大致有如下分类。

Mybatis的事务管理以及缓存机制

  1. 事务的概念
  2. Transaction接口
  3. 事务的配置创建和使用
  4. 一级缓存( SqlSession级别)
  5. 二级缓存(mapper级别)

每个业务逻辑都是由一系列数据库 访问完成的,这-系列数据库访间可能会修改多条数据记录,这一系列修改应该是一个整体,绝不能仅修改其中的几条数据记录。也就是说,多个数据库原子访问应该被绑定成一个整体,这就是事务。事务是一个最小的逻辑执行单元,整个事务不能分开执行,要么同时执行,要么同时放弃执行。

Mybatis注解配置

  1. MyBatis常用注解
  2. MyBatis注解的插入、修改、删除和查询操作
  3. MyBatis注解的一对一、一对多和多对多操作
  4. MyBatis注解的动态SQL

前面介绍了MyBatis的基本用法、关联映射、动态SQL和缓存机制等知识,其所有的配置都是使用XML完成,但是大量的XML配置文件的编写是非常繁琐的,因此MyBatis也提供了更加简便的基于注解(annotation) 的配置方式。

Spring4整合Mybatis3

  1. 开发环境搭建
  2. 准备所需的jar包
  3. 准备数据库资源
  4. 完成配置文件
  5. 持久层功能实现
  6. 服务层功能实现
  7. 控制层功能实现
  8. jsp页面
  9. 测试Spring4整合MyBatis3

在实际的项目开发中,我们需要将Spring和MyBatis进行整合,从而使用Spring 依赖注入以减少代码的耦合,使用Spring MVC处理请求并作出响应,使用MyBatis更加简捷地完成数据库操作。这里将重点介绍Spring和MyBatis的整合过程。

文档的最后一部分是项目实战

  1. 人事管理系统功能模块设计
  2. 人事管理系统持久化组件设计
  3. 人事管理系统业务逻辑组件设计
  4. Spring MVC整合MyBastis优势

最后将会综合运用前面所介绍的知识来开发一个简单的人事管理 (HRM)系统。该系统包括用户管理、部门管理、职位管理、员工管理、公告管理、下载中心等常用的人事管理系统功能。

本系统采用前面介绍的Java EE架构: Spring MVC + MyBatis3.4,该系统架构成熟,性能良好,运行稳定。Spring的IOC容器负责管理业务逻辑组件、持久层组件及控制层组件,这样可以充分利用Spring的依赖注入的优势,进一步增强系统的解耦性,从而提高应用的可扩展性,降低系统重构的成本。

这里详细介绍了一个完整的JavaEE项目:人事管理系统,在此基础上可以扩展出企业的HRM系统、OA系统等。因为企业平台本身的复杂性,所以本项目涉及的表达到6个,而且各个模块的业务逻辑也比较复杂,这些对初学者可能有一定难度, 但只要读者先认真阅读本书前面所介绍的知识,并结合上述的讲解,再配合资源文件中的案例代码,则一定可以掌握这里所介绍的内容,也是将理论知识应用到实际开发的典范

最后

更多Java进阶学习资料、2021大厂面试真题、视频资料可以**点击这里获取到免费下载方式!**

学习视频:

大厂面试真题:

ttps://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**

学习视频:

[外链图片转存中…(img-qjMutRxZ-1625053139381)]

大厂面试真题:

【设计思想解读开源框架】java如何发送post请求相关推荐

  1. 【设计思想解读开源框架】java监听模式和观察者模式

    深耕技术,啃下22个技术点 互联网行业更新换代非常快,行业常态便是不断学习,因此这些主流技术你一个都不能落下! ①并发编程 Java并发编程是整个Java开发体系中最难以理解,但也是最重要的知识点之一 ...

  2. sharedpreferences用法,一线互联网架构师设计思想解读开源框架!进阶学习

    导语 年初期间的"足不出户"是我们每天的一个状态,疫情肆虐的今天,对我们的学习.工作.生活等各个方面都造成了很严重的负面影响,对于一个拥有房贷车贷的普通上班族来说,更是" ...

  3. 【设计思想解读开源框架】Java基础入门清华大学出版社课后答案

    Java基础 JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java ...

  4. 设计思想解读开源框架:java自学视频下载迅雷下载

    前言 一次偶然,从朋友那里得到一份"java高分面试指南",里面涵盖了25个分类的面试题以及详细的解析:JavaOOP.Java集合/泛型.Java中的IO与NIO.Java反射. ...

  5. 一线互联网架构师设计思想解读开源框架!全套教学资料

    前言 这段时间也一直在学习Netty相关知识,因为涉及知识点比较多,也走了不少弯路.目前网上关于Netty学习资料玲琅满目,不知如何下手,其实大家都是一样的,学习方法和技巧都是总结出来的,我们在没有找 ...

  6. 一线互联网架构师设计思想解读开源框架!附超全教程文档

    前言 最近一段时间发现经常看到很多人,对Spring源码比较感兴趣,日常开发中,无论你做什么什么项目,大部分都离不开Spring生态的那一套东西,所以很多人对Spring底层源码实现很感兴趣,但是有些 ...

  7. android面试!一线互联网移动架构师设计思想解读开源框架!复习指南

    一.背景介绍 从实用角度梳理一篇能够帮大家快速扫盲的CMake基础教程,也是对我目前负责项目的一次学习总结.既然选择从项目实用性考虑,下面的讲解内容可能并不一定完整,更多的是符合项目目前使用到的一些特 ...

  8. TT语音线程优化,一线互联网架构师设计思想解读开源框架

    for (e in es) { if (e.className == "dalvik.system.VMStack" && e.methodName == &quo ...

  9. 【设计思想解读开源框架】mysql官方文档中文版下载免费

    01 源码分析 源码阅读,最核心有三点:技术基础+强烈的求知欲+耐心. 1.1 设计模式(45设计模式:介绍+优缺点+应用实例+源代码+解决问题) 1.2 Spring复习大纲:依赖注入Ioc+Bea ...

最新文章

  1. SAP HUM 嵌套HU的场景下内向交货单Relationship Browser里只显示内层HU
  2. time_t和字符串间的转化
  3. Ransomware CryptXXX Analysis
  4. 引起LC.exe exited with code -1的两个场景
  5. 深度学习---卷积神经网络(CNN)
  6. Windows 容器
  7. 软件架构-里氏替换原则
  8. 《数字图像处理与机器视觉——Visual C++与Matlab实现》——0.2 数字图像处理与识别...
  9. php 1==#039;a1#039;,关于新版本1.9.14.6 加固 dex version 为 039 导致9.0以下无法修复的问题及疑惑。...
  10. 2015年春节往事小记
  11. JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤
  12. linux jar包zip包 进入修改配置文件
  13. 动画练习:Punch
  14. Docker定制化Python基础镜像
  15. 车载导航系统中GPS的定位
  16. php仅显示月份的日历,JSP_用JSP实现的一个日历程序,!-- 显示任意年、月的日历 - phpStudy...
  17. 使用MongoDB命令连接远程服务器的MongoDB数据库
  18. 直播平台源码中直播系统捕获音视频的步骤
  19. 互联网日报 | 2月6日 星期六 | 快手上市首日市值超万亿港元;瑞幸咖啡在美申请破产保护;虾米音乐正式宣布关停...
  20. java抢答器代码_分享一下我的51单片机抢答器代码

热门文章

  1. UML之交互图(协作图和顺序图)
  2. NeurIPS 2021 助力YOLOv5涨点 Alpha-IoU:IoU Loss大一统
  3. VS2015编译TensorFlow C++程序完全攻略
  4. python 调用c++ 回调函数
  5. c++ map嵌套队列(队列嵌套结构体指针)ok
  6. finished with exit code -1073740791 (0xC0000409)
  7. 优化选项对ARM下指针赋值的影响
  8. 十九、Redis 6.0 的客户端缓存
  9. java json的使用,java中json的使用
  10. mysql案例_MySQL实例crash的案例详细分析