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

【Vue】Element开发笔记

Element开发笔记

前言

官网 https://element.eleme.cn/#/zh-CN/component/upload

其它项目网站

https://www.cnblogs.com/qq2806933146xiaobai/p/17180878.html

表格

序号列添加

<el-table-column type="index" :index="handleIndexCalc" label="#" align="center" />

handleIndexCalc是计算分页中的ID,否则序号不准确。

// 自动计算分页 Id
handleIndexCalc(index) {return ((this.queryParams.pageIndex - 1) * this.queryParams.pageSize + index + 1)
},

选择列添加

<el-table-column sortable type="selection" align="center" />

注意:同时拥有 序号列、选择列,序号必须在 选择列前面

表格高度统一,防止数据量少时,页脚上升

表格设置height属性,根据浏览器界面大小自动计算高度,留页脚面板高度。

<el-table ref="dataResult"v-loading="loading":data="dataResult.dataSource":height="tableHeight":default-sort="{ prop: queryParams.orderby, order: queryParams.sort }"row-key="id"stripeborderstyle="width: 100%;height=250"@sort-change="handleSortable">

Data:

// 表格高度
tableHeight: window.innerHeight - 280,

项目实例:

      <!-- 表格数据展示 --><el-row><el-table ref="dataResult"v-loading="loading":data="dataResult.dataSource":height="tableHeight":default-sort="{ prop: queryParams.orderby, order: queryParams.sort }"row-key="id"stripeborderstyle="width: 100%;height=250"@sort-change="handleSortable"><el-table-column type="index" :index="handleIndexCalc" label="#" align="center" /><el-table-column sortable type="selection" align="center" /><el-table-column sortable prop="title" :show-overflow-tooltip="true" align="center" label="标题" width="200px" /><el-table-column sortable prop="fileName" :show-overflow-tooltip="true" align="left" label="文档名称" width="200px" /><el-table-column sortable prop="fileType" :show-overflow-tooltip="true" align="left" label="文档格式" width="100px" /><el-table-column sortable prop="securityLevel" align="left" label="密级" width="80px" /><el-table-column prop="keyWords" :show-overflow-tooltip="true" align="left" label="关键字" width="200px" /><el-table-column sortable prop="fileSource" :show-overflow-tooltip="true"  align="left" label="资料来源" width="100px" /><el-table-column sortable prop="createName" align="left" label="创建人" width="100px" /><el-table-column sortable prop="createTime" :show-overflow-tooltip="true" align="left" label="创建时间" width="200px" /><el-table-column sortable prop="downloadCount" :show-overflow-tooltip="true" align="left" label="下载次数" width="100px" /><el-table-column sortable prop="status_dictText" :show-overflow-tooltip="true" align="left" label="审核状态" width="100px" /><el-table-column prop="failReason" align="left" :show-overflow-tooltip="true" label="不通过原因" width="250px" /><el-table-column prop="remarks" align="left" :show-overflow-tooltip="true" label="备注" width="300px" /><el-table-column label="操作" align="center" fixed="right" width="300px"><template slot-scope="scope"><el-button v-permission="['PRIV_DOC_PREVIEW']" type="text" size="mini" @click="handlePreview(scope.row)">预览</el-button><el-button v-permission="['PRIV_DOC_EDIT']" type="text" size="mini" @click="handleEdit(scope.row)">修改</el-button><el-button v-permission="['PRIV_DOC_DOWNLOAD']" type="text" size="mini" @click="handleDownLoad(scope.row)">下载</el-button><el-button v-if="scope.row.status !='3'" v-permission="['PRIV_DOC_APPROVED']" type="text" size="small" @click="handleApproved(scope.row)">审批</el-button><el-button v-if="scope.row.status !='4'" v-permission="['PRIV_DOC_APPROVEDFAILED']" type="text" size="small" @click="handleApprovedFail(scope.row)">驳回</el-button></template></el-table-column></el-table><pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageIndex" :limit.sync="queryParams.pageSize" @pagination="getList" /></el-row>

Select选择器

