学习进行到了第十七天(2024.8.5)
1.Mybatis的定义
数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。例如,文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。其封装性低于 Hibernate,但性能优秀、小巧、简单易学、应用广泛。ORM(Object Relational Mapping,对象关系映射)是一种数据持久化技术,它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过 JavaBean 对象去操作数据库表中的数据。MyBatis 的主要思想是将程序中的大量 SQL 语句剥离出来,使用 XML 文件或注解的方式实现 SQL 的灵活配置,将 SQL 语句与程序代码分离,在不修改程序代码的情况下,直接在配置文件中修改 SQL 语句。MyBatis 与其它持久性框架最大的不同是,MyBatis 强调使用 SQL,而其它框架(例如 Hibernate)通常使用自定义查询语言,即 HQL(Hibernate查询语言)或 EJB QL(Enterprise JavaBeans查询语言)
2.搭建Mybatis
注入依赖:
<dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.6</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><version>2.6.6</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.14</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version></dependency></dependencies>
3.配置数据源
配置好数据源后,后端和数据库之间就建立起了联系
以下是配置数据源的代码:
//配置数据源
spring:datasource:username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/easydata
//接收到mapper请求后,程序会去mapper文件夹下寻找xml文件
mybatis:mapper-locations: classpath:mapper/*.xml
//打印debug日志
logging:level:com.easy.dao: debug
4.增删改查操作:
1.创建一个部门表(department)

2.在编译工具(idea,ecilipse)中,在bean包下创建一个Department的实体类:
public class Department {private int id;private String code;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Department [id=" + id + ", code=" + code + ", name=" + name + "]";}}
3.在dao包下创建一个接口:
package com.easy.dao;import org.apache.ibatis.annotations.Mapper;import com.easy.bean.Department;@Mapper
public interface IDepartmentDao {int addDepartment(Department dep);int delDepartment(int id);int editDepartment(Department dep);Department selectDepartment(int id);
}
4.在resources文件夹下创建一个mapper文件夹,然后创建一个对应department表的xml文件:
insert:增
delete:删
update:改
select:查
<?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="com.easy.dao.IDepartmentDao"><insert id="addDepartment">insert into department(code,name) value(#{code},#{name})
</insert><delete id="delDepartment">delete from department where id=#{id}
</delete><update id="editDepartment">update department set code=#{code},name=#{name} where id=#{id}
</update><select id="selectDepartment" resultType="com.easy.bean.Department">select code,name from department where id=#{id}
</select></mapper>
5.在controller包下创建一个Controller类:
这里我没有把导入包这部分的代码贴到下面,请注意!!!
@RestController
public class EasyDepController {@AutowiredIDepartmentDao dao;@PostMapping("adddept")public String addDepartment(Department dep) {dao.addDepartment(dep);return "add 成功";}@DeleteMapping("deletedept/{id}")public String delDepartment(@PathVariable int id){dao.delDepartment(id);return "delete 成功";}@PutMapping("updatedept")public String editDepartment(Department dep) {dao.editDepartment(dep);return "update 成功";}@GetMapping("selectdept/{id}")public Department selectDepartment(@PathVariable int id) {return dao.selectDepartment(id); }
}
这样就实现了前后端之间的交互
5.增删改查中要注意的点
$和#的区别:
#是占位符,会先占位,可以有效防止SQL注入(SQL注入就是SQL语句的结果被其他语句影响,造成查询结果错误的结果)
$会被程序识别为字符串,容易被SQL注入

相关文章:
学习进行到了第十七天(2024.8.5)
1.Mybatis的定义 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。例如,文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。MyBatis 支持定制化 SQL、存储过程以及高级映射,可以…...
【Nuxt】Layout 布局和渲染模式
NuxtLayout app.vue <NuxtLayout><NuxtPage/></NuxtLayout>然后默认的布局 需要 写在 ~/layouts/default.vue 下面,其他自定义的布局也在写在 layouts 目录下。 default.vue <template><div class"app-container"><d…...
C:指针学习(1)-学习笔记
目录 前言: 知识回顾: 1、const 1.1 const修饰普通变量 1.2 const修饰指针变量 1.3 总结: 2、指针运算 2.1 指针-整数 2.2 指针-指针 2.3 指针的关系运算 3、指针的使用 结语: 前言: 距离上一次更新关于初…...
【LVS】负载均衡之NAT模式
一、LVS概念 LVS(Linux Virtual Server)是一个基于Linux操作系统的虚拟服务器技术,用于实现负载均衡和高可用性。LVS通过将客户端的请求分发到多台后端服务器上,从而提高整体服务的处理能力和可靠性。 二、LVS优势 高性能&…...
ASP.NET Core 基础 - 入门实例
一. 下载 1. 下载vs2022 Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 学生,个人开发者选择社区版就行,免费的. 安装程序一直下一步下一步就行,别忘了选择安装位置,如果都放在C盘的话,就太大了. 2. 选择工作负荷 准备工作完成 二. 创建新项目 三…...
机器人主板维修|ABB机械手主板元器件故障
【ABB机器人电路板故障原因诊断】 针对上述故障现象,我们需要对ABB机器人IO板进行详细的故障诊断。以下是一些可能的故障原因: 1. 元器件老化或损坏:ABB机械手安全面板上的元器件在长期使用过程中可能出现老化、损坏或接触不良等问题…...
大数据Flink(一百零六):什么是阿里云实时计算Flink版
文章目录 什么是阿里云实时计算Flink版 一、产品概述 二、产品架构 三、产品优势 什么是阿里云实时计算Flink版 阿里云实时计算Flink版是一套基于Apache Flink构建的⼀站式实时大数据分析平台,提供端到端亚秒级实时数据分析能力,并通过标准SQL降低业…...
ERCOT中的专业术语解释
在ERCOT中,ECRSM 代表的是 “Emergency Contingency Resource Supplementary Market”。这个术语涉及到紧急备用资源市场,用于应对电力需求或供应的紧急情况。在ERCOT电网中,当系统面临极端情况或资源不足时,ECRSM 可以帮助确保电…...
Python酷库之旅-第三方库Pandas(069)
目录 一、用法精讲 276、pandas.Series.dt.is_quarter_start属性 276-1、语法 276-2、参数 276-3、功能 276-4、返回值 276-5、说明 276-6、用法 276-6-1、数据准备 276-6-2、代码示例 276-6-3、结果输出 277、pandas.Series.dt.is_quarter_end属性 277-1、语法 …...
基于hutools的国密SM2、3、4
文章目录 前言一. 代码 前言 最近还要深度研究hutools底层实现,一定要搞透澈,本章将会是持续更新 参考资料: Java代码实现SM2算法以及注意点总结(踩坑记录) 国密算法工具Smutil 一. 代码 import cn.hutool.core.uti…...
进程的等待(非阻塞轮询+阻塞)和替换控制详解
引言 在Linux系统中,进程管理是核心功能之一。理解进程的创建、执行和终止是系统编程中的基础。本文将深入探讨Linux中的进程控制机制,包括进程的生命周期、父子进程的交互、以及进程状态的管理 1. 进程创建:fork()函数 在Linux操作系统中…...
24/8/6算法笔记 支持向量机
支持向量机(Support Vector Machine, SVM)是一种监督学习算法,主要用于分类和回归任务。它基于统计学习理论中的结构风险最小化原理,通过找到数据点之间的最优边界来实现模型的泛化能力。 import numpy as np import matplotlib.…...
测试用例等级划分
基本等级(Level 1或P0):这类用例设计系统基本功能,执行失败会导致多处重要功能无法运行。例如,单表维护中的增加功能、最平常的业务使用等,这些是发生概率较高的功能用例。这类用例在每一…...
打造Perl编译器前端:自定义语言处理的魔法
打造Perl编译器前端:自定义语言处理的魔法 Perl是一种强大而灵活的编程语言,它提供了丰富的文本处理能力,使其成为实现自定义编译器前端的理想选择。编译器前端通常负责源代码的词法分析、语法分析和语义分析。本文将详细介绍如何在Perl中实…...
Visual Studio 和 Visual Studio Code 的比较与应用偏向
Visual Studio 和 Visual Studio Code(VS Code)是微软开发的两个不同的开发工具,各有特点和优势,适用于不同的开发需求。下面是详细的比较和在实际应用中的偏向。 功能和特性 Visual Studio 完整的IDE:支持多种编程…...
Python打开JSON/CSV文件的正确方式(针对UnicodeDecodeError)
前言 我们在使用python的过程中,经常需要它完成一些数据处理的工作,其中尤以json/csv文件为常见。今天,博主针对UnicodeDecodeError异常进行试验,因为这个是新手最容易犯错的地方。 Q:如何应对 UnicodeDecodeError 读…...
深入解析TikTok广告开户白名单:规范与申请指南
在TikTok的广告平台上,白名单(Whitelist)系统作为一种重要的审核和管理机制,对广告账户的开设与运营起着至关重要的作用。 一、什么是TikTok广告开户白名单? 白名单的定义 白名单是一种预先批准的账户或广告内容列表…...
CSS技巧专栏:一日一例 19 -纯CSS实现超酷的水晶按钮特效
CSS技巧专栏:一日一例 19 -纯CSS实现超酷的水晶按钮特效 今天给大家分享一个纯CSS按钮水晶按钮,效果很赞,希望对大家有所帮助。 本例图片 案例分析 这个按钮看起来效果很赞,我们分析一下它由几个层组成: 1. 按钮本体:渐变层+按钮文字 2.用before伪元素实现高光层+内…...
ArcGIS基础:基于数据图框实现地理坐标系下不同投影转换的可视化效果
ArcGIS默认以第一次加载数据的坐标系决定整个工程的坐标系 可以通过改变数据框的投影坐标系,对地理数据进行快速投影变换,以可视化展示不同投影坐标系下的地理数据形状和形态 对数据框坐标系的改变,只是针对的显示参数的改变,并…...
⚡4. Kubernetes核心资源管理操作实战
文章目录 kubectl [command] [TYPE] [NAME] [flags]kubectl run 资源名称 --image镜像名称 --port端口号kubectl create -f 配置文件名称.yaml kubectl apply -f 配置文件名称.yaml快速编写yaml文件,通过命令导出新的yaml文件Kubernetes常见资源类型和缩写 kubectl …...
OneDrive深度卸载与系统优化指南
OneDrive深度卸载与系统优化指南 【免费下载链接】OneDrive-Uninstaller Batch script to completely uninstall OneDrive in Windows 10 项目地址: https://gitcode.com/gh_mirrors/on/OneDrive-Uninstaller 一、问题引入:OneDrive在系统中的隐性影响 在现…...
一键部署清音听真:Qwen3-ASR-1.7B高精度语音识别系统开箱即用
一键部署清音听真:Qwen3-ASR-1.7B高精度语音识别系统开箱即用 1. 语音识别技术的新突破 在数字化办公日益普及的今天,语音识别技术已成为提升工作效率的重要工具。然而,传统语音识别系统在面对复杂场景时往往捉襟见肘——背景噪音、专业术语…...
Salsa错误处理最佳实践:利用累加器优雅报告诊断信息
Salsa错误处理最佳实践:利用累加器优雅报告诊断信息 【免费下载链接】salsa A generic framework for on-demand, incrementalized computation. Inspired by adapton, glimmer, and rustcs query system. 项目地址: https://gitcode.com/gh_mirrors/sa/salsa …...
终极算法面试指南:Tech-Interview-Cheat-Sheet助你轻松展示算法思维
终极算法面试指南:Tech-Interview-Cheat-Sheet助你轻松展示算法思维 【免费下载链接】Tech-Interview-Cheat-Sheet Studying for a tech interview sucks. Heres an open source cheat sheet to help 项目地址: https://gitcode.com/gh_mirrors/te/Tech-Interview…...
Testsigma企业级自动化测试平台架构设计与高可用部署指南
Testsigma企业级自动化测试平台架构设计与高可用部署指南 【免费下载链接】testsigma Testsigma is an agentic test automation platform powered by AI-coworkers that work alongside QA teams to simplify testing, accelerate releases and improve quality across web, m…...
OpenClaw浏览器自动化:gemma-3-12b-it操控Chrome完成数据采集
OpenClaw浏览器自动化:gemma-3-12b-it操控Chrome完成数据采集 1. 为什么需要AI驱动的浏览器自动化? 去年整理行业报告时,我曾连续三天手动复制粘贴上百个网页表格数据。这种重复劳动不仅效率低下,还容易出错。传统爬虫方案虽然能…...
Gemini + Claude写论文已经无人能敌了
写论文最耗精力的不是动笔,而是前期文献整理、框架搭建和后期反复修改。这套方法的核心是让不同AI各取所长,加速机械性工作,把时间留给真正需要思考的部分。工具分工:Gemini擅长信息检索和批量处理,适合前期文献梳理&a…...
GPEN图像肖像增强镜像实测:5分钟修复老照片,效果惊艳到哭
GPEN图像肖像增强镜像实测:5分钟修复老照片,效果惊艳到哭 1. 老照片修复的新选择 上周在整理家族相册时,我发现了一叠泛黄的老照片。这些珍贵的记忆因为年代久远,已经变得模糊不清,布满划痕和噪点。传统的修图软件要…...
你的热电偶读数总跳?可能是50/60Hz工频干扰!STM32驱动MAX31856的滤波配置避坑指南
热电偶读数跳变?50/60Hz工频干扰的精准诊断与MAX31856滤波实战 工业现场的温度测量工程师们,是否经常遇到这样的困扰:明明硬件连接正确,STM32与MAX31856的驱动代码也按手册编写,但热电偶读数却像心电图一样上下跳动&am…...
Jimeng AI Studio(Z-Image Edition)与Python爬虫数据结合:自动化图像生成实战
Jimeng AI Studio(Z-Image Edition)与Python爬虫数据结合:自动化图像生成实战 1. 引言 你有没有遇到过这样的情况:每天需要为大量新闻资讯、产品信息或社交媒体内容配图,但手动设计耗时耗力,外包成本又太…...
