Mybatis学习笔记(一)

news2025/1/19 23:23:27

什么是框架?

  • 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题
  • 使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能,大大提高开发效率

三层架构

表现层:用于展示数据
业务层:处理业务需求
持久层:和数据库交互
在这里插入图片描述

持久层技术解决方案

  • JDBC技术
    • Connection
    • PreparedStatement
    • ResultSet
  • Spring的JdbcTemplate:Spring对jdbc的简单封装
  • Apache的DBUtils:它和Spring的JdbcTemplate很像,也是对jdbc的简单封装
  • 以上这些都不是框架,JDBC是规范,Spring的JdbcTemplate和Apache的DBUtils都只是工具类

mybatis的概述

  • mybatis是一个持久层框架,用java编写的
  • 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动、创建连接等繁杂过程
  • 它使用了ORM思想实现了结果集的封装
  • ORM
    • Object Relational Mapping 对象关系映射
    • 简单的说,就是把数据库表和实体类以及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表
  • 今天我们需要做到实体类中的属性和数据库表的字段名保持一致

mybatis入门

  • mybatis的环境搭建
    • 第一步:创建maven工程并导入坐标
    • 第二步:创建实体类和dao接口
    • 第三步:创建mybatis的主配置文件SqlMapConfig.xml
    • 第四步:创建映射配置文件IUserDao.xml
  • 环境搭建的注意事项
    • 1.创建IUserDao.xml和IUserDao.java时名称是为了和我们之前的知识保持一致,在mybatis中它把持久层的操作接口名称和映射文件也叫做Mapper,所以IUserDao和IUserMapper是一样的
    • 2.在idea中创建目录时,它和包时不一样的;包在创建时:com.itheima.dao时三级机构;目录在创建时:com.itheima.dao是一级结构
    • 3.mabatis的映射配置文件位置必须和dao接口的包结构相同
    • 4.映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
    • 5.映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
    • 当我们遵从第3、4、5点之后,我们在开发中就无需再编写dao的实现类
  • mybatis的入门案例
    • 1.读取配置文件
    • 2.创建SqlSessionFactory工厂
    • 3.创建SqlSession
    • 4.创建Dao接口的代理对象
    • 5.执行dao中的方法
    • 6.释放资源
    • 注意事项:不要忘记在映射配置中告知mybatis要封装到哪个实体类中
    • 配置的方式:指定实体类的全限定类名
  • mybatis基于注解的入门案例
    • 把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定sql语句。同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao借考的全限定类名
  • 明确
    • 我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式,不管使用xml还是注解配置
    • 但是mybatis时支持写dao实现类的

读取配置文件

  • 1.使用类加载器,它只能读取类路径的配置文件
  • 2.使用ServletContext对象的getRealPath()

入门案例设计模式分析

  • 创建mybatis使用了构建者模式,把对象的创建细节隐藏,使使用者直接调用方法即可拿到对象
  • 生产SqlSession使用了工厂模式,优势是解耦(减低类之间的依赖关系)
  • 创建dao接口实现类使用了代理模式,优势是不修改源码的基础上对已有方法增强

自定义mybatis的分析

  • mybatis在使用代理dao的方式实现增删改查时做两件事
    • 1.创建代理对象
    • 2.在代理对象中调用selectList
  • 自定义mybatis能通过入门案例看到类
    • class Resources
    • class SqlSessionFactoryBuilder
    • interface SqlSessionFactory
    • interface SqlSession

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

慕尼黑工业大学开源含四季的数据集:用于自动驾驶的视觉长期定位

以下内容来自[从零开始机器人SLAM知识星球] 每日更新内容 点击领取学习资料 → 机器人SLAM学习资料大礼包 #论文# #开源数据集# 4Seasons: Benchmarking Visual SLAM and Long-Term Localization for Autonomous Driving in Challenging Conditions 地址:https:/…

LeetCode[295]数据流的中位数

难度:困难题目:中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。描述:实现 MedianFinder 类:…

工信部及多地政府联合阿里健康在全国展开防疫保供专项行动

为了切实服务好百姓的购药需求,在工信部和各地政府的指导下,12月疫情政策调整以来,阿里健康已先后在全国20多个省市及地区配合药品物资精准投放工作,为各地居民重点供退热药、N95口罩等紧缺药品和物资,尽全力打好药品保…

Android系统定制开发过程快速查找定位分析代码的方法

推荐阅读 ​Android系统开发过程快速查找定位代码的方法 Android10以上系统定制Root权限(隐藏Root权限) 商务合作 2023年招聘 2023年逆向分析资料汇总 Android系统开发过程,经常需要进行文件查找、代码查找,常用find和grep查找命令 1.find命令 根据文…

短短六年时间冲到二奢品类第一,妃鱼如何做到的?

随着消费需求不断增长,二手奢侈品市场近五年来快速向规模化、平台化发展,妃鱼、红布林、胖虎等二奢电商品牌迅速崛起,成为风头劲胜的网红。国泰君安研究报告显示,中国闲置高端消费品零售市场规模已从2016年162亿元增长至2020年的5…

Vue js混淆加密 webpack-obfuscator

公司要求加密混淆js 之前 是用的glifyjs-webpack-plugin ,感觉不行。 然后使用了webpack-obfuscator 非常nice~,除了打包出来体积会有点大,浏览的网页会变慢,选择最低是就还好, 有多个条件属性可以选择, 可以选择高度混…

