当前位置: 首页 > news >正文

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的映射器就是用来解决这一问题&#xff0c;映射器其实是一个Interface接口,我们通过编写简单的映射器接口&#xff0c;就可以将我们之前在Dao中做的重复的&#xff0c;看起来比较低级的代码给替换掉。也就是说我们以后不用向之前那样写代码&…...

论文学习_Fuzz4All: Universal Fuzzing with Large Language Models

论文名称发表时间发表期刊期刊等级研究单位Fuzz4All: Universal Fuzzing with Large Language Models2024年arXiv-伊利诺伊大学 0.摘要 研究背景模糊测试再发现各种软件系统中的错误和漏洞方面取得了巨大的成功。以编程或形式语言作为输入的被测系统&#xff08;SUT&#xff…...

元数据相关资料整理 metadata

目录 定义和特点 关注点 流程 使用场景 元数据影响分析 元数据冷热度分析 元数据关联度分析 血缘分析 数据地图 元数据接口 相关产品的架构图 定义和特点 元数据&#xff08;Metadata&#xff09;是指关于数据的数据&#xff0c;或者说是描述数据的数据。它提供了一…...

【Android面试八股文】谈一谈你对http和https的关系理解

文章目录 HTTPHTTPSSSL/TLS协议HTTPS加密、解密流程HTTP 和 HTTPS 的关系具体的差异实际应用总结扩展阅读HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是用于在网络上进行通信的两种协议。 它们在很多方面是相似的,但关键的区别在于安全…...

Vue3 中 setup 函数与 script setup 用法总结

在 Vue3 中&#xff0c;setup 函数和 script setup 是两种新引入的编写组件的方式&#xff0c;它们都是 Composition API 的一部分。 setup 函数: setup 函数是一个新的组件选项&#xff0c;它作为在组件内使用 Composition API 的入口。在 setup 函数中&#xff0c;我们可以定…...

Springboot 开发之任务调度框架(一)Quartz 简介

一、引言 常见的定时任务框架有 Quartz、elastic-job、xxl-job等等&#xff0c;本文主要介绍 Spirng Boot 集成 Quartz 定时任务框架。 二、Quartz 简介 Quartz 是一个功能强大且灵活的开源作业调度库&#xff0c;广泛用于 Java 应用中。它允许开发者创建复杂的调度任务&…...

企业中面试算法岗时会问什么pytorch问题?看这篇就够了!

如果要面试深度学习相关的岗位&#xff0c;JD上一般会明确要求要熟悉pytorch或tensorflow框架&#xff0c;那么会一般问什么相关问题呢&#xff1f; 文章目录 一. 基础知识与概念1.1 PyTorch与TensorFlow的主要区别是什么&#xff1f; 1.2 解释一下PyTorch中的Tensor是什么&…...

【学习】程序员资源网址

1 书栈网 简介&#xff1a;书栈网是程序员互联网IT开源编程书籍、资源免费阅读的网站&#xff0c;在书栈网你可以找到很多书籍、笔记资源。在这里&#xff0c;你可以根据热门收藏和阅读查看大家都在看什么&#xff0c;也可以根据技术栈分类找到对应模块的编程资源&#xff0c;…...

【3D模型库】机械三维模型库整理

1 开拔网 简介&#xff1a;开拔网是中国较早的机械设计交流平台&#xff0c;广受行业内的各个大学&#xff0c;公司以及行业人士的欢迎。网站有非常丰富的3D模型&#xff0c;CAD图纸&#xff0c;以及各类热门软件的下载。同时我们也为行业搭建一个平台&#xff0c;提供各类设计…...

基于Python-CNN深度学习的物品识别

基于Python-CNN深度学习的物品识别 近年来&#xff0c;深度学习尤其是卷积神经网络&#xff08;CNN&#xff09;的快速发展&#xff0c;极大地推动了计算机视觉技术的进步。在物品识别领域&#xff0c;CNN凭借其强大的特征提取和学习能力&#xff0c;成为了主流的技术手段之一…...

