MyBatis快速入门

MyBatis快速入门

MyBatis简介

什么是MyBatis?

  • MyBatis 是一款优秀的持久层框架,用于简化JDBC开发
  • MyBatis本是Apache 的一个开源项目iBatis,2010年这个项目由apache softwarefoundation 迁移到了google code,并且改名为MyBatis 2013年11月迁移到Github
  • 官网: https://mybatis.org/mybatis-3/zh/index.html

持久层

  • 负责将数据到保存到数据库的那一层代码
  • JavaEE三层架构: 表现层、业务层、持久层

框架

  • 框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
  • 在框架的基础之上构建软件编写更加高效、规范、通用、可扩展

JDBC缺点

在这里插入图片描述

MyBatis 简化

在这里插入图片描述

MyBatis 快速入门

查询user表中所有数据

  1. 创建user表,添加数据
  2. 创建模块,导入坐标
  3. 编写MyBatis 核心配置文件–>替换连接信息解决硬编码问题
  4. 编写SQL映射文件–>统一管理sql语句,解决硬编码问题
  5. 编码

​ 1.定义POJ0类

​ 2.加载核心配置文件,获取 SglSessionFactory 对象

​ 3.获取 SqlSession 对象,执行 SQL语句

​ 4.释放资源

数据库修改代码如下:

create database mybatis;
use mybatis;drop table if exists tb_user;create table tb_user(id int primary key auto_increment;username varchar(20),password varchar(20),gender char(1),addr varchar(30)
);INSERT INTO tb_user VALUES (1,'zhangsan','123','男','北京');
INSERT INTO tb_user VALUES (2,'李四','234','女','天津');
INSERT INTO tb_user VALUES (3,'王五','11','男','西安');

解决SQL映射文件的警告提示

  • 产生原因 : ldea和数据库没有建立连接,不识别表信息
  • 解决方式 : 在Idea中配置MySQL数据库连接

在这里插入图片描述

Mapper 代理开发

  • 目的

​ 1.解决原生方式中的硬编码

​ 2.简化后期执行SQL

在这里插入图片描述

MyBatis 核心配置文件详解

MyBatis核心配置文件的顶层结构如下:

在这里插入图片描述

配置文件完成增删改查

要完成的功能列表清单:
1.查询

  • ​ 所有数据

  • ​ 查看详情

  • ​ 条件查询

2.添加

3.修改

  • 修改全部字段

  • 修改动态字段

4.删除

  • 删除一个
  • 批量删除

数据库代码如下:

在这里插入图片描述

准备环境:

  1. 数据库表tb_brand
  2. 实体类Brand
  3. 测试用例
  4. 安装MyBatisX插件

MyBatisX插件

Mybatisx 是一款基于IDEA的快速开发插件,为效率而生。

主要功能:

​ XML和接口方法相互跳转

​ 根据接口方法生成statement

安装:

在这里插入图片描述

总结:

实体类属性名和数据库表列名不一致,不能自动封装数据

(1)起别名:在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样1*可以定义片段,提升复用性

(2)resultMap : 定义完成不一致的属性名和列名的映射

参数占位符:

(1)#{} : 执行SQL时,会将#占位符替换为?,将来自动设置参数值

(2)${} : 拼SQL,会存在sQL注入问题

parameterType:

(1)用于设置参数类型,该参数可以省略

SQL语句中特殊字符处理:

(1)转义字符