networkx学习(三) 随机网络

networkx学习(三) 随机网络 1.规则网络 2.随机网络的生成算法 第一种:G(N,L) import random import itertoolsdef GNL(N, L):G = nx.Graph()G.

硬盘数据如何恢复?电脑硬盘资料恢复,方法就是这么简单!

硬盘作为重要的存储设备,里面保存的数据是很重要的。日常生活和工作中,硬盘发生数据丢失也是很常见的事情,比如:误删重要文件并清空了回收站、文件打不开提示格式化、分区变成RAW格式、电脑重新分区等。各种数据丢失原因数不胜数。…

卷积神经网络-cnn和lstm

文章目录1. 卷积神经网络1.1 卷积神经网络的基础1.2 卷积神经网络和传统的网络的区别1.3 卷积的作用1.3.1 图像颜色通道1.3.2 卷积的次数1.4 卷积层涉及的参数1.4.1 滑动窗口的步长1.4.2 卷积核的大小1.4.3 边缘填充1.4.4 卷积核的个数1.4.5 卷积参数共享1.5 池化层1.6 整体网络…

如何在Microsoft Word设置导航窗格以重新排列页面

本文包括使用导航窗格和复制粘贴在Microsoft Word 2019、2016和Office 365中移动页面的说明。 Microsoft Word不会将文档视为单独页面的集合,而是将其视为一个长页面。因此,重新排列Word文档可能会很复杂。在Word中移动页面的一种更简单的方法是使用导航窗格。 注意:要在导…

Vue 3 桌面应用开发(文末附视频)

在正式开始之前,我想先直接“输出”一些背景信息,既能阐明我的观点,也希望可以坚定你学习本小册的决心。 首先,桌面应用开发在未来一定会大放异彩,桌面应用相对于移动应用来说优势非常明显(交互区域更大、…

TCP/IP网络编程(3)——地址族与数据序列

文章目录第 3 章 地址族与数据序列3.1 分配给套接字的 IP 地址与端口号3.1.1 网络地址(Internet Address)3.1.2 网络地址分类与主机地址边界3.1.3 用于区分套接字的端口号3.2 地址信息的表示3.2.1 表示 IPV4 地址的结构体3.2.2 结构体 sockaddr_in 的成员…

王道操作系统笔记(二)———— 进程与线程

文章目录一、进程的概念和特征1.1 进程的概念1.2 进程的组成1.3 进程的特征1.4 进程的状态与转换1.5 进程控制1.6 进程的通信1.6.1 共享存储1.6.2 消息传递1.6.3 管道通信1.7 父进程与子进程二、线程概念和多线程模型2.1 线程的概念2.2 线程的属性2.3 线程的实现方式2.4 多线程…

C#【必备技能篇】DatagridView添加行时,设置行标题单元格的值为行数

文章目录1、DatagridView添加行的代码2、方法一:【每次添加行都重新刷新了全部的行数,不推荐】3、方法二:【只有一个DatagridView时,推荐此方法】4、方法三:【通用方法,多个DatagridView都有这个需求时&…

利用 Burp Suite 进行密码爆破

利用 Burp Suite 进行密码爆破1.Intruder 功能介绍2.攻击类型3.实战4.验证码爆破1.Intruder 功能介绍 使用 BP 工具的 Intruder 模块高度可配置,可以对目标网站进行密码爆破,一般被用于网站的安全渗透测试场景 BP 工具的 Intruder 模块包含几个功能标签…

解决2022.3.1版本中 IDEA中 XML文件屎黄色背景 的方法

问题:在idea打开mybatis的xml映射文件,出现大面积黄色背景提示 1:打开文件,点击设置 2:打开编辑器--> 检查--> SQL 3:受不了,我的是中文,我换成英文继续了 找到 No data sou…

CDH6.3.2 ORC文件格式 Spark引擎查询数组越界异常

组件版本: flink1.13.2 cdh6.3.2 hive2.1.1 问题描述: CDH6.3.2 ORC文件格式 Spark引擎查询数组越界异常 java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: 7 ‘org.apache.orc.impl.ReaderImpl::ReaderImpl.java:385’, org.apache.hadoop.hive.ql.io.orc.Re…

解决OBS录屏模糊问题

相信大家在使用OBS过程中也会遇到录屏模糊的问题,网上有很多配置教程,尝试了视频比特率、提高OBS当中其他的硬件参数。 模糊是要分情况的,如果是静态情况下模糊,就是屏幕不动的时候录制的视频也很模糊,那就是视频的基…

linux中使用KubeSphere和k8s 部署springboot项目

1、创建项目----》按照做的项目名称建 创建一个项目 创建后,如图所示: 2、工作负载---》就是创建服务容器Prod第一步:创建一个工作负载服务-->基本信息第二步:容器组设置 设置容器端口,健康检查,环境…

基于Gentoo发行版本的Calculate Linux 23发布

导读Calculate Linux 是一个为在组织环境中快速部署而优化的 Linux 发行版。它以 Gentoo Linux 项目为基础,包括许多预配置的功能。 Calculate Linux 以五种方式发布。Calculate Linux Desktop(CLD)、Calculate Directory Server(…