Qt | 简单的使用 QStyle 类(风格也称为样式)

01、前言 者在 pro 文件中已添加了正确的 QT+=widgets 语句 02、基础样式 1、QStyle 类继承自 QObject,该类是一个抽像类。 2、QStyle 类描述了 GUI 的界面外观,Qt 的内置部件使用该类执行几乎所有的绘制,以确保 使这些部件看起来与本地部件完全相同。 3、Qt 内置了一系…...

Idea连接GitLab的过程以及创建在gitlab中创建用户和群组

上期讲述了如何部署GitLab以及修复bug&#xff0c;这期我们讲述&#xff0c;如何连接idea。 首先安装gitlab插件 下载安装idea上并重启 配置ssh免密登录 使用管理员打开命令行输入&#xff1a;ssh-keygen -t rsa -C xxxaaa.com 到用户目录下.ssh查看id_rsa.pub文件 打开复制…...

关于glibc-all-in-one下载libc2.35以上报错问题

./download libc版本 下载2.35时报错&#xff1a;原因是缺少解压工具zstd sudo apt-get install zstd 下载后重新输命令就可以了 附加xclibc命令 xclibc -x ./pwn ./libc-版本 ldd pwn文件 xclibc -c libc版本...

C语言之#define #if 预处理器指令

在 C 语言中&#xff0c;预处理器指令用于条件编译代码。你可以使用 #define 和 #if 指令来根据某些条件包含或排除代码块。以下是一个完整的例子&#xff0c;演示了如何使用 #define 和 #if 指令来控制代码的编译&#xff1a; #include <stdio.h>// 定义宏 MERGE_TYPE …...

modbus流量计数据解析(4个字节与float的换算)

通过modbus协议从流量计中读取数据后&#xff0c;需要将获得的字节数据合成float类型。以天信流量计为例&#xff1a; 如何将字节数据合并成float类型呢&#xff1f;这里总结了三种方法。 以温度值41 A0 00 00为例 目录 1、使用char*逐字节解析2、使用memcpy转换2、使用联合体…...

关于element-plus中el-select自定义标签及样式的问题

关于element-plus中el-select自定义标签及样式的问题 我这天天的都遇到各种坑&#xff0c;关于自定义&#xff0c;我直接复制粘贴代码都实现不了&#xff0c;研究了一下午&#xff0c;骂骂咧咧了一下午&#xff0c;服气了。官网代码实现不了&#xff0c;就只能 “ 曲线救国 ”…...

硕思logo设计师下载-2024官方最新版-logo制作软件安装包下载

硕思​​Logo设计​​师是一款操作灵活简单、功能强大的logo制作​​软件​​。可以通过简单的点击就可以为网站、博客、论坛和邮件创建专业的logo、条幅、按钮、标题、图标和签名等。 硕思logo设计师提供了很多精心设计的模板和丰富的资源&#xff0c;为更好的创建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 库&#xff0c;它使用常用的 SIMD 指令和微并行算法来每秒解析千兆字节的 JSON&#xff0c;在Velox, ClickHouse, Doris 中均有使用。 加载和解析 JSON documents 出于性能考虑&#xff0c;simdjson 需要一个末尾有几个…...

安卓Context上下文

目录 前言一、Context简介二、Application Context2.1 Application Context的创建过程2.2 Application Context的获取过程 三、Activity的Context创建过程四、Service的Context创建过程 前言 Context也就是上下文对象&#xff0c;是Android较为常用的类&#xff0c;但是对于Co…...

ARM Jazelle技术:硬件加速Java字节码执行详解

1. ARM Jazelle技术概述Jazelle技术是ARM架构中用于硬件加速Java字节码执行的关键扩展&#xff0c;最早出现在ARMv5TE架构中。这项技术通过在处理器内部集成Java字节码执行单元&#xff0c;实现了Java虚拟机(JVM)功能的硬件化。与传统的软件解释器相比&#xff0c;Jazelle能够将…...

