MyBatis---初阶

一、MyBatis作用

是一种更简单的操作和读取数据库的工具。

二、MyBatis准备工作

1、引入依赖

2、配置Mybatis(数据库连接信息)

3、定义接口

@Mapper注解是MyBatis中用来标识接口为Mapper接口的注解。在MyBatis中,Mapper接口是用来定义SQL映射的接口,通过@Mapper注解标识的接口会被MyBatis自动扫描并注册为Mapper接口,从而可以在MyBatis的配置文件中进行配置和使用。

4、准备数据

建表规范:字段全部小写,单词之间使用_分割;必须有id、create_time、update_time3个字段。

5、创建对应的实体类

三、操作数据库--注解实现

1、查询所有用户

(1)实现代码

(2)测试

生成的测试代码,@SpringBootTest是加载spring运行环境:

运行结果:

该结果只能看到打印的结果,不能看见sql语句、参数等信息,可以配置。

配置内容:

再次运行代码:

2、根据id查询指定用户

(1)代码实现

id=#{id},id作为参数传给sql语句,且要保证参数名也为id,可以使用@Param重命名。

(2)测试

运行结果:

3、根据id和姓名查询指定用户

(1)代码实现

(2)测试

运行结果:

4、查询存在的问题

以上图片对比可以发现:sql的运行结果和java(mybatis)运行结果有些地方不一致。Java结果是null

sql表字段:

java类成员变量:

mybatis会根据查询的结果进行对应赋值,前几个属性名是一样的,后几个不一样,导致后几个变量名无法一一对应,使得不一样的成员变量没有结果。

5、解决属性名不一致

(1)起别名

可以给数据库属性名起别名,使得和成员变量名一致。

运行结果:

(2)结果映射

对于不一样的名字,可以将数据库名和java成员变量名进行一一映射。

运行结果:

对于该映射也可以在其他方法中使用:

给该映射定义一个id名:

复用该映射关系:

运行结果:

(3)配置文件实现自动转化

实现java变量驼峰命名方式与数据库属性命名方式的自动转换。

配置内容:

此时就可以实现一一对应了,不会出现java变量为null了。

6、增加用户

(1)代码实现

(2)测试

运行结果:

思考一个问题:以上没有对id进行赋值,自动赋值时,如何获取到自增id值???

在接口方法上加上@Options注解,useGeneratedKeys会命令mybatis使用jdbc的getuseGeneratedKeys方法,取到数据库内部自增主键,默认值为false;keyProperty:指定能够唯⼀识别对象的属性

获取id值:

运行结果:

7、更新用户

(1)代码实现

(2)测试

运行结果:

8、删除用户

(1)代码实现

(2)测试

运行结果:

四、操作数据库--xml实现

定义一个接口UserInfoXmlMapper;创建UserInfoXMLMapper.xml,xml里的内容是固定的,需要修改接口路径。

配置yml:

1、查询所有用户

(1)代码实现

(2)测试

运行结果:

2、根据id查询用户

(1)代码实现

(2)测试

运行结果:

3、根据id和用户名查询用户

(1)实现代码

(2)测试

运行结果:

4、解决属性名不一致

xml实现sql操作中,依旧会存在数据库字段名和成员变量名不对应的问题,以上图片没有呈现出来是因为配置中已经实现转换了。

(1)配置文件实现自动转化

实现java变量驼峰命名方式与数据库属性命名方式的自动转换。

配置内容:

此时就可以实现一一对应了,不会出现java变量为null了。

(2)起别名

(3)结果映射

对于不一样的名字,可以将数据库名和java成员变量名进行一一映射。

5、增加用户

(1)实现代码

(2)测试

运行结果:

对于获取到自增id值的方法和注解大致一样:

运行结果:

6、更新用户

(1)实现代码

(2)测试

运行结果:

7、删除用户

(1)实现代码

(2)测试

运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git 客户端可视化工具tortoisegit

Git 使用教程 git一点通 (kdocs.cn) 二、Git 客户端可视化工具-推荐 1.常用工具 tortoisegit 官网 https://tortoisegit.org/ 推荐 sourcetree 官网 https://www.sourcetreeapp.com/ 2.tortoisegit安装 2.1 下载安装包 2.2 下载语言包 2.3 安装 2.4 安装语言包 5.使用 5.1 新建…

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(一)

文章目录 效果展示说明利用工具整体思路Puppeteer 使用笔记保持登录状态打开新的页面点击 dialog跳转页面设置页面可见窗口大小寻找元素等待元素出现 整体代码 效果展示 说明 看了看网上很少做这个功能,但是我有这个需求,就抽出时间写了个简单的工具目前…

opengl 学习着色器

一.GLSL 着色器是使用一种叫GLSL的类C语言写成的。GLSL着色器编码顺序:声明版本》定义输入输出》uniform》main函数。每个着色器的入口点是main函数,在main函数中我们处理所有的输入变量,并将结果输出到输出变量中。如下图: #ver…

RocketMQ高可用架构涉及常用功能整理

RocketMQ高可用架构涉及常用功能整理 1. 集群高可用系统架构和相关组件1.1 架构说明1.2 相关概念说明1.3 消息模型1.3.1 点对点模型1.3.2 发布订阅模型1.3.3 消息过滤 2. rocketmq的核心参数3. rocketmq常用命令4. 事务性4.1 数据写入流程4.2 数据读流程4.3 事务消息 5. 疑问和…

QT_day2

1.思维导图 2.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#xff…

哈希应用 | 布隆过滤器概念 | 代码实现 | 哈希切割