<template><el-select v-model="value" clearable placeholder="请选择"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option></el-select>
</template><script>export default {data() {return {options: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}],value: ''}}}
</script>
参数说明类型可选值默认值
value / v-model绑定值boolean / string / number
multiple是否多选booleanfalse
disabled是否禁用booleanfalse
value-key作为 value 唯一标识的键名,绑定值为对象类型时必填stringvalue
size输入框尺寸stringmedium/small/mini
clearable是否可以清空选项booleanfalse
collapse-tags多选时是否将选中值按文字的形式展示booleanfalse
multiple-limit多选时用户最多可以选择的项目数,为 0 则不限制number0
nameselect input 的 name 属性string
autocompleteselect input 的 autocomplete 属性stringoff
auto-complete下个主版本弃用stringoff
placeholder占位符string请选择
filterable是否可搜索booleanfalse
allow-create是否允许用户创建新条目,需配合 filterable 使用booleanfalse
filter-method自定义搜索方法function
remote是否为远程搜索booleanfalse
remote-method远程搜索方法function
loading是否正在从远程获取数据booleanfalse
loading-text远程加载时显示的文字string加载中
no-match-text搜索条件无匹配时显示的文字,也可以使用slot="empty"设置string无匹配数据
no-data-text选项为空时显示的文字,也可以使用slot="empty"设置string无数据
popper-classSelect 下拉框的类名string
reserve-keyword多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词booleanfalse
default-first-option在输入框按下回车,选择第一个匹配项。需配合 filterableremote 使用boolean-false
popper-append-to-body是否将弹出框插入至 body 元素。在弹出框的定位出现问题时,可将该属性设置为 falseboolean-true
automatic-dropdown对于不可搜索的 Select,是否在输入框获得焦点后自动弹出选项菜单boolean-false

项目实例

              <el-select v-model="queryParams.queryStatus" placeholder="请选择文档状态" filterable clearable  @change="handleSelectSearchStatus"><el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" /></el-select>
 // 搜索框-文档状态statusOptions: [],// 创建时 created() {getOption('SYSTEM_STATUS').then((response) => {this.statusOptions = response.data}),this.getList()},// 选择文档状态(搜索框)handleSelectSearchStatus(e) {this.queryParams.queryStatus = e},

el-select 使用 multiple多选属性时,数据定义必须符合规范,并且返回的是 字符串数组,一开始需要定义好,否则数据无法显示。

              <el-selectv-model="keyWordsList"multiplefilterableallow-createdefault-first-optionplaceholder="请填写关键字(可多选,可手填按回车键)"><el-optionv-for="item in keyWordsOptions":key="item.wordName":label="item.wordName":value="item.wordName" /></el-select>
    // 控件绑定的keyWordsList: [],/** 编辑按钮操作 */handleEdit(row) {this.reset()this.postForm = { ...row }this.keyWordsList =  row.keyWords.split(',') //数据库取出来是字符串,转数组this.bOpenForm = truethis.title = '编辑文档'},

dialog弹出框

需要注意浅拷贝深拷贝 问题,row是Object对象类型,如果直接赋值,就变成了 浅拷贝,相当于我们的引用传递。

//方法一
this.form = JSON.parse(JSON.stringify(row));
//方法二
this.form = {...row}
/** 新增按钮操作 */
handleCreate() {this.reset()this.open = truethis.title = '添加关键字'
},
/** 修改按钮操作 */
handleUpdate(row) {this.reset()this.form = { ...row }this.open = truethis.title = '修改关键字'
},