轻量级Web框架Oli:从核心原理到生产实践

1. 项目概述&#xff1a;一个轻量级、可扩展的Web应用框架最近在梳理手头几个小项目的技术栈时&#xff0c;我又把amrit110/oli这个仓库翻了出来。这是一个在GitHub上由开发者amrit110创建并维护的名为oli的项目。乍一看标题&#xff0c;你可能会有点懵&#xff0c;oli是什么&a…...

5分钟学会创建专业交通网络可视化地图

5分钟学会创建专业交通网络可视化地图 【免费下载链接】transit-map The server and client used in transit map simulations like swisstrains.ch 项目地址: https://gitcode.com/gh_mirrors/tr/transit-map 你想在网页上展示动态的公共交通网络吗&#xff1f;Transit…...

Linux光标主题管理工具x-cursor-help:从原理到实战

1. 项目概述&#xff1a;一个被低估的鼠标光标辅助工具如果你在Linux桌面环境下工作&#xff0c;尤其是使用像GNOME、KDE Plasma这类现代化的桌面环境&#xff0c;你可能会遇到一个不大不小但很恼人的问题&#xff1a;鼠标光标主题的安装和管理。从网上下载了一个漂亮的.tar.gz…...

从刺绣到互动:用导电绣线与微控制器打造光控可穿戴艺术

1. 项目概述与核心价值最近在捣鼓一个特别有意思的玩意儿&#xff1a;把会发光的电子元件“绣”到衣服上&#xff0c;让它不仅能穿&#xff0c;还能跟你互动。这个光控发光琵琶鱼刺绣项目&#xff0c;就是一个绝佳的入门案例。它完美地融合了传统手工艺&#xff08;刺绣&#x…...

别再只盯着图片了!用3DCNN处理视频动作识别,从原理到代码实战(PyTorch版)

3DCNN实战&#xff1a;从视频动作识别到PyTorch代码实现 当监控摄像头捕捉到一场突如其来的争执&#xff0c;或是体育赛事中运动员的关键动作&#xff0c;传统图像识别技术往往力不从心。这些场景中的信息不仅存在于每一帧画面里&#xff0c;更隐藏在帧与帧之间的动态变化中——…...

PPO算法终极实战指南:基于PyTorch的强化学习完整解决方案

PPO算法终极实战指南&#xff1a;基于PyTorch的强化学习完整解决方案 【免费下载链接】PPO-PyTorch Minimal implementation of clipped objective Proximal Policy Optimization (PPO) in PyTorch 项目地址: https://gitcode.com/gh_mirrors/pp/PPO-PyTorch PPO-PyTorc…...

用GeoDa给北京二手房做个体检:手把手教你计算莫兰指数,看看你家房价被谁‘传染’了

北京二手房价格的空间密码&#xff1a;用GeoDa解锁房价背后的聚集效应 北京的二手房市场总是充满话题性——为什么相邻的两个小区价格能差出两万&#xff1f;为什么某些区域的房价会集体"跳涨"&#xff1f;这些现象背后&#xff0c;往往隐藏着空间自相关的秘密。今天…...

如何快速掌握NCBI基因组批量下载:面向生物信息学新手的完整实战指南

如何快速掌握NCBI基因组批量下载&#xff1a;面向生物信息学新手的完整实战指南 【免费下载链接】ncbi-genome-download Scripts to download genomes from the NCBI FTP servers 项目地址: https://gitcode.com/gh_mirrors/nc/ncbi-genome-download NCBI基因组数据批量…...

【百度AI】从API调用到场景落地:车牌识别技术全解析

1. 车牌识别技术入门指南 第一次接触车牌识别技术时&#xff0c;我也被各种专业术语搞得一头雾水。简单来说&#xff0c;车牌识别就像给电脑装了一双"火眼金睛"&#xff0c;让它能自动从照片或视频中找出车牌并读出上面的文字。这项技术现在已经深入到我们生活的方方…...