Mybatis 基础1

news2024/11/25 12:38:20

  • Mybatis基础
    • 什么是Mybatis
    • 什么是框架
    • ORM介绍
    • 快速入门
      • 环境搭建
  • MyBatis的相关api
    • Resources
    • 构建器SqlSessionFactoryBuilder
    • 工厂对象SqlSessionFactory
    • SqlSession会话对象
  • MyBatis 映射配置文件
    • 映射配置文件介绍
    • 查询功能
    • 新增功能
    • 修改功能
    • 删除功能
    • 小结
  • Mybatis核心配置文件介绍
    • 核心配置文件介绍
    • 数据库连接配置文件引入
    • 起别名
    • 小结
  • Mybatis传统方式开发
    • Dao 层传统实现方式
    • LOG4J的配置和使用

Mybatis基础

什么是Mybatis

基于Java的持久层框架(半自动)

内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程

运用过程:

mybatis通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。

最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。

什么是框架

框架是一款半成品软件,我们可以基于这个半成品软件继续开发

ORM介绍

  • ORM(Object Relational Mapping): 对象关系映射

  • 指的是持久化数据和实体对象的映射模式,为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。
    在这里插入图片描述

快速入门

MyBatis开发步骤:

①添加MyBatis的jar包

②创建Student数据表

③编写Studentr实体类

④编写映射文件StudentMapper.xml

⑤编写核心文件MyBatisConfig.xml

⑥编写测试类

环境搭建

1)导入MyBatis的jar包
2) 创建student数据表
3) 编写Student实体
4)编写StudentMapper.xml映射文件
5) 编写MyBatis核心文件

MyBatis的相关api

Resources

org.apache.ibatis.io.Resources:加载资源的工具类。
在这里插入图片描述

构建器SqlSessionFactoryBuilder

org.apache.ibatis.session.SqlSessionFactoryBuilder:获取 SqlSessionFactory 工厂对象的功能类

在这里插入图片描述

工厂对象SqlSessionFactory

org.apache.ibatis.session.SqlSessionFactory:获取 SqlSession 构建者对象的工厂接口。
在这里插入图片描述

SqlSession会话对象

org.apache.ibatis.session.SqlSession:构建者对象接口。用于执行 SQL、管理事务、接口代理。
在这里插入图片描述

MyBatis 映射配置文件

映射配置文件介绍

映射配置文件包含了数据和对象之间的映射关系以及要执行的 SQL 语句

查询功能

  • <select>:查询功能标签。

  • 属性

    id:唯一标识, 配合名称空间使用。

    parameterType:指定参数映射的对象类型。

    resultType:指定结果映射的对象类型。

  • SQL 获取参数: #{属性名}

在这里插入图片描述

新增功能

  • <insert>:新增功能标签。

  • 属性

    id:唯一标识, 配合名称空间使用。

    parameterType:指定参数映射的对象类型。

    resultType:指定结果映射的对象类型。

  • SQL 获取参数: #{属性名}

在这里插入图片描述

修改功能

  • <update>:修改功能标签。

  • 属性

    id:唯一标识, 配合名称空间使用。

    parameterType:指定参数映射的对象类型。

    resultType:指定结果映射的对象类型。

  • SQL 获取参数: #{属性名}
    在这里插入图片描述

删除功能

  • <delete>:查询功能标签。

  • 属性

    id:唯一标识, 配合名称空间使用。

    parameterType:指定参数映射的对象类型。

    resultType:指定结果映射的对象类型。

  • SQL 获取参数: #{属性名}
    在这里插入图片描述

小结

在这里插入图片描述

Mybatis核心配置文件介绍

核心配置文件介绍

核心配置文件包含了 MyBatis 最核心的设置和属性信息。如数据库的连接、事务、连接池信息等。

数据库连接配置文件引入

properties标签引入外部文件

    <!--引入数据库连接的配置文件-->
    <properties resource="jdbc.properties"/>

具体使用,如下配置

  <!-- property获取数据库连接的配置信息 -->
    <property name="driver" value="${driver}" />
    <property name="url" value="${url}" />
    <property name="username" value="${username}" />
    <property name="password" value="${password}" />

起别名

  • <typeAliases>:为全类名起别名的父标签。

  • <typeAlias>:为全类名起别名的子标签。

  • 属性

    type:指定全类名

    alias:指定别名

  • <package>:为指定包下所有类起别名的子标签。(别名就是类名)

