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

Mybatis的基本操作--增删改查

目录

查看数据

无参数

一个参数

多个参数

添加数据

修改数据

删除数据

注释的方式进行查找数据


查看数据

分三种情况:无参,有一个参数,有多个参数的情况。

 (这里的详细操作步骤是博主的上一篇博客写的:初识Mybatis,并创建第一个Mybatis项目(详细图文教程))

无参数

我们在接口中声明,在对应的xml文件中进行实现接口,下面简单展示一下注意点。

接口:

 xml文件:

 进行测试:

 测试结果:

可以看到返回的结果就是我们连接的数据库中的结果。 

一个参数

我们传递参数的时候,会用到一个注解 @Param 。传递单个参数的时候,注解可以不用,也可以使用。使用注解就要和注解中的值保持一致,不适用注解的时候,接口中和 xml 中的值可以不一样。

//接口声明
import com.example.springmybatisdemo.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;import java.util.List;//接口是用来声明方法的
@Mapper
public interface UserMapper {/*** 不带参数情况* @return*/List<User> userAll();/*** 一个参数的情况1:接口中的参数和xml文件的参数名称对应* @param id* @return*/User userById(Integer id);/*** 一个参数的情况2:使用传参注解,注解中的值要和后边XML文件中的值对应* 注解中的值可以和参数一样也可以不一样* @param id* @return*/User userById2(@Param("uid")Integer id);/*** 一个参数的情况3:接口中的参数和XML文件的参数可以不对应* @param aaaa* @return*/User userById3(Integer aaaa);
}
<!--        xml文件-->
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati
s.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.springmybatisdemo.mapper.UserMapper"><select id="userAll" resultType="com.example.springmybatisdemo.model.User">select * from userinfo;</select><select id="userById" resultType="com.example.springmybatisdemo.model.User">select * from userinfo where id=#{id}</select><select id="userById2" resultType="com.example.springmybatisdemo.model.User">select username from userinfo where id=#{uid}</select><select id="userById3" resultType="com.example.springmybatisdemo.model.User">select * from userinfo where id=#{oooo}</select></mapper>

多个参数

多个参数的时候就必须要用到注解@Param,且注解中的值要和xml接收参数的值一样。

//接口/*** 多个参数的情况,注解中的值要和XML文件中接收的值对应* @param name* @param id* @return*/User userByNameAndId(@Param("name")String name,@Param("id")Integer id);

<select id="userByNameAndId" resultType="com.example.springmybatisdemo.model.User">select * from userinfo where name= #{name} and id= #{id}
</select>

添加数据

