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

【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列

系列文章目录

🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀


文章目录

  • 系列文章目录
  • 前言 🍃
  • 一、实体对象更新
    • 1.1 单条与批量
    • 1.2 不更新某列
    • 1.3 只更新某列
    • 1.4 NULL列不更新
    • 1.5 无主键/指定列
    • 1.6 更新添加条件
    • 1.7 大数据更新
    • 1.8 重新赋值1:list中的值修改
    • 1.9 重新赋值2: 列中的值+1
  • 二、根据表达式更新(像SQL)
    • 2.1 指定多个字段更新
    • 2.2 一个字段更新
    • 2.3 字段+1更新
    • 2.4 Set语法是支持多个的
    • 2.5 批量更新IN
    • 2.6 表达式无实体更新
    • 2.7 表达式分页更新
  • 三、根据字典更新
  • 四、根据DataTable更新
  • 五、匿名、Object、接口更新
  • 六、更多功能
    • 6.1 更新主键
    • 6.2 联表更新
    • 6.3 调用实体内方法
    • 6.4 高性能更新
    • 6.5 导航更新
    • 6.6 默认值(系统时间)
  • 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀


前言 🍃

前面的章节介绍了各种 SqlSugar 各种场景的 查询 操作,接下来将介绍 SqlSugar 增、删、改 相关操作。数据库 插入 数据的方法包括:使用 SQL 插入语句、通过 ORM 框架、使用 批量插入 技术、利用 存储过程

一、实体对象更新

所谓按实体对象更新就是:db.Updateable (参数对象) 有参数的重载。

db.Updateable(实体或者集合).ExecuteCommand()

1.1 单条与批量

根据实体更新需要给实体配置主键,参考文档实体配置:

函数说明
ExecuteCommand返回受影响行数 , update where 如果没找到那么就会返回 0
ExecuteCommandHasChange返回bool ,等同于 bool isChange= ExecuteCommand()>0
//根据主键更新单条 参数 Class
var result= db.Updateable(updateObj).ExecuteCommand();//实体有多少列更新多少列//批量更新参数 List<Class>
var result= db.Updateable(updateObjs).ExecuteCommand();
//分页更新 5.1.4.129+ 低版本 存在 UpateColumns设置无效
db.Updateable(List<实体>).PageSize(1000).ExecuteCommand() var updateObj=new Class(){Id=1 }; //主键要有值
//只更新修改字段 (5.1.4.59支持了批量)
db.Tracking(updateObj);//创建跟踪
updateObj.Name = "a1" + Guid.NewGuid();//只改修改了name那么只会更新name
db.Updateable(updateObj).ExecuteCommand();//因为每条记录的列数不一样,批量数据多性能差,不建议用
//可以清空
db.ClearTracking();//5.1.4.108-preview30+//大数据批量更新  适合列多数据多的更新  
db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList());//联表更新看标题6.2

1.2 不更新某列

🌰不更新 TestIdCreateTime

var result=db.Updateable(updateObj).IgnoreColumns(it => new { it.CreateTime,it.TestId }).ExecuteCommand()//也可以用特性
[SugarColumn(IsOnlyIgnoreUpdate=true)]
public DateTime UpdateDate{get;set;}

1.3 只更新某列

🌰只更新 NameCreateTime

var result=db.Updateable(updateObj).UpdateColumns(it => new { it.Name,it.CreateTime }).ExecuteCommand();

🎯注意:5.1.4.62 版本支持了多个 UpdateColumn 叠加,之前版本不支持。

🌰 追加AOP赋值列 5.1.4.106-preview19+

//例如:AOP修改 Price那么更新的列就是 Price Name Creatime 加了true就追加了一列
var result=db.Updateable(updateObj)
.UpdateColumns(it => new { it.Name,it.CreateTime },true)//true表示追加AOP赋值列
.ExecuteCommand();

1.4 NULL列不更新

🎯注意:高版本支持批量 ,用该方法批量性能差些,因为列不同所以没必然用批量语法。

