- 博客(57)
- 收藏
- 关注
原创 项目的BaseService封装了jdbcTemplate
前置知识:JdbcTemplate 使用总结JdbcTemplate详解主角:BaseService类引入了一些类(下面一一贴出来)import com.njry.controller.BaseController;import com.njry.model.User;import com.njry.utils.common.StringUtils;import com.njry.utils.db.BatchSql;import com.njry.utils.db.DBSpringUtil
2024-07-22 17:26:03
411
原创 数据库表导出到excel
数据库表导出到excel:前置知识1 ALL_TAB_COLS数据库表导出到excel:前置知识2 Quartz基本使用数据库表导出到excel:前置知识3 项目封装的Quartz实现动态定时任务数据库表导出到excel:前置知识4 业务和效果 发起清单下载control层InventoryDownloadLogController/** */package com.njry.sjzl.busi.rest;import com.njry.annotation.Log;import
2024-07-04 19:19:22
466
原创 数据库表导出到excel:前置知识4 业务和效果
清单配置页面(就是配置那些用户可以下载那些表内容,清单下载实际就是指数据库表下载,清单就是对应的表)发起自己想下载的清单(先异步把数据库表生成文件,当用户下载直接返回文件)等任务调度查询数据,再存储的文件存储位置,这里根据状态判断是否可以下载。比如:导出一个atom_base_info表数据(数据多)下面这个配置审核状态一类不问,直接到清单下载页面。导出效果(另一个admin用户导出就不看了)atom_base_info的数据结构。
2024-07-04 19:11:24
326
原创 数据库表导出到excel:前置知识3 项目封装的Quartz实现动态定时任务
参考网址目标:定时任务持久化到数据库,动态调整数据库里保存的cron表达式使定时任务可以跟随变化。从SYS_QUARTZ_JOB表(通过反射创建任务)和SYS_QUARTZ_LOG表(主要就是记录日志)构建两个对应的实体类:QuartzJob和QuartzLog1.看表结构-- Create tablecreate table SYS_QUARTZ_JOB( job_id NUMBER(20) not null, bean_name NVAR
2024-07-04 19:10:43
487
原创 数据库表导出到excel:前置知识2 Quartz基本使用
Schedule维护着一个定时任务和触发器的注册表,当两者注册之后,如果触发器到达规定时间触发的时候,Schedule负责执行与触发器关联的定时任务。值得注意的是一个定时任务可以对应多个触发器,当每个触发器触发的时候都会执行其关联的定时任务,但是一个触发器只能对应一个定时任务。Quartz是一款功能强大的任务调度框架,官网介绍说:“Quartz可以执行数以百计甚至数以万计的简单或复杂的定时任务,并且可以集成到任何Java应用程序中”。2.更关键的是Trigger,他决定了一个任务什么时候执行,怎么执行。
2024-07-04 19:09:40
962
原创 数据库表导出到excel:前置知识1 ALL_TAB_COLS
DATA_TYPE_OWNER: 字段类型的owner。TABLE_NAME: 表,视图及聚簇的名称。当前用户可访问的表、视图和群集的列的相关信息。DATA_TYPE :字段的数据类型。OWNER:表,视图及群集的Owner。COLUMN_NAME: 字段名。DATA_LENGTH :字段长度。NULLABLE:是否可以为空。COLUMN_ID:列id。
2024-07-04 19:07:58
268
原创 记录一下简单导入导出excel二级表头
数据库导入导出表头之前的工具类GenerateExcelToFile新增两个导出这种二级表头方法package com.njry.utils;import cn.hutool.core.util.IdUtil;import com.njry.config.FileProperties;import com.njry.exception.BadRequestException;import org.apache.poi.hssf.usermodel.HSSFCell;import org.a
2024-07-04 19:05:47
424
原创 merge into的基本用法
merge into 目标表 using 源表 on (匹配条件) when matched then 执行update 操作 或 delete操作 when not matched then 执行 insert 操作。顾名思义,merge into是合并了insert和update操作,其执行效率要高于分别单独执行insert和update语句。在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已。
2024-07-04 19:03:05
985
原创 getPhysicalNumberOfCells获取列数不是合并前实际列数
问题就是:有的导入复杂表头被覆盖有默认空字符串,有的直接不存在这个单元格实际我需要下面这种情况解决办法就是在合并单元格里面判断,不是第一行第一列都设置空字符串之前贴过导入复杂表头,这里在贴一边package com.njry.modules.system.rest;import com.njry.exception.BadRequestException;import com.njry.modules.tools.domain.vo.HeaderCell;import com.n
2024-06-21 15:44:03
395
原创 ORA-01790: 表达式必须具有与对应表达式相同的数据类型
在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。而一旦传入的是null它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。jdbcType了解一下啊,
2024-06-20 11:18:23
1074
原创 分页插件结合collection标签后分页数量不准确的问题
问题1:不使用collection 聚合分页正确简单列子T_ATOM_DICT表有idname1原子12原子23原子34原子45原子56原子6T_ATOM_DICT_AUDIT_ROUTE表审核记录表有idaudit1拒绝1通过4拒绝我要显示那些原子审核了,我把两个表inner join 就是那些原子审核过了idnameaudit1原子1拒绝1原子1通
2024-06-19 18:40:02
1218
原创 plsql导入excel
这里点击导入,右下角就一直显示导入记录(点击口径却没把Field填,只写了FeildType选择string,白白高兴,还得重新导入)因为temp_old_table有重复的atomname,所以执行update的时候要distinct。要根据temp_old_table的原子名称把对应的口径输入值到temp_new_table里面。另一个只有原子名称temp_new_table也是两个字段原子名称和口径,口径没值,要输入口径。一个表里temp_old_table有两个在字段原子名称和口径,近两万条数据,
2024-06-07 19:16:06
1826
原创 登陆后@PreAuthorize校验
SecurityContextHolder.getContext().getAuthentication()获取令牌后获取usernanme(这就是为啥一开始SecurityContextHolder.getContext().setAuthentication(authentication);SecurityContextHolder.getContext()获取的是SecurityContext就是设置令牌和保存令牌。看一下UserDetails接口(里面没有我们三个属性的方法)之前的令牌我们存的是。
2024-06-05 17:29:45
501
原创 MybatisPlus - updateFill (strictUpdateFill)更新时间 自动填充失败
updateFill的strictUpdateFill失效
2024-06-03 17:14:48
1199
原创 oracle数据回显时候递归实战
太简单的两篇递归循环先看资产表T_ATOM_ASSET结构看业务类别表T_ATOM_BUSI_CATEGORY结构。
2024-05-29 17:27:07
486
原创 导出excel带水印
需要一些前置知识(一些基本知识)导出excel带水印:前置知识1 BufferedImage和ImageIO导出excel带水印:前置知识2 Graphics2D用法导出excel带水印:前置知识3 ByteArrayOutputStream导出excel带水印:前置知识4 BigExcelWriter导出excel带水印:前置知识5 POI包前端代码就不贴,直接看页面开始看后端代码搜索类NjryTaskInfoQueryCriteriapackage com.njry.sjzl.b
2024-05-20 16:34:58
973
原创 导出excel带水印:前置知识5 POI包
即“讨厌的电子表格格式”HSSF 是 POI 的子项目,用于处理 Excel 97-2003 格式(.xls 文件)。它允许您读取、创建和修改 Excel 文档,包括工作簿、工作表、单元格、公式等。:XSSF 是 POI 的子项目,用于处理 Excel 2007及更高版本的 XLSX 格式(基于XML的文件格式)。它支持读取和写入 XLSX 文件,并提供了对新 Excel 特性的支持。:HWPF 是 POI 的子项目,用于处理 Word 97-2003 格式的文档(.doc 文件)。
2024-05-20 16:27:20
1031
原创 导出excel带水印:前置知识4 BigExcelWriter
参考地址BigExcelWriter(ExcelWriter的升级版)详解说起BigExcelWriter不得不说一下他的父亲ExcelWriterExcel 写入器ExcelWriter用于通过POI将数据写出到Excel,此对象可完成以下两个功能编辑已存在的Excel,可写出原Excel文件,也可写出到其它地方(到文件或到流)新建一个空的Excel工作簿,完成数据填充后写出(到文件或到流)对于大量数据输出,采用ExcelWriter容易引起内存溢出,因此有了BigExcelWriter。
2024-05-20 16:26:40
1092
原创 导出excel带水印:前置知识3 ByteArrayOutputStream
在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作.ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。先看ByteArrayOutputStream类源码。一个简单例子(初窥法门)
2024-05-20 16:25:52
322
原创 导出excel带水印:前置知识1 BufferedImage和ImageIO
项目用到创建画笔对象(开始 Graphics2D 的使用)// 获取图片的宽高// 图片裁剪// 创建画笔对象。
2024-05-20 16:23:29
194
原创 HSSFWorkbook apache.poi设置行高和获取行高
poi中的行高单位和excel的行高单位是不一样得,excel中的行高单位是pt(point,磅)而poi中的行高单位是twips(缇)dpi(或ppi)表示分辨率,即pixel(dot) per inch,每英寸的像素(点)数。导入excel中行高最多为409pt,也就是409*20= 8180twips。pt是绝对长度,表示point(磅),是印刷行业常用单位,等于1/72英寸。px是相对长度,表示pixel(像素),是屏幕上显示数据的最基本的点。此外,px和pt,twips的换算公式是。
2024-05-16 15:35:48
775
原创 poi低版本工具类换成poi5.2导出excel表头
之前写的低版本poi 3.8工具是可以用,但是在导出的时候出现问题所以还是得用高版本工具,原来低版本链接poi低版本导入excel表头问题在处理Excel文件时,您可能已经使用了Apache POI库。然而,在使用过程中,您可能会遇到一个常见的错误:java.lang.NoSuchFieldError:Factory。这个错误通常意味着在运行时环境中存在类路径问题或不同版本的POI库冲突解决办法我把之前低版本poi 3.8 兼容删除,把里面工具类都换成5.2最新的工具类ExcelColorHe
2024-05-11 19:13:50
1220
原创 用户登录后端:验签
前端请求拦截器工具类 cryptomd5Util.jsconst crypto = require('crypto')const publicKey = 'xxxx'export function encryptedHmacMd5Data(appid, data, timestamp) { const hmac = crypto.createHmac('md5', publicKey) let params = data if (typeof data === 'object') {
2024-05-10 20:39:25
1061
原创 PasswordEncoder详解
PasswordEncoder是一个密码解析器Spring Security封装了如bcrypt, PBKDF2, scrypt, Argon2等主流适应性单向加密方法( adaptive one-way functions),用以进行密码存储和校验。
2024-05-10 11:46:29
1827
1
原创 JAVA POI 把execl树形结构转成多叉树结构返回JSON字符串给前端
好文章原文复制(我只是传播者),直接去看原文(我至今还不会使用,写死的实现了)
2024-05-09 20:01:52
302
原创 poi低版本导入excel表头
参考引入低版本的poi不和原来项目高版本冲突定义两个实体类HeaderCell和HeaderRegionpackage com.njry.domain.vo;import lombok.Data;/** * @description 标题的单元格属性 * @author 大佬 * @date 2015-10-16 */@Datapublic class HeaderCell { private int rowIndex; //
2024-05-09 19:27:14
504
原创 最佳解决Maven同一依赖多版本共存问题,重复依赖(同一个jar包,多个版本)-maven-shade-plugin
如果配置了maven_home 和java_home可以任意打开cmd执行(我的是在apache-maven的bin下执行的)-Dfile=D:\mavenrepository/maven-shade.jar 是指定重新生成的jar(放的位置)找到这个文件看看是不是在自己项目的本地仓储中(我的就不一致,手动移动到本地仓储)参照原文链接生成的文件(下面是我放的位置)然后就可以在项目pom中引入,例如我的。执行指令后看log最后生成的位置。
2024-05-09 09:15:41
1159
原创 项目导入图片和缓存处理
前端<myUpload v-model="show" :headers="headers" :url="updateAvatarApi" @crop-upload-success="cropUploadSuccess" /> </div>import myUpload from 'vue-image-crop-upload'import { mapGetters } from 'vuex'import { getToken } f
2024-05-07 17:37:42
498
原创 row_number 实际基本应用
之前错误的是根据username修改,发现之前所有锁记录都修改了,我们只需要修改当前锁时间。项目用户登录锁可以锁多次,只想修改超过当前时间的锁截止时间。先使用row_number看看效果。当前表数据(存在相同用户锁)开始使用row_number。最终修改最新一条锁的指定时间。
2024-05-06 13:53:30
326
原创 Row number 函数用法
综上所述,这段代码的用途是在每个由username定义的分区中,为每行分配一个唯一的序列号,而且这个序列号是按照lock_date_end进行排序的。如果你有一个包含多个username值的表,这个查询将返回每个username值对应的行的序列号,且每个username内部的行是按照lock_date_end排序的。需要注意的是,这里的排序不会影响ROW_NUMBER()分配的序列号,它仅仅是分区内部行的顺序。ROW_NUMBER(): 这是一个窗口函数,用于分配一个唯一的序列号给每个窗口内的行。
2024-05-06 10:25:28
641
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人