(2)<![CDATA[内容]I>

SQL语句设置多个参数有几种方式?

(1)散装参数:需要使用@Param(“SQL中的参数占位符名称”)

(2)实体类封装参数:只需要保证SQL中的参数名和实体类属性名对应上,即可设置成功

(3)map集合:只需要保证SQL中的参数名和map集合的键的名称对应上,即可设置成功

动态SQL:

if:用于判断参数是否有值,使用test属性进行条件判断

​ 存在的问题:第一个条件不需要逻辑运算符

​ 解决方案:

​ (1)使用恒等式让所有条件格式都一样

​ (2)where>标签替换 where 关键字

MyBatis 参数传递

MyBatis 接口方法中可以接收各种各样的参数,MyBatis底层对于这些参数进行不同的封装处理方式

单个参数:

  1. POJO类型:
  2. Map集合:
  3. Collection:
  4. List:
  5. Array:
  6. 其他类型:

多个参数:

在这里插入图片描述

MyBatis提供了 ParamNameResolver 类来进行参数封装

注解完成增删改查

使用注解开发会比配置文件开发更加方便

在这里插入图片描述

  • 查询: @Select
  • 添加: @Insert
  • 修改: @Update
  • 删除: @Delete

提示:

​ 注解完成简单功能

​ 配置文件完成复杂功能

在这里插入图片描述

MyBatis提供了 ParamNameResolver 类来进行参数封装

注解完成增删改查

使用注解开发会比配置文件开发更加方便

在这里插入图片描述

  • 查询: @Select
  • 添加: @Insert
  • 修改: @Update
  • 删除: @Delete

提示:

​ 注解完成简单功能

​ 配置文件完成复杂功能

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

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

相关文章

如何推导椭圆的参数方程

椭圆基础知识 椭圆定义&#xff1a;椭圆上任意一点到两焦点的距离之和为2a 如何由椭圆定义推出椭圆标准方程呢&#xff1f; 如上图所示。 由定义可得已知条件为 ∣ M C 1 ∣ ∣ M C 2 ∣ 2 a 当 M 落在顶点 P 上时&#xff0c;可得另一已知条件 a 2 − b 2 c 2 当有了已…

unity行为决策树实战详解

一、行为决策树的概念 行为决策树是一种用于游戏AI的决策模型&#xff0c;它将游戏AI的行为分解为一系列的决策节点&#xff0c;并通过节点之间的连接关系来描述游戏AI的行为逻辑。在行为决策树中&#xff0c;每个节点都代表一个行为或决策&#xff0c;例如移动、攻击、逃跑等…

SpringBoot3 整合Prometheus + Grafana

通过Prometheus Grafana对线上应用进行观测、监控、预警… 健康状况【组件状态、存活状态】Health运行指标【cpu、内存、垃圾回收、吞吐量、响应成功率…】Metrics… 1. SpringBoot Actuator 1. 基本使用 1. 场景引入 <dependency><groupId>org.springframew…

Docker Compose 使用方法

目录 前言 安装 Docker Compose Ubuntu 安装与更新 Red Hat 安装与更新 验证是否安装 Docker Compose 创建 docker-compose.yml 文件 创建一个MySQL 与 tomcat 示例 使用Docker Compose启动服务 前言 Docker Compose 是一个工具&#xff0c;旨在帮助定义和 共享多容器…

CADintosh X for mac CAD绘图软件2D CAD 程序 兼容 M1

CADintosh X for Mac是一个功能强大的2D CAD绘图程序&#xff0c;专为Mac用户设计。它由Lemke Software开发&#xff0c;提供了一套丰富的工具和功能&#xff0c;使用户能够轻松创建高质量的技术图纸&#xff0c;平面图和设计。 CADintosh X for Mac具有直观的用户界面&#x…

【架构】Java 系统架构演进的思考

文章目录 1 前言2 单体应用架构3 垂直应用架构4 分布式架构5 SOA 架构6 微服务云架构7 总结 1 前言 随着移动互联的发展&#xff0c;网站、H5、移动端的应用规模也不断扩大&#xff0c;不管是应用的数量还是质量都得到了指数级的提升。开发者的数量与日俱增&#xff0c;应用的…

SpringMVC -- REST风格开发,RESTful快速开发、RESTful注解开发

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 REST 一、REST简介1.1REST风格简介 二、RESTful入门案例2.…

笛卡尔积文本的python处理

一 背景 大致背景是这样的&#xff0c;笔者在做数据处理时&#xff0c;遇到一个棘手的事情&#xff0c;主要遇到如下字符串拼接变动的场景&#xff0c;场景主要为&#xff0c;需要考虑如下两张表的组合&#xff1a; 表1-原始文本样式 序号文本样式1A变量B2A变量C3A变量CD4E变…

ant.design 组件库中的 Tree 组件实现可搜索的树: React+and+ts

ant.design 组件库中的 Tree 组件实现可搜索的树&#xff0c;在这里我会详细介绍每个方法&#xff0c;以及容易踩坑的点。 效果图&#xff1a; 首先是要导入的文件 // React 自带的属性 import React, { useMemo, useState } from react; // antd 组件库中的&#xff0c;输入…

如何使用 reqwest 包

GET 请求 向连接发起一个 GET 请求&#xff1a;https://hacker-news.firebaseio.com/v0/topstories.json&#xff0c;并解析返回的内容。 尝试发起请求 因为是 GET 请求&#xff0c;可以先在浏览器中进行查看&#xff0c;浏览器可以正常显示一个 id 列表&#xff0c;如下所示…

《Linux从练气到飞升》No.08 Linux的版本管理工具 git

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

复现沙箱逃逸漏洞

什么是沙箱(sandbox) 在计算机安全性方面&#xff0c;沙箱&#xff08;沙盒、sanbox&#xff09;是分离运行程序的安全机制&#xff0c;提供一个隔离环境以运行程序。通常情况下&#xff0c;在沙箱环境下运行的程序访问计算机资源会受到限制或者禁止&#xff0c;资源包括内存、…

Visual ChatGPT:Microsoft ChatGPT 和 VFM 相结合

推荐&#xff1a;使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 什么是Visual ChatGPT&#xff1f; Visual ChatGPT 是一个包含 Visual Foundation 模型 &#xff08;VFM&#xff09; 的系统&#xff0c;可帮助 ChatGPT 更好地理解、生成和编辑视觉信息。VFM 能够指…

C++ 派生类成员的标识与访问——作用域分辨符

在派生类中&#xff0c;成员可以按访问属性分为以下四种&#xff1a; &#xff08;1&#xff09;不可访问成员。这是从基类私有成员继承下来的&#xff0c;派生类或是建立派生类对象的模块都无法访问到它们&#xff0c;如果从派生类继续派生新类&#xff0c;也是无法访问的。 &…

Python魔法解析:探索变量类型的丰富多彩世界!

在Python这个魔法般的编程语言中&#xff0c;变量是连接你与计算机世界的神奇桥梁。然而&#xff0c;这些变量并不是单一的&#xff0c;它们有着丰富多彩的类型。无论你是刚刚踏入编程的大门&#xff0c;还是想要深入了解Python的高级特性&#xff0c;本篇博客将带你探索变量的…

pycharm打开terminal报错

Pycharm打开终端报错如何解决&#xff1f;估计是终端启动conda不顺利&#xff0c;需要重新设置路径。参考以下文章的做法即可。 Windows下Pycharm中Terminal无法进入conda环境和Python Console 不能使用 给pycharm中Terminal 添加新的shell&#xff0c;才可以使用conda环境 W…

黑马大数据学习笔记4-Hive部署和基本操作

目录 思考规划安装MySQL数据库修改root用户密码配置Hadoop下载解压Hive提供MySQL Driver包配置Hive初始化元数据库启动Hive&#xff08;使用Hadoop用户&#xff09;Hive体验HiveServer2HiveServer2服务启动 Beeline p48、51、52 https://www.bilibili.com/video/BV1WY4y197g7/?…

Uni-Dock:GPU 分子对接使用教程

github文件下载&#xff1a; git clone https://github.com/dptech-corp/Uni-Dock.git cd Uni-Dock/example/screening_test wget https://github.com/dptech-corp/Uni-Dock/releases/download/1.0.0/unidock 将此文件加入到全局变量中 chmod x unidock sudo mv unidock /…

物联网潜在的巨大价值在于大数据分析

物联网潜在的巨大价值在于大数据分析 从数据里去挖掘市场或者用户的精准需求。 往小的说&#xff0c;后台可以统计用户家里各各插座一年甚至更久的用电情况&#xff0c;这些数据也可以通过app或者小程序展现给用户。 用户可以很直观看到自己一年的用电情况&#xff0c;哪个家…