//更新忽略null字段
db.Updateable(data).IgnoreColumns(ignoreAllNullColumns:true).ExecuteCommand();//更新忽略null并且忽略默认值 (比如int默认值是0就不更新)
db.Updateable(data).IgnoreColumns(ignoreAllNullColumns:true,ignoreAllDefaultValue:true).ExecuteCommand();

1.5 无主键/指定列

🆚用法同上唯一区别就是用 WhereColumns 指定条件:

var result= db.Updateable(updateObj).WhereColumns(it=>new { it.Id}).ExecuteCommand();//更新单 条根据ID
var result= db.Updateable(updateObjs).WhereColumns(it=>new { it.Id}).ExecuteCommand();//更新集合根据ID by id

可以多列:

WhereColumns(it=>new { it.Id,it.Name}) //条件列不会被更新,只会作为条件

1.6 更新添加条件

🎯注意:单条操作都支持 ,批量只支持部分库,多库考虑批量操作不建议用这个方法。

db.Updateable(updateObj).Where(it=>it.Id==1).ExecuteCommand()
//如果是集合操作请更新到5.0.4版本之前版本禁止使用, 并且只有部分库支持

1.7 大数据更新

👑大数据更新,适合大数据更新,可以处理百万级, 5.0.4.5+

//大数据更新,适合大数据更新,可以处理百万级
db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList());//特色功能:吊打所有框架N倍,30列100万8秒更新完

1.8 重新赋值1:list中的值修改

 //单个字段db.Updateable(updateObj).ReSetValue(it=> { it.Name = it.Name+"a";})//updateObj.Name值的基础上在处理.ExecuteCommand()//多个字段          db.Updateable(updateObj).ReSetValue(it=> { it.Name = it.Name+"a";it.CreateTime = DateTime.Now;})   .ExecuteCommand()

🎯注意:该功能是在 UpdateObj 参数上修改,如果是在数据库字段+1 看1.9和2.3

1.9 重新赋值2: 列中的值+1

  1. SET=字段+固定变量 SqlSugarCore 5.1.4.72 +
var result67 =db.Updateable(updateObjs)//批量更新单独处理num列 set num=num+1.PublicSetColumns(it => it.Num, it => it.Num+ 1).ExecuteCommand();//该功能默认是更新整个LIST,如果只更新一个字段需要加UpdateColumn指定一下      //2.3也有该功能不过是针对表达式方式更新,不是通过实体方式

🎯注意:该功能默认是更新整个LIST,如果只更新一个字段需要加 UpdateColumn 指定一下。

  1. SET=字段+集合变量 SqlSugarCore 5.1.4.77 preview02 +
 db.Updateable(list).PublicSetColumns(it => it.Price, "+") //set price=price+list[i].price.ExecuteCommand();//MYSQL如果用到float表要设置精度//该功能默认是更新整个LIST,如果只更新一个字段需要加UpdateColumn指定一下

🎯注意:该功能默认是更新整个LIST,如果只更新一个字段需要加 UpdateColumn 指定一下。

二、根据表达式更新(像SQL)

🗒️表达式更新比较像SQL而不是对象。

var result=db.Updateable<Student>().SetColumns(it => new Student() { Price=it.Price+1,CreateTime=DateTime.Now}) .Where(it => it.Id >11).ExecuteCommand();
//是不是很像SQL

2.1 指定多个字段更新

🌰更新 name, createtime 条件 id=11

var result= db.Updateable<Student>()
.SetColumns(it => new Student() { Name="a",CreateTime=DateTime.Now})//类只能在表达示里面不能提取
.Where(it => it.Id == 11)
.ExecuteCommand();
//表达式写2列更新2列,其他不会更新

2.2 一个字段更新

🌰只更新 name 条件 id=1

var result= db.Updateable<Student>()
.SetColumns(it => it.Name == "jack")//SetColumns是可以叠加的 写2个就2个字段赋值
.Where(it => it.Id == 1)
.ExecuteCommand();// Sql 
// Update Student  set Name='jack' where id=1 //如果需要获取数据库时间我们可以用 SqlFunc.GetDate()

🎯注意:如果需要获取数据库时间我们可以用 SqlFunc.GetDate()

2.3 字段+1更新