可以一个一个的增加属性,但是这样太繁琐,我们可以直接传递对象。传递对象的时候可以直接传递一个默认的,也可以传递一个指定名称的对象,传递默认的对象的时候,Mybatis会自动帮我们生成 以属性名命名的变量。传递指定对象的时候,我们取值的时候,就是 对象名.属性 的方式取值。

 /*** 插入一个对象* @param user* @return*/Integer insert(User user);/*** 插入一个指定名称的对象* @param user* @return*/Integer insert2(@Param("user1") User user);
 <insert id="insert">insert into userinfo(username,password,photo)values(#{username},#{password},#{photo})</insert><insert id="insert2">insert into userinfo(username,password,photo)values(#{user1.username},#{user1.password},#{user1.photo})</insert>

获取自增的id

 

修改数据

修改数据的时候,也可以传入属性或者传入对象,传入属性的话,方法传参直接传递的就是要修改的值,传入对象的话,传入的是一个新的对象,设置新的对象的属性,用这个新的对象去替换之前的值。

 /*** 修改数据(更新数据):传入的是对象* @param user*/void update(User user);/*** 直接传入要修改的属性* @param username* @param id*/void update2(String username,Integer id);
<update id="update">update userinfo set username=#{username},password=#{password} where id=#{id}</update><update id="update2">update userinfo set username=#{username},id=#{id} where id=#{id}</update>

删除数据

 /*** 删除数据* @param id*/void delete(Integer id);
 <delete id="delete">delete from userinfo where id=#{id}</delete>

注释的方式进行查找数据

Mybatis提供了注释的方式去对数据库进行操作,但是注释的方式不是很建议新手去使用,因为涉及到注释的时候,代码错了没有提示,其二就是涉及动态SQL的时候比较繁琐和复杂

这里给大家展示一下注释方式的大概使用,也推荐大家在SQL语句简单的时候使用。

  //增加@Insert("insert into articleinfo(uid,title,content) values(#{uid},#{title},#{content}) ")void insert2(Article a);
//查找@Select("select * from articleinfo where uid=#{uid}")List<Article> quaryAll(Integer uid);

相关文章:

Mybatis的基本操作--增删改查

目录 查看数据 无参数 一个参数 多个参数 添加数据 修改数据 删除数据 注释的方式进行查找数据 查看数据 分三种情况&#xff1a;无参&#xff0c;有一个参数&#xff0c;有多个参数的情况。 &#xff08;这里的详细操作步骤是博主的上一篇博客写的&#xff1a;初识My…...

Qt简单实现密码器控件

本文实例为大家分享了Qt自定义一个密码器控件的简单实现代码&#xff0c;供大家参考&#xff0c;具体内容如下 实现构思&#xff1a; 密码器的功能可以看成是计算器和登陆界面的组合&#xff0c;所以在实现功能的过程中借鉴了大神的计算器的实现代码和登陆界面实现的代码。 …...

fpga_pwm呼吸灯(EP4CE6F17C8)

文章目录 一、呼吸灯二、代码实现三、引脚分配 一、呼吸灯 呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化&#xff0c;使用开发板上的四个led灯实现1s间隔的呼吸灯。 二、代码实现 c module pwm_led( input clk ,input rst_n ,output reg [3:0] led ); …...

WPF实战学习笔记20-设置首页启动页

文章目录 设置首页启动页增加配置接口添加接口文件&#xff1a;实现接口 配置启动选项 设置首页启动页 增加配置接口 添加接口文件&#xff1a; Mytodo.Common/IConfigureInterface.cs using System; using System.Collections.Generic; using System.Linq; using System.T…...

uniapp实现预约时间选择弹窗组件

做了个组件&#xff0c;实现出当日预约时间组件&#xff0c;效果图如下 废话不多说&#xff0c;直接上代码&#xff0c;代码简单&#xff0c;参数自己任意改 <template><view class"inventory"><u-popup :show"show" :round"10"…...

opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解

opencv 之 外接多边形&#xff08;矩形、圆、三角形、椭圆、多边形&#xff09;使用详解 本文主要讲述opencv中的外接多边形的使用&#xff1a; 多边形近似外接矩形、最小外接矩形最小外接圆外接三角形椭圆拟合凸包 将重点讲述最小外接矩形的使用 1. API介绍 #多边形近似 v…...

断路器分合闸速断试验

试验目的 高压断路器的分、 合闸速度是断路器的重要特性参数, 反映出断路器的操动机构 与传动机构在分、 合闸过程中的运动特征。 断路器分、 合闸速度超出或者低于规定值 均会影响断路器的运行状态和使用寿命。 断路器合闸速度不足, 将会引起触头合闸振 颤, 预击穿时间过长。…...

【Redis】如何实现一个合格的分布式锁

文章目录 参考1、概述2、Redis粗糙实现3、遗留问题3.1、误删情况3.2、原子性保证3.3、超时自动解决3.4、总结 4、Redis实现优缺5、集群问题5.1、主从集群5.2、集群脑裂 6、RedLock7、Redisson7.1、简单实现7.2、看门狗机制 参考 Redisson实现Redis分布式锁的N种姿势 (qq.com)小…...

组件化开发复习

1.vue的根组件使用 // 1.创建appconst app Vue.createApp({// data: option apidata() {return {message: "Hello Vue",counter: 0,counter2: 0,content: ""}},watch: {content(newValue) {console.log("content:", newValue)}}}) createApp 函…...

【设计模式】设计原则-里氏替换原则

里氏替换原则 定义 任何基类可以出现的地方&#xff0c;子类一定可以出现。 通俗理解&#xff1a;子类可以扩展父类的功能&#xff0c;但不能改变父类原有的功能。 换句话说&#xff0c;子类继承父类时&#xff0c;除添加新的方法完成新增功能外&#xff0c;尽量不要重写父类…...

v2ex站点base64编码解码

最近在刷v站&#xff0c;我毕竟也是入坑不久的小白&#xff0c;发现各位兄弟的联系方式都是乱码&#xff0c;我以为是经过md5处理之类的&#xff0c;最后搜了下发现是对信息进行了base64编解码处理&#xff0c;目的是为了防止社工对个人信息的爬取处理。 下面是通过python对个人…...

PostgreSQL数据库动态共享内存管理器——Dynamic shared memory areas

dsm.c提供的功能允许创建后端进程间共享的共享内存段。DSA利用多个DSM段提供共享内存heap&#xff1b;DSA可以利用已经存在的共享内存&#xff08;DSM段&#xff09;也可以创建额外的DSM段。和系统heap使用指针不同的是&#xff0c;DSA提供伪指针&#xff0c;可以转换为backend…...

Redission分布式锁详解

前言 ​ 在分布式系统中&#xff0c;当不同进程或线程一起访问共享资源时&#xff0c;会造成资源争抢&#xff0c;如果不加以控制的话&#xff0c;就会引发程序错乱。而分布式锁它采用了一种互斥机制来防止线程或进程间相互干扰&#xff0c;从而保证了数据的一致性。 常见的分…...

063、故障处理之快速恢复数据

数据丢失快速恢复的重要性 目的&#xff1a;尽快修复数据&#xff0c;恢复业务 快速恢复相关技术对比 常用备份恢复技术 数据快速恢复原理 MVCC 是TiDB数据库原生的一项功能&#xff0c;默认使用无需配置&#xff0c;它使用多个历史快照的方式来维护数据在某个时间点对并…...

从零开始学习CTF

前言 CTF简介 中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式 竞赛模式 解题模式&#xff1a; 在解题模式…...

【stable diffusion】保姆级入门课程05-Stable diffusion(SD)图生图-涂鸦重绘的用法

1.什么是涂鸦重绘 涂鸦重绘又称手涂蒙版。 简单来说&#xff0c;局部重绘手涂蒙版 就是涂鸦局部重绘的结合体&#xff0c;这个功能的出现是为了解决用户不想改变整张图片的情况下&#xff0c;对多个元素进行修改。 功能支持&#xff1a; 1.支持蒙版功能 2.笔刷决定绘制的元素…...

HBase 源码编译部署包

1. 版本 Java 版本: 1.8.0_201 HBase 版本: hbase-2.5.5 2.打包 git clone https://github.com/apache/hbase.git cd hbase git checkout branch-2.5 编译整个工程的 tar 包&#xff0c;编译一次 10 分钟左右 mvn clean package assembly:single -DskipTests ll hbase-assemb…...

备战秋招 | 笔试强训16

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、下列一段 C 代码的输出结果是&#xff08;&#xff09; #include <iostream> class Base { public:int Bar(char x){return (int)(x);}virtual int Bar(int x){return (2 * x);} }; clas…...

01 Excel常用高频快捷键汇总

目录 一、简介二、快捷键介绍2.1 常用基本快捷键1 复制&#xff1a;CtrlC2 粘贴&#xff1a;CtrlV3 剪切&#xff1a;CtrlX4 撤销&#xff1a;CtrlZ5 全选&#xff1a;CtrlA 2.2 常用高级快捷键1 单元格内强制换行&#xff1a;AltEnter2 批量输入相同的内容&#xff1a;CtrlEnt…...

PHP Laravel 路由、中间件、数据库等例子

以下是使用Laravel框架时的一些常见示例&#xff1a; 1. 路由&#xff08;Routes&#xff09;&#xff1a; // 定义基本路由 Route::get(/home, HomeControllerindex); // 带有参数的路由 Route::get(/user/{id}, UserControllershow); // 路由组 Route::middleware([auth])-&…...

Unity小游戏——使被砍中的怪物四处飞散

被武士砍中后&#xff0c;怪物将向四面八方飞散。 动作的不同将导致攻击力度的强弱表现不同&#xff0c;被攻击的各个对象的反应也有很大差异。在格斗游戏中&#xff0c;对对手一顿拳打脚踢后&#xff0c;看到其步履蹒跚的样子&#xff0c;往往可以感受到他的疼痛。相反如果对…...

hive之文件格式与压缩

hive文件格式&#xff1a; 概述&#xff1a; 为Hive表中的数据选择一个合适的文件格式&#xff0c;对提高查询性能的提高是十分有益的。Hive表数据的存储格式&#xff0c;可以选择text file、orc、parquet、sequence file等。 文本文件&#xff1a; 文本文件就是txt文件&…...

云原生容器内的一次pg_repack排错和解决过程

postgresql的pg_repack 这个cronjob一直执行不了。 排错过程: 用命令 kubectl describe job pg-repack-scheduler-manual-wv82r -n xxx没有查看用有用信息想办法进它启动的pod查看&#xff0c;于是在执行pg_repack.sh命令前&#xff0c;先加一个睡眠时间&#xff0c;如下: - …...

Centos Certbot 使用

安装 可选配置&#xff1a;启动EPEL存储库 非必要项 yum install -y epel-release yum clean all yum makecache #启用可选通道 可以不配置 yum -y install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional必要配置…...

VL163的基本信息

VL163是2:4差分通道多路复用/demux开关USB 3.1应用&#xff0c;为交换机信号性能支持高达USB 3.1&#xff0c;并使用QFN-28 3.5x4.5mm绿色封装。 VL163 QFN28 只能处理2Lane数据信号。自己没有CC识别沟通协议&#xff0c;如果要做USB-C Swtich&#xff0c;就要通过别的USB-C协…...

IntelliJ IDEA 2023.2 新版本,拥抱 AI

IntelliJ IDEA 近期连续发布多个EAP版本&#xff0c;官方在对用户体验不断优化的同时&#xff0c;也新增了一些不错的功能&#xff0c;尤其是人工智能助手补充&#xff0c;AI Assistant&#xff0c;相信在后续IDEA使用中&#xff0c;会对开发者工作效率带来不错的提升。 以下是…...

softmax回归

模型 softmax回归是多类分类模型&#xff0c;用于获取每个分类的置信度&#xff0c;置信度计算方式如下 经过全连接层&#xff0c;得到输出O&#xff0c;将O作为softmax的输入 O是输出向量&#xff0c;每个分量表示一个类别&#xff0c;y_hat_i表示i类别的置信度&#xff0…...

.NET 8 Preview 5推出!

作者&#xff1a;Jiachen Jiang 排版&#xff1a;Alan Wang 我们很高兴与您分享 .NET 8 Preview 5 中的所有新功能和改进&#xff01;此版本是 Preview 4 版本的后续版本。在每月发布的版本中&#xff0c;您将看到更多新功能。.NET 6 和 7 用户可以密切关注此版本&#xff0c;而…...

Spring核心概念、IoC和DI的认识、Spring中bean的配置及实例化、bean的生命周期

初始Spring 一、Spring核心概念1.1IoC(Inversion of Contral)&#xff1a;控制反转1.2IoC代码实现1.2DI代码实现 二、bean的相关操作2.1bean的配置2.1.1bean的基础配置2.1.2bean的别名配置2.1.3bean的作用范围配置 2.2bean的实例化 - - 构造方法2.3bean的实例化 - - 实例工厂与…...

git冲突“accept theirs”和“accept yours”

Accept Yours 就是直接选取本地的代码&#xff0c;覆盖掉远程仓库的 Accept Theirs 是直接选取远程仓库的&#xff0c;覆盖掉自己本地的 我们选择Merge,自己手动行进选择、修改。 这里左边部分是你本地仓库的代码&#xff0c;右边部分是远程仓库的代码&#xff0c;中间的res…...