JAVAWEB--Mybatis03
Mybatis映射
什么是映射器
MyBatis的映射器就是用来解决这一问题,映射器其实是一个Interface接口,我们通过编写简单的映射器接口,就可以将我们之前在Dao中做的重复的,看起来比较低级的代码给替换掉。也就是说我们以后不用向之前那样写代码,而是直接调用映射器接口即可完成SQL的调用。我们可以理解为 这个映射器 底层使用了动态代理的方式将复杂的代码进行了处理,屏蔽了细节。--- 如同JPA的接口
创建domain
public class Employee{private Long id;private String username;private Integer age = 0;private Boolean sex;//...
}
创建接口映射器
创建实体类接口,我们一般给接口命名: XxxMapper ,如 EmployeeMapper ,跟EmployeeMapper.xml同名。
import java.util.List;public interface EmployeeMapper {int insert(Employee employee);int updateById(Employee employee);int deleteById(Long id);Employee selectById(Long id);List<Employee> selectAll();
}
创建SQL映射文件
SQL映射文件的namespace必须和 映射器接口的全限定名一直,这个非常重要,因为我们在调用映射器接口的时候,底层是通过该接口的 ==全限定名+方法名== 去匹配 SQL映射文件的==namespace+id==。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="org.test.mybatis._02_mapper.mapper.EmployeeMapper"><resultMap id="baseResultMap" type="org.test.mybatis._02_mapper.domain.Employee"><id column="id" property="id" /><result column="username" property="username"/><result column="age" property="age"/><result column="sex" property="sex"/></resultMap><select id="selectAll" resultMap="baseResultMap" >selectid,username,age,sexfrom employee</select>
</mapper>
注意:这里是另外一个Mapper,对应的是Employee,所以所有的 有用到实体类的地方都要使用Employee的全限定名。
再次强调:底层是通过映射器接口的 ==全限定名+方法名== 去匹配 SQL映射文件的==namespace+Id==,所以:
-
namespace 需要和 映射器接口的全限定名一致
-
sql的id必须和 映射器的 方法名一致。
这里暂时写了一个查询所有的方法,同学们自行完成其他的几个方法
注册Mapper
修改mybatis-config.xml文件,添加<mappers> , 注意修改成自己的路径
<mappers><mapper resource="org/test/mybatis/mapper/ProductMapper.xml"/><mapper resource="org/test/mybatis/mapper/EmployeeMapper.xml"/>
</mappers>
实现CRUD
@Test
public void selectAll() {try(SqlSession sqlSession = MyBatisUtil.openSession()){EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);employeeMapper.selectAll().forEach(e ->{System.out.println(e);});}}
写在最后:mybatis花了较多文章来写,因为其十分重要。后续将分享高级SQL的相关知识,笔者小,中,大厂均有面试经历,坚持每日分享JAVA全栈知识,希望能够和大家共同进步。
相关文章:
JAVAWEB--Mybatis03
Mybatis映射 什么是映射器 MyBatis的映射器就是用来解决这一问题,映射器其实是一个Interface接口,我们通过编写简单的映射器接口,就可以将我们之前在Dao中做的重复的,看起来比较低级的代码给替换掉。也就是说我们以后不用向之前那样写代码&…...
论文学习_Fuzz4All: Universal Fuzzing with Large Language Models
论文名称发表时间发表期刊期刊等级研究单位Fuzz4All: Universal Fuzzing with Large Language Models2024年arXiv-伊利诺伊大学 0.摘要 研究背景模糊测试再发现各种软件系统中的错误和漏洞方面取得了巨大的成功。以编程或形式语言作为输入的被测系统(SUTÿ…...
元数据相关资料整理 metadata
目录 定义和特点 关注点 流程 使用场景 元数据影响分析 元数据冷热度分析 元数据关联度分析 血缘分析 数据地图 元数据接口 相关产品的架构图 定义和特点 元数据(Metadata)是指关于数据的数据,或者说是描述数据的数据。它提供了一…...
【Android面试八股文】谈一谈你对http和https的关系理解
文章目录 HTTPHTTPSSSL/TLS协议HTTPS加密、解密流程HTTP 和 HTTPS 的关系具体的差异实际应用总结扩展阅读HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是用于在网络上进行通信的两种协议。 它们在很多方面是相似的,但关键的区别在于安全…...
Vue3 中 setup 函数与 script setup 用法总结
在 Vue3 中,setup 函数和 script setup 是两种新引入的编写组件的方式,它们都是 Composition API 的一部分。 setup 函数: setup 函数是一个新的组件选项,它作为在组件内使用 Composition API 的入口。在 setup 函数中,我们可以定…...
Springboot 开发之任务调度框架(一)Quartz 简介
一、引言 常见的定时任务框架有 Quartz、elastic-job、xxl-job等等,本文主要介绍 Spirng Boot 集成 Quartz 定时任务框架。 二、Quartz 简介 Quartz 是一个功能强大且灵活的开源作业调度库,广泛用于 Java 应用中。它允许开发者创建复杂的调度任务&…...
企业中面试算法岗时会问什么pytorch问题?看这篇就够了!
如果要面试深度学习相关的岗位,JD上一般会明确要求要熟悉pytorch或tensorflow框架,那么会一般问什么相关问题呢? 文章目录 一. 基础知识与概念1.1 PyTorch与TensorFlow的主要区别是什么? 1.2 解释一下PyTorch中的Tensor是什么&…...
【学习】程序员资源网址
1 书栈网 简介:书栈网是程序员互联网IT开源编程书籍、资源免费阅读的网站,在书栈网你可以找到很多书籍、笔记资源。在这里,你可以根据热门收藏和阅读查看大家都在看什么,也可以根据技术栈分类找到对应模块的编程资源,…...
【3D模型库】机械三维模型库整理
1 开拔网 简介:开拔网是中国较早的机械设计交流平台,广受行业内的各个大学,公司以及行业人士的欢迎。网站有非常丰富的3D模型,CAD图纸,以及各类热门软件的下载。同时我们也为行业搭建一个平台,提供各类设计…...
基于Python-CNN深度学习的物品识别
基于Python-CNN深度学习的物品识别 近年来,深度学习尤其是卷积神经网络(CNN)的快速发展,极大地推动了计算机视觉技术的进步。在物品识别领域,CNN凭借其强大的特征提取和学习能力,成为了主流的技术手段之一…...
Qt | 简单的使用 QStyle 类(风格也称为样式)
01、前言 者在 pro 文件中已添加了正确的 QT+=widgets 语句 02、基础样式 1、QStyle 类继承自 QObject,该类是一个抽像类。 2、QStyle 类描述了 GUI 的界面外观,Qt 的内置部件使用该类执行几乎所有的绘制,以确保 使这些部件看起来与本地部件完全相同。 3、Qt 内置了一系…...
Idea连接GitLab的过程以及创建在gitlab中创建用户和群组
上期讲述了如何部署GitLab以及修复bug,这期我们讲述,如何连接idea。 首先安装gitlab插件 下载安装idea上并重启 配置ssh免密登录 使用管理员打开命令行输入:ssh-keygen -t rsa -C xxxaaa.com 到用户目录下.ssh查看id_rsa.pub文件 打开复制…...
关于glibc-all-in-one下载libc2.35以上报错问题
./download libc版本 下载2.35时报错:原因是缺少解压工具zstd sudo apt-get install zstd 下载后重新输命令就可以了 附加xclibc命令 xclibc -x ./pwn ./libc-版本 ldd pwn文件 xclibc -c libc版本...
C语言之#define #if 预处理器指令
在 C 语言中,预处理器指令用于条件编译代码。你可以使用 #define 和 #if 指令来根据某些条件包含或排除代码块。以下是一个完整的例子,演示了如何使用 #define 和 #if 指令来控制代码的编译: #include <stdio.h>// 定义宏 MERGE_TYPE …...
modbus流量计数据解析(4个字节与float的换算)
通过modbus协议从流量计中读取数据后,需要将获得的字节数据合成float类型。以天信流量计为例: 如何将字节数据合并成float类型呢?这里总结了三种方法。 以温度值41 A0 00 00为例 目录 1、使用char*逐字节解析2、使用memcpy转换2、使用联合体…...
关于element-plus中el-select自定义标签及样式的问题
关于element-plus中el-select自定义标签及样式的问题 我这天天的都遇到各种坑,关于自定义,我直接复制粘贴代码都实现不了,研究了一下午,骂骂咧咧了一下午,服气了。官网代码实现不了,就只能 “ 曲线救国 ”…...
硕思logo设计师下载-2024官方最新版-logo制作软件安装包下载
硕思Logo设计师是一款操作灵活简单、功能强大的logo制作软件。可以通过简单的点击就可以为网站、博客、论坛和邮件创建专业的logo、条幅、按钮、标题、图标和签名等。 硕思logo设计师提供了很多精心设计的模板和丰富的资源,为更好的创建logo艺术作品…...
springboot和mybatis项目学习
#项目整体样貌 ##bean package com.example.demo.bean;public class informationBean {private int id;private String name;private String password;private String attchfile;public int getId() {return id;}public String getName() {return name;}public String getPas…...
simdjson 高性能JSON解析C++库
simdjson 是什么 simdjson 是一个用来解析JSON数据的 C 库,它使用常用的 SIMD 指令和微并行算法来每秒解析千兆字节的 JSON,在Velox, ClickHouse, Doris 中均有使用。 加载和解析 JSON documents 出于性能考虑,simdjson 需要一个末尾有几个…...
安卓Context上下文
目录 前言一、Context简介二、Application Context2.1 Application Context的创建过程2.2 Application Context的获取过程 三、Activity的Context创建过程四、Service的Context创建过程 前言 Context也就是上下文对象,是Android较为常用的类,但是对于Co…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...