//实现在原有字段+1
var result= db.Updateable<Student>()
.SetColumns(it => it.Num == it.Num+1)
.Where(it => it.Id == 1)
.ExecuteCommand();
// update Studentset iNum=iNum+1 where id=1

2.4 Set语法是支持多个的


var result71 = db.Updateable<Order>()//生成 [name]=name.SetColumns(it => it.Name == it.Name)//加一个必须更新条件防止SETIF没有列//第一条件为true 生成 createtime=变量 .SetColumnsIF(p!=null ,it => it.CreateTime == p.Value)//第一条件为true 生成 X=变量 .SetColumnsIF(X!=null ,it => it.X== X).Where(it => it.Id == 11).ExecuteCommand();

2.5 批量更新IN


var ids=new int[]{1,2,3};
var result71 = db.Updateable<Order>().SetColumns(it => it.Name == "a").Where(it => ids.Contains(it.Id)).ExecuteCommand();// in (1,2,3)

2.6 表达式无实体更新

db.Updateable<object>().AS("Order").SetColumns("name", 1).Where("id=1").ExecuteCommand();//SQL://UPDATE [Order]  SET//         [Name]=@Const0  WHERE id=1//新功能  5.1.4.143+
db.Updateable<object>()//需要升到5.1.4.143.AS("UserInfo001").SetColumns(it=>SqlFunc.MappingColumn<string>("price"),it=>SqlFunc.MappingColumn<string>("price+1")).Where("price=1").ExecuteCommand();//UPDATE [UserInfo001]  SET//        [price]=price+1   WHERE price=1

2.7 表达式分页更新

var q=db.Queryable<Order>().Take(10).Skip(10).OrderByDescending(it => it.CreateTime) .Select(it => it.Id);//只能是Select单个字段db.Updateable<Order>().SetColumns(it => new Order(){CreateTime = DateTime.Now}).In(it => it.Id,q).ExecuteCommand();

三、根据字典更新

//设置字典
var dt = new Dictionary<string, object>();dt.Add("id", 1);dt.Add("name", null);dt.Add("createTime", DateTime.Now);
var t66 = db.Updateable(dt).AS("student").WhereColumns("id").ExecuteCommand();//字典集合
var dtList = new List<Dictionary<string, object>>();
dtList.Add(dt);
dtList.Add(dt2);
var t666 = db.Updateable(dtList).AS("student").WhereColumns("id").ExecuteCommand();

四、根据DataTable更新

datatable 转成字典集合插入

List<Dictionary<string,object>> dc= db.Utilities.DataTableToDictionaryList(dataTable);//转成字典
var t666 = db.Updateable(dc).AS("student").WhereColumns("id").ExecuteCommand();

五、匿名、Object、接口更新

匿名对象:https://www.donet5.com/Home/Doc?typeId=2423

Object、接口和抽象类:

//这个object必须真实类对象,比如反射的Object 或者接口接收的类对象
db.UpdateableByObject(object).ExecuteCommand();//更多功能 :动态建类等
https://www.donet5.com/Home/Doc?typeId=2562

六、更多功能

6.1 更新主键

🎯注意:ORM 默认不支持修改主键,这种需求有2种方案:

  1. 删除当前记录,然后在添加一条新记录(因为主键都可以更新,说明没有外部引用,可以直接删掉在加)

  2. 新建一个没有主键的实体,指定表名用 Wherecolumns 更新

6.2 联表更新

//多库兼容
var t17 = db.Updateable<Student>().SetColumns(it =>new Student(){ SchoolId=SqlFunc.Subqueryable<School>().Where(s=>s.Id ==it.SchoolId).Select(s=>s.Id), Name = "newname"  }).ExecuteCommand();//也可以在Where加条件//.Where(it => SqlFunc.Subqueryable<School>().Where(s => s.Id == it.SchoolId).Any())//优雅写法:MySql PgSql SqlServer Oracle 达梦、金仓  
//其中Oracle和达梦只支持2表    var t= db.Updateable<Order>().InnerJoin<Custom>((x, y) => x.CustomId == y.Id).SetColumns((x, y) => new Order() { Name = y.Name, Price = y.Id }).Where((x, y) => x.Id == 1).ExecuteCommand();

