【MyBatis】初学MyBatis
目录
- MyBatis 是什么?
- MyBatis框架搭建
- 1.添加MyBatis框架
- 2.设置MyBatis配置
- 数据库的相关链接信息
- xml 保存路径和命名格式
- 根据MyBatis写法完成数据库的操作
- MyBatis插件
- MyBatis传递参数查询
- ${} 和 #{} 有什么区别?
- SQL注入问题
- MyBatis like查询
- MyBatis多表查询
- MyBatis删除操作
- MyBatis修改操作
- MyBatis添加操作
MyBatis 是什么?
MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的记录。
MyBatis ORM(对象关系映射框架) 实现更加简单的操作数据库的框架。它的底层是基于JDBC。
MyBatis框架搭建
1.添加MyBatis框架

2.设置MyBatis配置
数据库的相关链接信息
# 设置数据库的相关链接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mycnblog2023?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
xml 保存路径和命名格式
# 设置MyBatis XML 存放路径和命名格式
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
# 配置MyBatis 执行时执行打印SQL
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.com.example.demo=debug
根据MyBatis写法完成数据库的操作
常规的写法:包含两个文件:
1.接口:方法的声明(给其他层(Service)调用)
2.XML:实现接口
1.定义接口

2.使用XML实现接口

MyBatis插件
为了方便开发MyBatis,实现XML和对应的接口之间的快速跳转,可以安装一个MyBatisX的插件


MyBatis传递参数查询

类中的属性和数据库表中的字段名不一致时,那么查询结果为null,解决方案:
1.将类中的属性和表中的字段名保持一致(最简单的解决方案)。
2.使用SQL语句中的as进行列名(字段名)重命名,让列名(字段名)等于属性名。

3.定义一个resultMap,将属性名和字段名进行手动映射。

及时执行:


**预执行:**它的执行是安全的可以防止SQL注入。


${} 和 #{} 有什么区别?
- ${} 直接替换;#{} 预执行。
- ${} 是不安全,存在SQL注入;#{} 是安全的,不存在SQL注入。
SQL注入问题

从上面的示例可以看出${}可以实现的
功能#{}都能实现,并且 ${}还存在SQL注入问题,那为什么 ${}的写法还存在?





${}适用场景:当业务需要传递SQL命令时,只能使用 ${},不能使用#{}
${}注意事项:如果要使用 ${},那么传递的参数一定要能被穷举,否则不能使用。
MyBatis like查询

like 使⽤ #{} 报错


相当于: select * from userinfo where username like ‘%‘username’%’;


MyBatis多表查询
MyBatis注解方式实现多表查询

MyBatis删除操作




MyBatis修改操作




MyBatis添加操作
MyBatis添加,返回受影响的行数




MyBatis添加,返回自增ID



