MyBatis 学习笔记(一)

MyBatis 封装 JDBC :连接、访问、操作数据库中的数据

MyBatis 是一个持久层框架。

MyBatis 提供的持久层框架包括 SQLMaps 和 Data Access Objects(DAO)

  • SQLMaps:数据库中的数据和 Java数据的一个映射关系
    • 封装 JDBC 的过程
  • Data Access Objects(DAO):数据访问对象,使用JDBC 访问数据库,操作数据库中的数据

MyBatis 特性:

  1. MyBatis 是一个持久层的框架
    1. 支持定制化SQL(SQL 需要我们自己手动写)
    2. 存储过程
    3. 高级映射
  2. MyBatis 封装了JDBC
    1. 不需要我们手动写 JDBC 代码、手动设置参数、获取结果集
  3. MyBatis 可以使用简单的 XML或注解用于配置和原始映射
    1. 将接口和Java的POJO(Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录
  4. MyBatis 是一个半自动的ORM(Object Relation Mapping,对象关系映射)框架(ORM 就是将 Java中的实体对象和关系型数据库中的数据创建映射关系)
    1. Object :Java 实体对象
    2. Relation:关系型数据库
    3. Mapping :映射
    4. SQL 关系自己写,自己配置
      1. Hibernate 是一个全自动的ORM 框架
      2. JDBC 是一个全手动的ORM

MyBatis 的下载:

GitHub - mybatis/mybatis-3: MyBatis SQL mapper framework for Java

后缀是 tar.gz 是Linux 系统下的压缩文件后缀

MyBatis  和其他持久层框架的对比

MyBatis 的核心配置文件:

  • 核心配置文件:主要用于配置连接数据库的环境以及 MyBatis 的全局配置信息
  • 核心配置文件存放的位置是:src/main/resources目录下
  • 习惯上命名为:mybatis-config.xml

创建Mapper接口

MyBatis中的mapper接口相当于以前的dao。

区别是:

  • mapper 仅仅是接口,不需要提供实现类。MyBatis里面有面向接口编程
  • dao,有接口和实现类(不知道对不对)

创建MyBatis 映射文件:

ORM(Object Relationship Mapping)对象关系映射

  • 对象:Java实体类对象
  • 关系:关系型数据库
  • 映射:二者之间的对应关系

 

1.先写 mapper 接口中的方法

2.然后写mapper.xml里面的配置文件

核心配置文件:(了解)

<?xml version="1.0" encoding="UTF-8" ?>
<!--配置文件中的约束-->
<!--DOCTYPE 后面的是根标签:configuration-->
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--    配置连接数据库的环境environments:配置多个连接数据库的环境属性:default:设置默认使用的环境的id
--><environments default="development">
<!--environment:配置某个具体的环境属性:id:表示连接数据库的环境的唯一标识,不能重复 ,
--><environment id="development">
<!--            当前事务管理器,事务管理器的类型是JDBC;JDBC:事务的开启、提交和回滚都需要手动处理transactionManager:事务管理器,用来设置事务管理方式的属性:type="JDBC/MANAGED"JDBC:表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事务的提交或回滚需要手动处理MANAGED:被管理,例如被Spring管理
--><transactionManager type="JDBC"/>
<!--            数据源,连接数据库的信息。type=pooled,表示使用数据库连接池dataSource:配置数据源属性:type:设置数据源的类型type="POOLED/UNPOOLED/JNDI"POOLED:表示使用数据库连接池缓存数据库连接UNPOOLED:表示不使用数据库连接池JNDI:表示使用上下文中的数据源
--><dataSource type="POOLED"><!--设置连接数据库的驱动--><property name="driver" value="com.mysql.jdbc.Driver"/><!--设置连接数据库的连接地址--><property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><!--设置连接数据库的用户名--><property name="username" value="root"/><!--设置连接数据库的密码--><property name="password" value="123456"/></dataSource></environment></environments>
<!--    引入映射文件-->
<!--    mapper 接口相当于DAODAO 的取名,和我们操作的表和实体类有关。比如实体类是User,表名是t_user,DAO接口名就是 UserDao
--><mappers><mapper resource="mappers/UserMapper.xml"/></mappers>
</configuration>

把连接数据库的信息放在properties文件中

五、MyBatis 获取参数值的两种方式(重点⭐)

设置配置文件的模板:

创建核心配置文件的模板

创建映射文件的模板 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

东哥一句兄弟,你还当真了?

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 你还真把自己当刘强东兄弟了?谁跟你是兄弟了?你在国外的房子又不给我住&#xff0c;你出去旅游也不带上我!都成人年了&#xff0c;东哥一句客套话&#xff0c;别当真! 今天&#xff0c;东哥在高管会上直言&…

计算机网络套接字知识(非常详细)从零基础入门到精通

本节重点 认识IP地址, 端口号, 网络字节序等网络编程中的基本概念; 学习socket api的基本用法; 一、预备知识 1.理解源IP地址和目的IP地址 ⭐在IP数据包头部中&#xff0c;有两个IP地址&#xff0c;分别叫做源IP地址和目的IP地址。 思考: 我们光有IP地址就可以完成通信了…

深入理解NumPy与Pandas【numpy模块及Pandas模型使用】

二、numpy模块及Pandas模型使用 numpy模块 1.ndarray的创建 import numpy as np anp.array([1,2,3,4]) bnp.array([[1,2,3,4],[5,6,7,8]]) print(a) #[1 2 3 4] print(b) #[[1 2 3 4][5 6 7 8]] 1.1使用array()函数创建 numpy.array(object, dtype None, copy True, ord…

CentOS 7安装/卸载Grafana

说明&#xff1a;本文介绍CentOS 7操作系统如何安装/卸载Grafana&#xff1b; 安装 Step1&#xff1a;下载rpm文件 敲下面的命令&#xff0c;下载grafana的rpm文件 wget https://dl.grafana.com/oss/release/grafana-7.3.7-1.x86_64.rpmStep2&#xff1a;安装grafana 敲下…

Redis常见数据类型(6)-set, zset

目录 Set 命令小结 内部编码 使用场景 用户画像 其它 Zset有序集合 普通指令 zadd zcard zcount zrange zrevrange ​编辑 zrangebyscore zpopmax/zpopmin bzpopmax/bzpopmin zrank/zrevrank zscore zrem zremrangebyrank zremrangebyscore Set 命令小结 …

图像上下文学习|多模态基础模型中的多镜头情境学习

【原文】众所周知&#xff0c;大型语言模型在小样本上下文学习&#xff08;ICL&#xff09;方面非常有效。多模态基础模型的最新进展实现了前所未有的长上下文窗口&#xff0c;为探索其执行 ICL 的能力提供了机会&#xff0c;并提供了更多演示示例。在这项工作中&#xff0c;我…

以太坊(3)——智能合约

智能合约 首先明确一下几个说法&#xff08;说法不严谨&#xff0c;为了介绍清晰才说的&#xff09;&#xff1a; 全节点矿工 节点账户 智能合约是基于Solidity语言编写的 学习Solidity语言可以到WFT学院官网&#xff08;Hello from WTF Academy | WTF Academy&#xff09;…

Go语言的内存泄漏如何检测和避免?

文章目录 Go语言内存泄漏的检测与避免一、内存泄漏的检测1. 使用性能分析工具2. 使用内存泄漏检测工具3. 代码审查与测试 二、内存泄漏的避免1. 使用defer关键字2. 使用垃圾回收机制3. 避免循环引用4. 使用缓冲池 Go语言内存泄漏的检测与避免 在Go语言开发中&#xff0c;内存泄…

Linux基础(五):常用基本命令

从本节开始&#xff0c;我们正式进入Linux的学习&#xff0c;通过前面的了解&#xff0c;我们知道我们要以命令的形式使用操作系统&#xff08;使用操作系统提供的各类命令&#xff0c;以获得字符反馈的形式去使用操作系统。&#xff09;&#xff0c;因此&#xff0c;我们是很有…

win32-鼠标消息、键盘消息、计时器消息、菜单资源

承接前文&#xff1a; win32窗口编程windows 开发基础win32-注册窗口类、创建窗口win32-显示窗口、消息循环、消息队列 本文目录 键盘消息键盘消息的分类WM_CHAR 字符消息 鼠标消息鼠标消息附带信息 定时器消息 WM_TIMER创建销毁定时器 菜单资源资源相关菜单资源使用命令消息的…

634 · 单词矩阵

链接&#xff1a;LintCode 炼码 - ChatGPT&#xff01;更高效的学习体验&#xff01; . - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; class Solution { public: struct Trie {Trie() {next.resize(26, nullptr);end false;} std::vector<Trie*> next; b…

Python高级进阶--dict字典

dict字典⭐⭐ 1. 字典简介 dictionary&#xff08;字典&#xff09; 是 除列表以外 Python 之中 最灵活 的数据类型&#xff0c;类型为dict 字典同样可以用来存储多个数据字典使用键值对存储数据 2. 字典的定义 字典用{}定义键值对之间使用,分隔键和值之间使用:分隔 d {中…

DT浏览器有一些特点和优势,可能是人们选择使用的原因

DT浏览器有一些特点和优势&#xff0c;可能是人们选择使用的原因&#xff1a; - 好评如潮&#xff1a;DT浏览器在网络上获得了众多用户的好评&#xff0c;口碑良好。 - 使用微软搜索引擎技术&#xff1a;DT浏览器采用了微软的搜索引擎技术&#xff0c;在搜索内容上提供了国内…

Unity 实现心电图波形播放(需波形图图片)

实现 在Hierarchy 面板从2D Object 中新建一个Sprite&#xff0c;将波形图图片的赋给Sprite。 修改Sprite 的Sprite Renderer 组件中Draw Mode 为Tiled, 修改Sprite Renderer 的Size 即可实现波形图播放。 在Hierarchy 面板从2D Object 中新建一个Sprite Mask 并赋以遮罩图片…

【qt】标准型模型 下

标准型模型 一.前言二.预览数据1.获取表头2.获取数据项 三.保存文件1.文件对话框获取保存文件名2.用文件名初始化文件对象3.打开文件对象4.用文件对象初始化文本流5.写入数据 四.格式1.居右2.居中3.居左4.粗体 五.模型的信号1.解决粗体action问题2.状态栏显示信息 六.总结 一.前…

HarmonyOS鸿蒙应用开发——安装与配置

今天脑子又抽风&#xff0c;前端转完学后端之后&#xff0c;今天大周末早上醒来突然又想学鸿蒙了&#xff0c;刚好有个比赛需要用到鸿蒙&#xff0c;于是乎我就随便点开b站看了一下鸿蒙视频&#xff0c;然后马上来写这篇博客&#xff0c;后续我的鸿蒙的博客可能会跳着、不连续地…

【Apache Doris】周FAQ集锦:第 4 期

【Apache Doris】周FAQ集锦&#xff1a;第 4 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…

学AI绘图【300集SD新课】--Stable Diffusion教程

学AI绘图需要以下步骤&#xff1a; 明确目标和需求&#xff1a;首先明确设计图的目的&#xff0c;是用于展示算法流程、模型结构还是其他目的。选择合适的工具&#xff1a;根据需求选择合适的绘图工具&#xff0c;如Visio、PowerPoint、Adobe Illustrator等。绘制草图&#xf…

uni-app 微信 支付宝 小程序 使用 longpress 实现长按删除功能,非常简单 只需两步

1、先看效果 2、直接上代码 ui结构 <view class"bind" longpress"deleteImage" :data-index"index"><view class"bind_left">绑定设备</view><view class"bind_right"><view class"bind_t…

5.24学习记录

[FSCTF 2023]ez_php2 比较简单的pop链 <?php highlight_file(__file__); Class Rd{public $ending;public $cl;public $poc;public function __destruct(){echo "All matters have concluded";die($this->ending);}public function __call($name, $arg){for…