🤖生成 sql


UPDATE [STudent]  SET            
[SchoolId] = (SELECT TOP 1 [Id] FROM [School] WHERE ( [Id] =[STudent].[SchoolId] )) ,             
[Name] = @Const0   
WHERE ( [ID] = @Id1 )

6.3 调用实体内方法

 db.Insertable(new UnitInsertMethod() { ...... }).CallEntityMethod(it=>it.Create()).ExecuteCommand();db.Updateable(new UnitInsertMethod() { ..... }).CallEntityMethod(it => it.modify("admint")).ExecuteCommand();//实体 
public class UnitInsertMethod
{[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int Id { get; set; }public string Name { get; set; }public DateTime Time { get; set; }[SqlSugar.SugarColumn(IsNullable =true)]public string UserId { get; set; }public void Create(){this.Time = DateTime.Now;this.UserId = "1";}public void modify(string a){this.Time = DateTime.Now;this.UserId = a;}
} 

6.4 高性能更新

适合超大数据更新


db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList());//更新 吊打所有框架N倍,30列100万8秒更新完

6.5 导航更新

https://www.donet5.com/Home/Doc?typeId=2432

6.6 默认值(系统时间)

方式1 (5.1.3.42-preview01):通过特性指定默认值

  //更新取数据库当前时间 支持多库//UpdateServerTime =true 更新的时候取服务器时间//IsOnlyIgnoreInsert =true 插入的时候不插入该列(可用可不用根据需求来)[SugarColumn(UpdateServerTime =true,IsOnlyIgnoreInsert =true)]// getdate() now() sysdatepublic DateTime UpdateTime { get; set; }//更新根据SQL进行插入 [SugarColumn(UpdateSql  = "getdate()")] //生成   getdate()public DateTime UpdateTime2 { get; set; }[SugarColumn(UpdateSql  = "''")] // 生成  ''public string  Str { get; set; }[SugarColumn(UpdateSql  = "0")]// 生成  0public string  Str { get; set; }[SugarColumn(UpdateSql  = "num+1")]// 生成  num+1public string  num { get; set; }

🎯注意:

  • 表达更新:SetColumns(it=>new class{ name=it.name},true) 如果用到 SetColumn 需要加个true。
  • 实体更新:无需任何操作。
  • 方式2:通过 AOP 实现,文档搜索:AOP , 看标题2。
  • 注意:方式1和方式2不要冲突了。

🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀

【开篇】.NET开源 ORM 框架 SqlSugar 系列
【入门必看】.NET开源 ORM 框架 SqlSugar 系列
【实体配置】.NET开源 ORM 框架 SqlSugar 系列
【Db First】.NET开源 ORM 框架 SqlSugar 系列
【Code First】.NET开源 ORM 框架 SqlSugar 系列
【数据事务】.NET开源 ORM 框架 SqlSugar 系列
【连接池】.NET开源 ORM 框架 SqlSugar 系列
【查询目录】.NET开源 ORM 框架 SqlSugar 系列
【查询基础】.NET开源 ORM 框架 SqlSugar 系列
【排序用法】.NET开源 ORM 框架 SqlSugar 系列
【分组去重】.NET开源 ORM 框架 SqlSugar 系列
【联表查询】.NET开源 ORM 框架 SqlSugar 系列
【导航查询】.NET开源 ORM 框架 SqlSugar 系列
【子查询】.NET开源 ORM 框架 SqlSugar 系列
【嵌套查询】.NET开源 ORM 框架 SqlSugar 系列
【配置查询】.NET开源 ORM 框架 SqlSugar 系列
【并集查询】.NET开源 ORM 框架 SqlSugar 系列
【树型查询】.NET开源 ORM 框架 SqlSugar 系列
【表格查询】.NET开源 ORM 框架 SqlSugar 系列
【动态表达式】.NET开源 ORM 框架 SqlSugar 系列
【查询函数】.NET开源ORM框架 SqlSugar 系列
【过滤器】.NET开源 ORM 框架 SqlSugar 系列
【跨库查询、多库查询】.NET开源 ORM 框架
​【报表查询】.NET开源ORM框架 SqlSugar 系列
【Where语法全解密】.NET开源ORM框架 SqlSugar 系列
【Select 语法全解密】.NET开源ORM框架 SqlSugar 系列
【查询返回结果类型】.NET开源ORM框架 SqlSugar 系列
【insert 插入数据语法合集】.NET开源ORM框架 SqlSugar 系列
【SqlSugar雪花ID常见问题】.NET开源ORM框架 SqlSugar 系列
【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列