相关文章:
【MyBatis】初学MyBatis
目录 MyBatis 是什么?MyBatis框架搭建1.添加MyBatis框架2.设置MyBatis配置数据库的相关链接信息xml 保存路径和命名格式 根据MyBatis写法完成数据库的操作MyBatis插件MyBatis传递参数查询${} 和 #{} 有什么区别?SQL注入问题 MyBatis like查询MyBatis多表…...
深度学习训练营之DCGAN网络学习
深度学习训练营之DCGAN网络学习 原文链接环境介绍DCGAN简单介绍生成器(Generator)判别器(Discriminator)对抗训练 前置工作导入第三方库导入数据数据查看 定义模型初始化权重定义生成器generator定义判别器 模型训练定义参数模型训…...
自定义MVC增删改查
目录 mymvcdemo是自定义mvc框架的使用示例 1.1 实体类 1.2 dao方法 1.3 写Service / biz 三层架构 1.4 建action 相当于selvert 1.5 con连接MySQL 8.0 版本 1.6 配置文件 XML 1.7 主界面布局 1.8 增加界面布局 1.9 写tld配置文件 2.0 注意架包 我是已经打包好的 mymv…...
RabbitMQ 教程 | 第2章 RabbitMQ 入门
👨🏻💻 热爱摄影的程序员 👨🏻🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...
双网卡如何配置DNS?我是一个仅主机模式配置静态(static)IP、一个NET或桥接(dhcp获取)
目录 一、所有主机初始化 二、135、136服务器,部署DNS调度服务器 1、更改主机主从DNS服务器的主机名称 2、安装bind软件、修改主配置文件 3、修改区域配置文件 4、修改数据文件 5、启动named服务、修改网卡信息 6、解析 7、双网卡的话记得注释以下内容、注…...
Android10: 动态隐藏导航栏和状态栏总结
(1)全屏相关设置 //(1)主题添加 <item name"android:windowFullscreen">true</item>//(2)setContentView之前添加 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCRE…...
roop 视频换脸
roop: one click face swap. 只用一张人脸图片,就能完成视频换脸。 项目地址: https://github.com/s0md3v/roopColab 部署: https://github.com/dream80/roop_colab 本文是本地部署的实践记录。 环境基础 OS: Ubuntu 22.04.2 LTSKernel: 5…...
Java类集框架(一)
目录 1.Collection集合接口 2.List 接口 (常用子类 ArrayList ,LinkedList,Vector) 3.Set 集合 接口(常用子类 HashSet LinkedHashSet,TreeSet) 4.集合输出(iterator , Enumeration) 1.Collection集合接口 Collection是集合中最大父接口,在接口中定义了核心的…...
Jsp+Ssh+Mysql实现的简单的企业物资信息管理系统项目源码附带视频指导运行教程
由jspssh(springstruts2mysql)实现的企业物资信息管理系统,系统功能比较简单,实现了基本的管理员、操作员等用户管理、物品分类管理、物品管理、入库管理、出库管理、库存预警、客户管理、供应商管理等基本功能需要的可以联系我分…...
【Spring】深究SpringBoot自动装配原理
文章目录 前言1、main入口2、SpringBootApplication3、EnableAutoConfiguration4、AutoConfigurationImportSelector4.1、selectImports()4.2、getAutoConfigurationEntry()4.3、getCandidateConfigurations()4.4、loadFactoryNames() 5、META-INF/spring.factories6、总结 前言…...
阿里云负载均衡SLB网络型NLB负载均衡架构性能详解
阿里云网络型负载均衡NLB是阿里云推出的新一代四层负载均衡,支持超高性能和自动弹性能力,单实例可以达到1亿并发连接,帮您轻松应对高并发业务。网络型负载均衡NLB具有超强性能、自动弹性伸缩、高可用、TCPSSL卸载、多场景流量分发和丰富的高级…...
JavaScript学习 -- SM4算法应用实例
SM4算法,也被称为国密算法,是中国公布的一种高效且安全的对称加密算法。在JavaScript中,我们可以通过使用CryptoJS库来实现SM4算法的加密和解密。本篇博客将为您介绍如何在JavaScript中使用SM4算法,并提供一个实际的案例。 首先&…...
【JVM】什么是双亲委派机制
文章目录 1、类加载机制2、双亲委派模型2.1、介绍2.2、为什么需要双亲委派2.3、源码解析 3、破坏双亲委派3.1、介绍3.2、破坏实现3.3、破坏双亲委派的例子 4、线程上下文类加载器 1、类加载机制 类加载阶段分为加载、连接、初始化三个阶段,而加载阶段需要通过类的全…...
网络安全 Day24-select高级用法和多表连接
select高级用法和多表连接 1. select 多子句单表高级实践1.1 select 多子句高级语法1.2 聚合函数1.3 group by 实践1.4 having 筛选1.5 order by 排序1.6 limit 2. 多表连接 1. select 多子句单表高级实践 1.1 select 多子句高级语法 where 和 having 区别是后者是分组后进行…...
JUC并发编程之volatile详解
目录 1. volatile 1.1 volatile关键字的作用 1.1.1 变量可见性 1.1.2 禁止指令重排序 1.2 volatile可见性案例 1.3 volatile非原子性案例 1.4 volatile 禁止重排序 1.5 volatile 日常使用场景 送书活动 1. volatile 在并发编程中,多线程操作共享的变量时&a…...
swing布局详解
1. 布局管理器接口 (1)说明 布局管理器接口为LayoutManager和LayoutManager2,LayoutManager2是LayoutManager的子类。 (2)常用方法 方法描述LayoutManageraddLayoutComponent(String name, Component comp) removeL…...
el-table某一列嵌套使用el-popover,使用click触发,导致页面下拉框组件无法触发弹框关闭(解决办法)
在弹框触发的方法里加上document.body.click() 即可 尝试了很多其他的方法都没用,只有这个解决了 完整代码: <el-select change"sourceChange" clearable ><el-optionv-for"option in list1":key"option.code":…...
正泰电力携手图扑:VR 变电站事故追忆反演
VR(Virtual Reality,虚拟现实)技术作为近年来快速发展的一项新技术,具有广泛的应用前景,支持融合人工智能、机器学习、大数据等技术,实现更加智能化、个性化的应用。在电力能源领域,VR 技术在高性能计算机和专有设备支…...
报错 -bash: wget: command not found
1、报错 -bash: wget: command not found 可以重装 wget 工具: 卸载 wget 工具 yum remove wget下载 wget 工具 yum -y install wget最后尝试 wget “url” 又OK了,一般是原来的wget初始化有文件损坏造成的。...
HashMap扩容和Redis中Dict 扩容
扩容时机: Hash Map:要在某个临界点进行扩容处理,该临界点就是HashMap中元素的数量在数值上等于threshold(table数组长度*加载因子) Dict: 当每次新增键值对的时 , 会检测 负载因子(LoadFactor) , 判断以…...
NVIDIA Profile Inspector深度解析:解锁显卡隐藏性能与高级配置实战指南
NVIDIA Profile Inspector深度解析:解锁显卡隐藏性能与高级配置实战指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款面向技术爱好者和开发者的专业显卡配…...
fcrackzip使用教程
fcrackzip 是一款专门用于破解ZIP压缩文件密码的工具,支持暴力破解和字典破解两种主要方式。它通过尝试不同的密码组合来解密受密码保护的ZIP文件,适用于渗透测试和密码恢复场景。该工具支持多种种破解算法,并允许用户自定义字符集和密码长度…...
别再傻等1000步了!用DDIM在Stable Diffusion里5分钟搞定高质量出图(附详细参数设置)
5分钟极速出图:DDIM采样器在Stable Diffusion中的实战指南 当你在深夜赶稿需要快速生成概念图时,当客户要求半小时内看到10个设计方案时,传统扩散模型缓慢的生成速度往往让人抓狂。别担心,DDIM采样器就是为这种紧急场景而生的利器…...
13-40K!AI大模型应用工程师,非常详细收藏我这一篇就够了
■ AI大模型应用工程师 13-40K 01 AI大模型应用工程师 ■ 岗位职责: 1、负责AI大模型在实际业务场景中的应用开发,提升模型性能与用户体验; 2、参与需求分析,根据不同类型的需求场景,结合业务目标选择AI技术/模型实现相…...
IUV5G数字室分酒店项目实战:从勘察到验收的避坑指南
1. 站点勘察:这些细节不注意会让你返工 第一次做酒店5G室分项目时,我在勘察环节踩过不少坑。记得有次因为没注意电梯井的测量方式,导致后期设计方案全部推翻重做。下面这些实战经验,能帮你省去至少50%的返工时间。 经纬度记录有个…...
React Scroll Parallax核心组件详解:Parallax、ParallaxBanner和ParallaxProvider
React Scroll Parallax核心组件详解:Parallax、ParallaxBanner和ParallaxProvider 【免费下载链接】react-scroll-parallax 🔮 React hooks and components to create parallax scroll effects for banners, images or any other DOM elements. 项目地…...
多模态跨语言翻译引擎实战指南:本地化部署与场景化应用
多模态跨语言翻译引擎实战指南:本地化部署与场景化应用 【免费下载链接】seamless-m4t-v2-large 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/seamless-m4t-v2-large 在全球化协作日益频繁的今天,跨语言翻译已成为打破沟通壁垒的核…...
Godot引擎资源提取完全指南:从PCK文件到资产复用的技术实践
Godot引擎资源提取完全指南:从PCK文件到资产复用的技术实践 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 技术挑战速览 核心问题解决方案预览技术价值如何识别有效PCK文件?…...
【黑金云课堂笔记】第一~二期FPGA知识点总结
知识卡片一:【FPGA 基础篇】开启硬件编程之门FPGA 的本质: FPGA(现场可编程门阵列)并非在运行软件程序,而是在构建电路本身。用户可以通过 Verilog/VHDL 等硬件描述语言,在芯片出厂后随时重新配置其内部逻辑…...
TPAMI 2025 | 港城大团队新作:强化学习引导 ODE 轨迹,提升图像复原性能
点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达在计算机视觉领域,图像恢复一直是核心研究方向之一——从模糊的监控画面中还原清晰细节、让水下拍摄的照片重现真实色彩、给低光照的夜景图像提亮增晰&#x…...