文章目录 1.布隆过滤器1.1.布隆过滤器的基本概念1.2.代码实现1.3.测试代码分析误判率1.4.布隆过滤器的优点1.5.关于几道面试题 关于位图:往期分析的 博客链接 1.布隆过滤器 1.1.布隆过滤器的基本概念 布隆过滤器的引出 位图使用1个比特位 直接定址法,…

深入浅出JVM(一)之Hotspot虚拟机中的对象

本篇文章思维导图 对象的创建 对象的创建可以分为五个步骤:检查类加载,分配内存,初始化零值,设置对象头,执行实例构造器 类加载检查 HotSpot虚拟机遇到一条new指令,会先检查能否在常量池中定位到这个类的符号引用,检查这个类是否类加载过 没有类加载过就去类加载类加载过就进…

中国 AI 开课速度直逼美国 AI 颠覆性创新速度

原文链接: 中国 AI 开课速度直逼美国 AI 颠覆性创新速度 今日热帖,有网友发帖称:Sora 和 ChatGPT 告诉我们,美国确实是遥遥领先,而且还越拉越远。 是不是遥遥领先暂且不说,但领先我们的确是事实。 主要是…

多任务互斥及队列

一.互斥的引入 在FreeRTOS中,互斥(Mutex)是一种用于保护共享资源的机制。互斥锁可以确保同一时间只有一个任务能够访问共享资源,从而避免了竞态条件和数据不一致的问题。 FreeRTOS中互斥的引入方法: 创建互斥锁&#…

【笔记】【算法设计与分析 - 北航童咏昕教授】绪论

算法设计与分析 - 北航童咏昕教授 文章目录 算法的定义定义性质 算法的表示自然语言编程语言伪代码 算法的分析算法分析的原则渐近分析 算法的定义 定义 给定计算问题,算法是一系列良定义的计算步骤,逐一执行计算步骤即可得预期的输出。 性质 有穷性确…

【Linux】git操作 - gitee

1.使用 git 命令行 安装 git yum install git 2.使用gitee 注册账户 工作台 - Gitee.com 进入gitee,根据提示注册并登录 新建仓库 仓库名称仓库简介初始换仓库 3.Linux-git操作 进入仓库,选择“克隆/下载” 复制下面的两行命令进行git配置 然后将仓库clo…

c语言经典测试题2

1.题1 我们来思考一下它的结果是什么? 我们来分析一下:\\是转义为字符\,\123表示的是一个八进制,算一个字符,\t算一个字符,加上\0,应该有13个,但是strlen只计算\0前的字符个数。所以…

快速学习springsecurity最新版 (版本6.2)---用户认证

简介 ​ Spring Security 是 Spring 家族中的一个安全管理框架。目前比较主流的是另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富,但是shiro并不简便,这里轻量级安全框架更推荐国产安全框架satokensatoken官网 ​ 一般大型的项目都…

QT应用软件【协议篇】周立功CAN接口卡代码示例

文章目录 USBCAN系列CAN接口卡规格参数资料下载QT引用周立功的库安装sdk代码USBCAN系列CAN接口卡 USBCAN系列CAN接口卡兼容USB2.0全速规范,可支持1/2/4/8路CAN接口。采用该接口卡,PC机可通过USB连入CAN网络,进行CAN总线数据采集和处理,主要具备以下几大优势特点: 支持车载…

Matlab图像处理——图像编码解码

1.霍夫曼编码和解码 clear clc Iimread(lena.bmp); Iim2double(I)*255; [height,width]size(I); %求图像的大小 HWmatrixzeros(height,width); Matzeros(height,width); %建立大小与原图像大小相同的矩阵HWmatrix和Mat,矩阵元素为0。 HWmatrix(1,1)I(1,1); …

清洁力强的洗地机什么牌子最好?深度清洁的洗地机推荐

在相信很多人在做家务时,或许都会遇到一个尴尬的境地:虽然使用吸尘器清理了地面上的尘土和杂物,然后再使用拖把擦洗地板,但往往还是无法达到十分干净的效果。扫地机器人对于着色严重的垃圾,往往会出现越拖越脏的情况。…

Vue3之生命周期基础介绍

让我为大家介绍一下vue3的生命周期吧! 创建阶段:setup 我们直接console.log就可以了 console.log("创建");挂载阶段:onBeforeMount(挂载前)、onMounted(挂载完毕) import { onBeforeMount, onMounted } from vue; // 挂载前 on…

【前端】Vue-Cli 快速创建Vue3项目及一些项目初始化相关

文章目录 前言1. 安装1.1 安装 Vue 脚手架1.2 创建项目1.3 本地运行项目 2. 推送到仓库2.1 远程仓库准备2.2 关于gitIgnore文件2.3 通过git推送至远程仓库 3. 补充与总结3.1 npm 版本是否要升级到最新?3.2 这个项目建议的各种版本3.3 一般前端gitIgnore文件3.4 推荐…

蚂蚁集团开始招聘华为鸿蒙应用研发工程师

早在2023年12月7日支付宝宣布将全面启动鸿蒙原生应用开发。华为表示,支付宝将基于HarmonyOS NEXT版本开发应用,给消费者带来全场景的新体验。头部应用伙伴的加入,大力推动了鸿蒙生态进一步完善。 就近期蚂蚁集团开始招聘华为鸿蒙应用研发工程…

【2024软件测试面试必会技能】Jmeter+ant+jenkins实现持续集成

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具,并配置好环境变量;参考:https://www.cnblogs.com/YouJeffrey/p/16029894.html jmeter默认保存的是.jtl格式的文件,要设置一下bin/jmeter.properties,文件内容…