在这里插入图片描述

相关文章:

【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列

系列文章目录 &#x1f380;&#x1f380;&#x1f380; .NET开源 ORM 框架 SqlSugar 系列 &#x1f380;&#x1f380;&#x1f380; 文章目录 系列文章目录前言 &#x1f343;一、实体对象更新1.1 单条与批量1.2 不更新某列1.3 只更新某列1.4 NULL列不更新1.5 无主键/指定列…...

测试人员面试需要掌握的内容

测试人员面试需要掌握的内容 1、在公司的测试流程是什么&#xff1f; 产品经理确认本次版本的需求&#xff0c;召开需求评审会&#xff0c;进行估时排期&#xff0c;需求和时间都确定之后&#xff0c;UI出设计图&#xff0c;开发人员进行开发&#xff0c;测试人员编写测试用例…...

git 新建分支并推到远程分支

在git或者码云上创建一个项目管理&#xff0c;已经存在主分支&#xff0c;现在需要创建一个其他分支&#xff1b; 具体操作&#xff1a; 1. 查看分支情况 git branch 2. 查看分支状态 git status 3. 一次性创建并切换到本地分支 git checkout -b dev 分步骤创建和切换&…...

【Uniapp-Vue3】showLoading加载和showModal模态框示例

一、showLoading加载 uni.showLoading({ title:"标题", // 其他配置 }); uni.hideLoading(); showLoading开启后不会自动关闭&#xff0c;只能手动配置uni.hideLoading() 来关闭加载框。 二、showModel模态框 uni.showModel({ title:"标题", // 其他配置 …...

PythonOpenCV图片识别

在windows下面&#xff0c;使用python opencv 进行识别&#xff0c;获取到坐标。 依赖安装&#xff1a; pip install opencv-python pip install numpy pip install pyautogui pip install pywin32代码&#xff1a; import cv2 import numpy as np import pyautogui import o…...

构建优雅、高效的 Nodejs 命令行工具 - Archons

目录 项目简介安装基本用法样例创建一个简单的命令行工具使用archons上下文创建进度条 最后 项目地址: https://github.com/noctisynth/archons Bug反馈或功能请求&#xff1a;https://github.com/noctisynth/archons/issues 项目简介 Archons意思是“执政官”&#xff0c;我使…...

你喜欢用什么编辑器?

电脑工作者和程序员所使用的文本编辑器通常需要具备高效率、易用性以及对代码友好等特点&#xff0c;包括语法高亮、自动完成、多文件同时编辑、查找替换、版本控制集成等功能。以下是几个广受开发者欢迎且实用性较强的文本编辑器&#xff1a; Visual Studio Code&#xff08;V…...

鸿蒙报错Init keystore failed: keystore password was incorrect

报错如下&#xff1a; > hvigor ERROR: Failed :entry:defaultSignHap... > hvigor ERROR: Tools execution failed. 01-13 16:35:55 ERROR - hap-sign-tool: error: Init keystore failed: keystore password was incorrect * Try the following: > The key stor…...

【Flink】Flink内存管理

Flink内存整体结构图&#xff1a; JobManager内存管理 JVM 进程总内存(Total Process Memory)Flink总内存(Total Flink Memory)&#xff1a;JVM进程总内存减去JVM Metaspace(元空间)和JVM Overhead(运行时开销)上图解释&#xff1a; JVM进程总内存为2G;JVM运行时开销(JVM Overh…...

JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)

1&#xff0c;ZGC&#xff08;JDK21之前&#xff09; ZGC 的核心是一个并发垃圾收集器&#xff0c;所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节&#xff08;TB&#xff09;级内存&#xff0c;设计了基…...

Docker常用命令大全

Docker容器相关命令&#xff1a; 创建并启动容器&#xff1a; docker run&#xff1a;创建一个新的容器并运行一个命令。例如&#xff1a;docker run -d -p 8080:80 nginx这将后台(-d)运行一个Nginx容器&#xff0c;并映射宿主机的8080端口到容器的80端口。 列出容器&#x…...

(12)springMVC文件的上传

SpringMVC文件上传 首先是快速搭建一个springMVC项目 新建项目mvn依赖导入添加webMoudle添加Tomcat运行环境.在配置tomcat时ApplicationContext置为"/"配置Artfact的lib配置WEB-INF配置文件&#xff08;记得添加乱码过滤&#xff09;配置springmvc-servlet文件&…...

在Linux系统中无网络安装Nginx并配置负载均衡

在Linux系统中无网络安装Nginx并配置负载均衡 在现代的Web开发和运维中&#xff0c;Nginx作为一个高性能的HTTP和反向代理服务器&#xff0c;被广泛应用于负载均衡、静态资源服务、SSL终端等场景。然而&#xff0c;在某些特殊环境下&#xff0c;服务器可能无法访问互联网&…...

Android车机DIY开发之软件篇(三)编译Automotive OS错误(1)

Android车机DIY开发之软件篇(三)编译Automotive OS错误(1) 问题 FAILED: out/soong/build.ninja cd “KaTeX parse error: Expected EOF, got & at position 49: …soong_build")" &̲& BUILDER"PWD/KaTeX parse error: Expected EOF, got & …...

基于网络爬虫技术的网络新闻分析【源码+文档+部署讲解】

目 录 1 绪论 1.1 论文研究背景与意义 1.2 论文研究内容 2 系统需求分析 2.1 系统需求概述 2.2 系统需求分析 2.2.1 系统功能要求 2.2.2 系统IPO图 2.2 系统非功能性需求分析 3系统概要设计 3.1 设计约束 3.1.1需求约束 3.1.2设计策略 3.1.3 技术实现 3.3 模块…...

uniapp区域滚动——上划进行分页加载数据(详细教程)

##标题 用来总结和学习&#xff0c;便于自己查找 文章目录 一、为什么scroll-view?          1.1 区域滚动页面滚动&#xff1f;          1.2 代码&#xff1f; 二、分页功能&#xff1f;          2.1 如何实现&#xff…...

机器学习(1):线性回归概念

1 线性回归基础 1.1 什么是线性 例如&#xff1a;汽车每小时60KM&#xff0c;3小时可以行使多长距离&#xff1f;已知汽车的速度&#xff0c;则汽车的行使距离只与时间唯一相关。在二元的直角坐标系中&#xff0c;描出这一关系的图是一条直线&#xff0c;所以称为线性关系。 线…...

关于编写测试用例的细枝末节

这里写目录标题 故障判别类-边界考虑示例1.0&#xff1a;若A&#xff1e;20.3且持续时间≥15ms时&#xff08;判故周期为1000Hz&#xff09;&#xff0c;输出B为1&#xff0c;否则输出B为0。 故障判别类-不可恢复测试示例1.1&#xff1a;若A&#xff1e;20.3且持续时间≥15ms时…...

《计算机网络》课后探研题书面报告_了解PPPoE协议

PPPoE协议的工作原理与应用分析 摘 要 PPPoE&#xff08;Point-to-Point Protocol over Ethernet&#xff09;是一种广泛应用于宽带接入的网络协议&#xff0c;特别是在DSL&#xff08;数字用户线路&#xff09;和光纤网络中具有重要的应用价值。PPPoE结合了PPP协议的认证、加…...

Linux Centos 安装Jenkins到服务

一、前言 假设你已经下载了jenkins.war 安装了对应的jdk&#xff0c;下面我们来安装jenkins&#xff0c;以服务的形式安装。 二、安装 1&#xff09;将jenkins.war拷贝到合适的位置&#xff0c;我的位置 /u01/jenkins/ &#xff0c;位置你自己选。 2&#xff09;创建系统用户…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...