在这里插入图片描述

    <!--起别名-->
    <typeAliases>
        <typeAlias type="com.itheima.bean.Student" alias="student"/>
        <!--<package name="com.itheima.bean"/>-->
    </typeAliase

小结

在这里插入图片描述

Mybatis传统方式开发

Dao 层传统实现方式

分层思想:控制层(controller)、业务层(service)、持久层(dao)。
在这里插入图片描述

LOG4J的配置和使用

在日常开发过程中,排查问题时难免需要输出 MyBatis 真正执行的 SQL 语句、参数、结果等信息,我们就可以借助 LOG4J 的功能来实现执行信息的输出

在这里插入图片描述

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

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

相关文章

创建百度百科词条要交费吗?百度百科词条花钱吗?

互联网时代&#xff0c;百度逐渐成为了人们了解信息、搜集信息的主要渠道&#xff0c;越来越多的用户通过百度百科词条认识到了很多知名的人物、产品、品牌或是作品等等&#xff0c;百度百科词条在人们心中的信赖度也是越来越高。 百度百科词条具有权威性&#xff0c;百度百科…

Spring中Bean的生命周期(包含Spring执行流程)

文章目录一、Spring(Bean)执行流程二、Bean生命周期Bean的生命周期演示总结一、Spring(Bean)执行流程 启动容器(启动项目)读取配置文件(初始化) a) 使用xml注册bean b) 配置bean根(扫描)路径将bean存储到Spring中(存操作): 通过类注解进行扫描和装配将bean从Spring读取出来(取…

想要协同办公,企业云盘该怎么选?

信息数字时代&#xff0c;数字资产迎来爆发的同时&#xff0c;资产管理需求也在不断增加。在面对资源容量过大、素材无法大量共享等问题时&#xff0c;怎么让内容生产者和团队管理者更高效进行内容存储&#xff0c;满足项目在多元场景下分发、协作需求&#xff1f;赞奇超级云盘…

MySQL相关面试题

文章目录union 和 unionAll 的区别&#xff1f;drop、delete与truncate的区别 &#xff1f;sql 语句如何优化 &#xff1f;什么是事务 &#xff1f;事务的四个特性(ACID) &#xff1f;事务的隔离级别&#xff1f;索引主要有哪几种分类 &#xff1f;什么时候适合添加索引&#x…

ClickHouse 单机安装及基础知识与 Spark 应用

什么是 ClickHouse? ClickHouse 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 在传统的行式数据库系统中,数据按如下顺序存储: 处于同一行中的数据总是被物理的存储在一起。 常见的行式数据库系统有:MySQL、Postgres等。 在列式数据库系统中,数据按如下的顺…

ansible的常用模块介绍

ansible 常用命令/usr/bin/ansible  #Ansibe AD-Hoc 临时命令执行工具&#xff0c;常用于临时命令的执行/usr/bin/ansible-doc #Ansible 模块功能查看工具/usr/bin/ansible-galaxy  #下载/上传优秀代码或Roles模块 的官网平台&#xff0c;基于网络的/usr/bin/ansible-playbo…

第八章 Flink集成Iceberg的DataStreamAPI、TableSQLAPI详解

1、概述 ​ 目前Flink支持使用DataStream API 和SQL API方式实时读取和写入Iceberg表&#xff0c;建议使用SQL API方式实时读取和写入Iceberg表。 Iceberg支持的Flink版本为1.11.x版本以上&#xff0c;以下为版本匹配关系&#xff1a; Flink版本Iceberg版本备注Flink1.11.XI…

Windows 安装 Docker

一、Docker 官网 Dockerhttps://hub.docker.com/下载地址 window Docker 下载地址https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe 二、安装 检测是否已经安装了docker docker -v 如下图 &#xff1a; 如果没有安装&#xff0c;则在第一点下…

【Spark分布式内存计算框架——Spark Core】5. RDD 函数补充:关联函数与练习

关联函数 当两个RDD的数据类型为二元组Key/Value对时&#xff0c;可以依据Key进行关联Join。 首先回顾一下SQL JOIN&#xff0c;用Venn图表示如下&#xff1a; RDD中关联JOIN函数都在PairRDDFunctions中&#xff0c;具体截图如下&#xff1a; 具体看一下join&#xff08;等…

1624_MIT 6.828 stabs文档信息整理_上

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面为了完成MIT 6.828的堆栈信息解析大概看了一下这个文档&#xff0c;现在把看过的信息简单整理一下。 1. stabs主要是为调试器提供调试信息用的描述数据&#x…

11.XMLHttpRequest的进阶用法

目录 1 设置HTTP的请求时限 2 Formdata对象 2.1 简单使用 2.2 Formdata直接获取表单数据 2.3 上传文件 2.4 上传文件的进度 3 定义API根路径 4 请求出错 上面我们用的都是旧版的XMLHttpRequest&#xff0c;旧版有两个缺点 无法上传文件没有传送数据的进度信息…

Docker部署ddns-go,动态域名解析公网IPv6地址

Docker部署ddns-go&#xff0c;动态域名解析公网IPv6地址 ddns-go&#xff0c;自动获得你的公网 IPv4 或 IPv6 地址&#xff0c;并解析到对应的域名服务。 嫌IPv6地址太难记&#xff1f;ddns来解决&#xff0c;将家里的公网IPv6地址用起来吧&#xff01; 前言 为什么需要DDNS …

Java设计模式——装饰器模式

目录 1.什么是装饰器模式 2.装饰器模式优缺点 3.装饰器模式结构 4.代码示例 1.什么是装饰器模式 装饰器模式&#xff0c;指在不改变原有对象结构的基础情况下&#xff0c;动态地给该对象增加一些额外功能的职责。装饰器模式相比生成子类更加灵活。它属于对象结构型模式。 …

DCGAN

DCGAN的论文地址[https://arxiv.org/pdf/1511.06434.pdf]。DCGAN是GAN的一个变体&#xff0c;DCGAN就是将CNN和原始的GAN结合到一起&#xff0c;生成网络和鉴别网络都运用到了深度卷积神经网络。DCGAN提高了基础GAN的稳定性和生成结果质量。DCGAN主要是在网络架构上改进了原始的…

JVET-AC0315:用于色度帧内预测的跨分量Merge模式

ECM采用了许多跨分量的预测&#xff08;Cross-componentprediction&#xff0c;CCP&#xff09;模式&#xff0c;包括跨分量包括跨分量线性模型&#xff08;CCLM&#xff09;、卷积跨分量模型&#xff08;CCCM&#xff09;和梯度线性模型&#xff08;GLM&#xff09;&#xff0…

软件太多?1 秒找到您想要的应用

您的手机页面是怎样的呢&#xff1f; 也许像这样&#xff0c;所有 APP 平铺在一起~ 亦或是这样&#xff0c;将所有 APP 分类整理好~ 在整理的过程中&#xff0c;我们免不了要进行 “拖拽” 。 平铺式的呈现方式&#xff0c;如果 APP 数量众多&#xff0c;我们免不了要进行搜索…

基于Java的题库管理系统的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;随着我国社会的进步&#xff0c;社会的各个领域的创新改革都在高速发展的信息时代下突显出来。在信息时代这个大的背景下&#xff0c;对软件开发的要求越来越高&#xff0c;对考试的管理更需要加强&#xff0c;所以迫使我们不得不对…

【设计模式之美 设计原则与思想:面向对象】12丨实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?

上一节课&#xff0c;我们做了一些理论知识的铺垫性讲解&#xff0c;讲到了两种开发模式&#xff0c;基于贫血模型的传统开发模式&#xff0c;以及基于充血模型的 DDD 开发模式。今天&#xff0c;我们正式进入实战环节&#xff0c;看如何分别用这两种开发模式&#xff0c;设计实…

疫情开发,软件测试行情趋势是怎么样的?

如果说&#xff0c;2022年对于全世界来说&#xff0c;都是一场极大的挑战的话&#xff1b;那么&#xff0c;2023年绝对是机遇多多的一年。众所周知&#xff0c;随着疫情在全球范围内逐步得到控制&#xff0c;无论是国际还是国内的环境&#xff0c;都会呈现逐步回升的趋势&#…

每天一个摸鱼小技巧之「理解代码评审」

每个人的代码风格不同&#xff0c;在需要团队协作的项目里&#xff0c;如果没有统一的编程规范&#xff0c;那么会出现各式各样的代码&#xff0c;这对于团队成员来讲是个「灾难」。在需要对接协作模块时&#xff0c;要花费大量的时间去阅读代码&#xff0c;如果注释写的不明确…