每次窗体打开,并不会清除上一次验证规则,需要手动调用clearValidate()方法清除,与C#一样。

  watch: {// 打开弹窗,清空上一次验证规则bOpenForm: {handler(newVal) {if (newVal) {this.$nextTick(() => {this.$refs['postForm'].clearValidate()})}},},},

el-upload上传组件

:action是执行上传动作的后台接口,el-button是触发上传的按钮。

multiple 设置是否可以同时选中多个文件上传

accept 设置限制上传文件的格式

<el-upload :action="uploadActionUrl"accept="image/jpeg,image/gif,image/png":before-upload="onBeforeUpload"multiple:limit="3":on-exceed="handleExceed"><el-button size="small" type="primary">点击上传</el-button><div slot="tip" class="el-upload__tip">请上传图片格式文件</div>
</el-upload>
...onBeforeUpload(file){const isIMAGE = file.type === 'image/jpeg'||'image/gif'||'image/png';const isLt1M = file.size / 1024 / 1024 < 1;if (!isIMAGE) {this.$message.error('上传文件只能是图片格式!');}if (!isLt1M) {this.$message.error('上传文件大小不能超过 1MB!');}return isIMAGE && isLt1M;}

属性

参数说明dd类型可选值默认值
action必选参数,上传的地址string
headers设置上传的请求头部object
multiple是否支持多选文件boolean
data上传时附带的额外参数object
name上传的文件字段名stringfile
with-credentials支持发送 cookie 凭证信息booleanfalse
show-file-list是否显示已上传文件列表booleantrue
drag是否启用拖拽上传booleanfalse
accept接受上传的文件类型(thumbnail-mode 模式下此参数无效)string
on-preview点击文件列表中已上传的文件时的钩子function(file)
on-remove文件列表移除文件时的钩子function(file, fileList)
on-success文件上传成功时的钩子function(response, file, fileList)
on-error文件上传失败时的钩子function(err, file, fileList)
on-progress文件上传时的钩子function(event, file, fileList)
on-change文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用function(file, fileList)
before-upload上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。function(file)
before-remove删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。function(file, fileList)
list-type文件列表的类型stringtext/picture/picture-cardtext
auto-upload是否在选取文件后立即进行上传booleantrue
file-list上传的文件列表, 例如: [{name: ‘food.jpg’, url: ‘https://xxx.cdn.com/xxx.jpg’}]array[]
http-request覆盖默认的上传行为,可以自定义上传的实现function
disabled是否禁用booleanfalse
limit最大允许上传个数number
on-exceed文件超出个数限制时的钩子function(files, fileList)-

项目实例

这里使用了,父组件向子组件传参,子组件向父组件传参

            <el-form-item label="上传附件" prop="fileName"><file-upload v-model="postForm.fileName" :uploadlimit="filelimit" :accept="fileAccept" :listType="filelistType" @fileList="getFileList" :actionUrl="fileActionUrl"  :tips="filetips" /></el-form-item>

父组件传参数

      // 上传附件fileActionUrl: CONFIG_URL.PUBLIC_CONFIG.baseURL + '/api/doc/UpLoadFile',fileAccept: '.doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf',filelimit: 1,filelistType: 'file',filetips: '只能上传办公文档,其它类型建议不要上传',

子组件接收参数,在props中定义

  // 接收父组件传递的值props: {// 动作actionactionUrl: {type: String,required: true,default: '/api/doc/UpLoadFile'},// 接受上传的文件类型accept: {type: String,required: true},// 最大允许上传个数uploadlimit: {type: Number,required: true,default: 1},/** 文件列表的类型* drag是否启用拖拽上传* list-type 可选值 text/picture/picture-card**/listType: {type: String,required: true,default: 'text'},// 上传提示语tips: {type: String,required: false}},

子组件向父组件回传数据

      // $emit() 向外触发父组件中方法,fileList由父组件传递过来this.$emit("fileList", this.ret_fileList)

父组件接收子组件回传的数据,需要在watch监听器中实现,能够感知数据变化。

  watch: {// 监听文件列表变化fileList: {handler() {this.$emit('fileList', this.ret_fileList)}}},

子组件代码

<!-- 文件上传通用组件(支持拖拽上传,打开本地资源管理器) -->
<template><div class="content"><el-upload:action="actionUrl":accept="accept":on-preview="handlePreview":before-remove="beforeRemove":on-remove="handleRemove":on-exceed="handleExceed":on-success="handleSuccess":drag="listType!=='picture'":limit="uploadlimit":headers="header":file-list="fileList":list-type="listType"><el-button v-if="listType==='picture'" size="small" type="primary">点击上传</el-button><i v-if="listType!=='picture'" class="el-icon-upload" /><div v-if="listType!=='picture'" class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div><!-- 附件提示信息 --><div v-if="tips" slot="tip" class="el-upload__tip">{{ tips }}</div></el-upload></div>
</template>
<script>
import { getToken } from '@/utils/auth'
export default {name: 'FileUpload',// 接收父组件传递的值props: {// 动作actionactionUrl: {type: String,required: true,default: '/api/doc/UpLoadFile'},// 接受上传的文件类型accept: {type: String,required: true},// 最大允许上传个数uploadlimit: {type: Number,required: true,default: 1},/** 文件列表的类型* drag是否启用拖拽上传* list-type 可选值 text/picture/picture-card**/listType: {type: String,required: true,default: 'text'},// 上传提示语tips: {type: String,required: false}},data() {return {// 界面绑定的文件列表,参数不可更改,否则底层无法识别// 上传的文件列表,例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}]fileList: [], // 服务器返回的文件列表ret_fileList: [],header: {}}},/*** watch侦听器* 侦听父组件传递的值,实现动态传递数据*/// watch: {// },created() {this.header = { token: getToken() }},methods: {// 文件列表重置reset() {this.ret_fileList = [ {fileName: undefined,fileType: undefined,fileUrl: undefined,viewUrl: undefined,cover: ''}]},// 文件超出个数限制时的钩子handleExceed() {this.$message.warning(`每次只能上传 ${this.uploadlimit} 个文件`)},// 点击的文件列表元素handlePreview(file) {console.log("你点击了 " + file.name)this.$message.warning("你点击了 " + file.name)},// 删除文件之前的钩子beforeRemove(file) {return this.$confirm(`确定移除 ${ file.name }文件?`)},// 文件列表移除文件时的钩子handleRemove(file, fileList) {console.log(file, fileList);this.fileList = this.fileList.filter((item) => {return item.name !== file.name })},// 文件上传成功时的钩子handleSuccess(response) {if (response.statusCode === 200) {this.$message({message: '上传成功',type: 'success'})this.ret_fileList = response.data}else{this.$message({type: 'error',message: response.msg})this.reset()}// $emit() 向外触发父组件中方法,fileList由父组件传递过来this.$emit("fileList", this.ret_fileList)}}
}</script>

相关文章:

【Vue】Element开发笔记

Element开发笔记 前言 官网 https://element.eleme.cn/#/zh-CN/component/upload 其它项目网站 https://www.cnblogs.com/qq2806933146xiaobai/p/17180878.html 表格 序号列添加 <el-table-column type"index" :index"handleIndexCalc" label&qu…...

How to install mongodb 7.0 to Ubuntu 22.04

How to install mongodb 7.0 to Ubuntu 22.04 1、安装1.1、添加gpg1.2、添加apt源1.3、更新1.4、安装 2、管理2.1、服务管理2.1.1、查看服务状态2.1.2、启动服务2.1.3、 设置服务为开机启动2.1.4、取消服务开机启动2.1.5、关闭服务2.1.6、服务重启 2.2、mongosh2.2.1、进入mong…...

AFL安全漏洞挖掘

安全之安全(security)博客目录导读 ATF(TF-A)/OPTEE之FUZZ安全漏洞挖掘汇总 目录 一、AFL简介 二、AFL的安装 三、代码示例及种子语料库 四、AFL插桩编译 五、AFL运行及测试 六、AFL结果分析 一、AFL简介 模糊测试&#xff08;Fuzzing&#xff09;技术作为漏洞挖掘最有…...

ES6 let const var和解构赋值

1.let/const和var的区别 1.变量提升&#xff1a;var会发生变量提升&#xff0c;let和const不存在变量提升 2.暂时性死区&#xff1a;变量声明之前变量不可用称为暂时性死区。var不存在&#xff0c;let和const存在暂时性死区 3.typeof 不再是百分百不会报错&#xff1a;let声…...

03、MySQL-------数据库中间件MyCat实现读写分离

目录 八、数据库中间件MyCat实现读写分离1、克隆&#xff1a;2、配置分析&#xff1a;1、schema.xml2、启动mycat&#xff1a;3、关闭防火墙&#xff1a;4、代码测试&#xff1a;测试写入&#xff1a;测试读&#xff1a;强制读Master 八、数据库中间件MyCat实现读写分离 作用&…...

虹科活动 | 探索全新AR应用时代,虹科AR VIP研讨会广州场回顾!

文章来源&#xff1a;虹科数字化AR 阅读原文&#xff1a;https://mp.weixin.qq.com/s/7tmYR42Tw5XLn70fm8Nnew 主题演讲 本次研讨会&#xff0c;虹科特邀 “工业AR鼻祖” 美国Vuzix公司的首席应用工程师郑慎方先生进行主题演讲&#xff0c;并邀请到了各界的专业人士和企业代表参…...

非科班,补基础

大家好&#xff0c;我是大彬~ 今天跟大家分享知识星球小伙伴关于【非科班转码如何补基础】的提问。 往期星球提问整理&#xff1a; 读博&#xff1f;找工作&#xff1f; 性格测试真的很重要 想找一份实习工作&#xff0c;需要准备什么 球友提问&#xff1a; 大彬大佬&#xf…...

安全性与合规性:IT运维的双重守护

在当今数字化时代&#xff0c;信息技术&#xff08;IT&#xff09;已深入渗透到企业的各个层面。随着数据和技术的不断发展&#xff0c;IT运维安全性和合规性逐渐成为了企业运营的两大核心要素。它们不仅保障了企业数据的安全&#xff0c;更维护了公司的声誉和客户信任。本文将…...

session 反序列化

原理详解 ctfshow web 263 ctfshow 新手杯 剪刀石头布 这里我们可以发现服务器使用的处理器为php_serialize&#xff0c;与当前页面处理器不同&#xff0c;在反序列化的时候会造成一些问题。同时cleanup配置没开&#xff0c;关闭了session自动清理&#xff0c;所以我们不需要…...

PostgreSQL中实现数学中的组合问题

记得在学《数值分析》这门课程时,其中有排列组合的相关计算。最近没有想到,自己居然在编程上需要了这个问题,需要在数据库的一张表中,找出任意n条记录的组合,判断组合后的图形是什么,也就是组合问题。从网上搜索的相关资料,发现很多是在Java或者python代码实现的。因为数…...

编译和连接

前言&#xff1a;哈喽小伙伴们&#xff0c;从我们开始学习C语言到实现如今的成果&#xff0c;可以说我们对C语言的掌握已经算是精通级别了&#xff0c;但是我们只学习了怎么写代码&#xff0c;却没怎么了解过代码的背后是怎么工作的。 那么今天这篇文章我们一起来学习C语言的最…...

常见分布整理

概率论 - 常见分布&#xff08;及其分布表&#xff09; 常见分布的期望和方差 离散型分布 两点分布 有2种结果&#xff0c;实验只做1次 X~b(1,p)则有 P(X k) pk (1-p)1-k,k 0, 1 数学期望&#xff1a;E(X) p 方差&#xff1a;D(X)p(1-p) 二项分布 P(A) p&#xff0…...

ubuntu终端命令行下如何使用NetworkManager(netplan)来配置wifi网络

最近在给家里折腾一个文件共享服务器给家里的小米摄像头保存监控视频用。树莓派太贵了&#xff0c;找来找去发现香橙派orangepi zero3 是最低成本的替代解决方案&#xff08;网络足够快&#xff0c;CPU的IO能力足够强&#xff09;&#xff0c;香橙派orangepi zero3的操作系统是…...

GO学习之 goroutine的调度原理

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

CUDA学习笔记5——CUDA程序错误检测

CUDA程序错误检测 所有CUDA的API函数都有一个类型为cudaError_t的返回值&#xff0c;代表了一种错误信息&#xff1b;只有返回cudaSuccess时&#xff0c;才是成功调用。 cudaGetLastError()用来检测核函数的执行是否出错cudaGetErrorString()输出错误信息 #include <stdi…...

虹科 | 解决方案 | 机械免拆压力测试方案

对于发动机的气门卡滞或气门开闭时刻错误、活塞环磨损、喷油嘴泄漏/堵塞等故障&#xff0c;往往需要解体发动机或拆卸部件才能发现&#xff1b;而对于某些轻微的故障&#xff0c;即使解体了发动机后也经常难于肉眼判别 虹科Pico提供的WPS500压力测试方案&#xff0c;可以动态测…...

Python数据挖掘实用案例——自动售货机销售数据分析与应用

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…...

深度学习技巧应用29-软件设计模式与神经网络巧妙结合,如何快速记忆软件设计模式

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下软件设计模式与神经网络巧妙结合&#xff0c;如何快速记忆软件设计模式。我们知道软件设计模式有23种&#xff0c;考试的时候经常会考到&#xff0c;但是这么种里面我们如何取判断它呢&#xff0c;如何去记忆它呢&a…...

中文编程开发语言工具应用案例:ps5体验馆计时收费管理系统软件

中文编程开发语言工具应用案例&#xff1a;ps5体验馆计时收费管理系统软件 软件部分功能&#xff1a; 1、计时计费功能&#xff1a;只需点开始计时即可&#xff0c;时间直观显示 2、商品管理功能&#xff1a;可以管理饮料等商品 3、会员管理功能&#xff1a;支持只用手机号作…...

绘制核密度估计图

简介 核密度估计图&#xff08;Kernel Density Estimation&#xff0c;KDE&#xff09;是一种用于估计数据分布的非参数方法&#xff0c;通常用于可视化和理解数据的分布情况。它通过平滑地估计数据的概率密度函数&#xff08;PDF&#xff09;来显示数据的分布特征&#xff0c…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》

近日&#xff0c;嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》&#xff0c;海云安高敏捷信创白盒&#xff08;SCAP&#xff09;成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天&#xff0c;网络安全已成为企业生存与发展的核心基石&#xff0c;为了解…...

结构化文件管理实战:实现目录自动创建与归类

手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题&#xff0c;进而引发后续程序异常。使用工具进行标准化操作&#xff0c;能有效降低出错概率。 需要快速整理大量文件的技术用户而言&#xff0c;这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB&#xff0c;…...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数&#xff0c;如果我们没有定义实现某个中断函数&#xff0c;那么当stm32产生了该中断时&#xff0c;就会默认跑这里来了&#xff0c;所以我们打开了什么中断&#xff0c;一定要记得实现对应的系统中断函数&#xff0c;否则会进来一直循环…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...