
java
Xu_jesse
这个作者很懒,什么都没留下…
展开
-
如何总是更新某个字段
项目用的mybatisPlus,现在有一个字段,不管是不是空,都需要更新这个字段原创 2023-02-24 17:20:10 · 433 阅读 · 1 评论 -
jeecg导出一对多,主子表,子表某字段为多字典项
要求: 导出主数据以及明细数据,明细数据可能有多条,标准的一对多导出。 唯一的难点是:有两个字段是字典项,而且字典项是级联的,第一个字典项好控制,但是第二个字段的字典项需要根据第一个字典项的值来确定。 举个例子:有10个字典,第一个字段用第一个字典,但是第二个字段需要从那9个字典中取。导出形式:思路:整体思路还是按照jeecg官网给出的例子,地址:http://doc.jeecg.com/2044230 本想在前端将字典项中的内容都传过来保存,但是字段用的dicCode注解,不太好处理,于原创 2022-05-19 17:47:09 · 1936 阅读 · 0 评论 -
前端页面导出PDF文件,并添加水印
要求: 最近在维护一个老项目(后端是ssm,前端是jsp),要求导出一个报表页,导出为pdf文档。表头需要增加 ‘内部资料,不宜公开‘,同时页面增加水印。导出效果:如下图(仅展示一部分):整体思路:本来想着java代码(jasperReport)完成,但是一是发现jasperReport好像不太支持水印,二是itext会比较繁琐,看着这些生成的echarts图,后端做的话会非常耗费精力,耗费时间。生成的图片还可能不一样样式。于是考虑前端直接导出为pdf,未使用任何后端代码警示语和水印我采用原创 2022-04-11 16:43:19 · 5239 阅读 · 3 评论 -
Jeecg 导出复杂表格
要求:根据驾驶员信息,导出相应的排班信息如下图所示:分析:jeecg支持的普通导出满足不了我的表头需求,表头后面的站点和发车时间是两个维度,而且数量不确定,所以,使用jeecg的通用下载就不行了。只能自己手动生成excel了。废话不多说,代码如下:Controller层:@Slf4j@Api(tags="驾驶员")@RestController@RequestMapping("/driver/management")public class BusDriverManagementCo原创 2022-03-30 14:50:06 · 1138 阅读 · 1 评论 -
queryWrapper在count时使用distinct
项目中某个查询需要使用到统计数量的功能,mybatis提供了count方法,但是,需求里需要对去重,需要用到distinct,如下格式:count(distinct KEY_)SELECT COUNT(DISTINCT KEY_) FROM program WHERE (STATE_ = 4)对应代码如下: QueryWrapper<Program> query = new QueryWrapper<>(); query.select("distinct KEY原创 2022-01-07 10:43:20 · 13041 阅读 · 0 评论 -
mongo group按月统计最近一年内的数据
需求描述:数据在mongo中,要求按月统计最近一年内的数据;问题描述:1.每天都会有数据,但是数据每天都是全量的,也就是说2号的数据包含1号的全部数据; 所以,按月统计,每月只能取最后一天的数据进行加和;2.时间字段只有一个,所以需要对时间格式化成日和月的形式:日用来过滤每月最后一天; 月用来统计每月数据量;话不多说,上代码 @Autowired private MongoTemplate mongoTemplate; @Override public原创 2021-12-09 17:45:25 · 1411 阅读 · 0 评论 -
为什么重写equals方法,还必须要重写hashcode方法
首先,需要知道的是hashcode的作用:(1)如果一个对象没有重写hashcode,那么,hashcode是对象的地址值,不同对象hashcode值是不相等的。(2)如果重写了hashcode,一般是根据对象的属性来获取hashcode,那么不同对象hashcode可能相等。其次,我们来看一下equals的作用:一个类如果没有重写equals,通过equals()比较该类的两个对象时,等价于比较对象的hashcode值。...原创 2021-10-19 11:31:58 · 522 阅读 · 0 评论 -
mybatisplus无xml文件实现多表关联查询分页查询
使用mybatisplus提供的方法,解决不了多表关联条件查询,需要自己写代码。可以基于xml方式,也可以基于注解实现。本文档就基于注解或者纯代码方式解决。方式一:采用注解方式;1. 首先写一个mapper集成baseMapper,其中语句中的${ew.customSqlSegment}就这么写。mybatisplus会自动解析。2. 写一个class,写上所有需要的字段。这里就不给出了。3. 写一个service类,注入mapper类,使用方法即可。Mapper类:需要写注解public原创 2021-09-30 15:06:18 · 5062 阅读 · 0 评论 -
es操作模板类-封装restHighLevelClient相关操作,数据迁移使用
本人在进行数据迁移,主要是从mongo和mysql中的数据迁移到es中,测试了一下,效果还不错,故此记录一下,这篇主要是es的封装相关。如果想看迁移相关代码,链接如下:https://blog.youkuaiyun.com/xjx891111/article/details/120502163代码如下:package com.jesse.metadata.utils;import java.io.IOException;import java.io.Serializable;import java.uti原创 2021-09-27 17:46:25 · 959 阅读 · 0 评论 -
mongoTemplate多级关联查询自查询,并将数据同步到es中
查了一下,网上的多级关联一般都是一个主表关联两个子表,没有主–子--孙 表的这种关联查询形式,故此,记录一下。需求描述:将mongo中的column相关的信息同步到es。相关结构:column中有tableId,table表中有dbId,db中有dbCode,而dbType和InstanceName在mysql中,完整的db:dBCode+dbType+InstanceName注意:上面的column、table、db,它们其实都是一个表(在一个表中存储),我是为了大家好理解,所原创 2021-09-27 10:07:41 · 1006 阅读 · 0 评论 -
MongoTemplate查询海量数据
在进行数据迁移时,需要从mongodb中获取数据,而数据有比较多,所以不能一次性取出所有数据,需要分批获取数据。分批获取数据主要有两种方式: Criteria criteria = Criteria.where("typeName").is("rdbms_table") .and("status").is("ACTIVE") .and("attributes.versionType").is("formal"); Query query = new Q原创 2021-09-26 14:23:40 · 3295 阅读 · 0 评论 -
mongoTemplate实现按天统计数据,每天需要取最新的数据
> 业务需求:按天统计数据,所有数据都在mongodb中。> 难点:不能直接统计,需要过滤每天数据。每天数据有多条,需要查询每天中的最新的一批数据,而最新的一批数据又在不同的任务中mongodb中不支持子查询。所以,一次性就查不出来> 解决办法:采用多次查询第一次查询按天分组查出当天最新的一批数据。第二次再将第一次的结果集作为条件再去mongodb中进行查询统计。返回数据格式如下图:最终效果如下图:package com.jesse.hbm.se原创 2021-09-18 18:49:20 · 2434 阅读 · 0 评论 -
mongoTemplate实现带分页查询
所有数据存储在mongodb中,在mongodb中进行分页,需要自己处理分页条件,使用skip和limit进行查询当前页面的数据。注意:mongo是通过正则表达式的形式增加模糊过滤mongodb对数据类型敏感package com.jesse.service.impl.metadata;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang.StringUtils;import org.springframework原创 2021-09-18 17:46:05 · 5685 阅读 · 0 评论 -
使用mongoTemplate进行数据统计,部分数据在mongodb
带分页的数据查询,主数据还是从关系型数据库MySQL中查询出来的,然后从结果集中获取相关条件,然后根据条件去mongodb中进行数据统计。注意:mongodb对数据类型敏感,类型一定要填对,不然查询不到数据。话不多说,直接上代码。package com.xjx.services;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang.StringUtils;import org.springframework.bea原创 2021-09-18 17:27:25 · 1236 阅读 · 2 评论 -
递归方式获取动态菜单
之前写了几次动态树形结构,因为不太懂递归写法,所以,实现起来特别麻烦,当时最多手动写了4层for循环,代码冗余不说,而且出错很难排查。最近有机会又写了一次动态菜单的数据获取,前端使用的是vue+elementUI,里面的结构就是标准的可以递归的json数据。后端使用的是ssm,因为mybatis可以嵌套调用,结果集可以封装到javaBean中,所以,这次很容易的就实现了递归获取菜单的功能。个人觉得重要的是需要定义一个好的javaBean。具体步骤如下:1.定义一个实体类Menu菜单实体类Menu如原创 2021-04-22 16:38:23 · 366 阅读 · 0 评论 -
ElementUI使用树形数据与懒加载形式展示数据Error: for nested data item, row-key is required. children: [{$ref: “…”}]
记一次使用vue+elementUI数据展示报错使用elementUI展示table时,使用树形数据与懒加载形式展示数据。这里需要注意一下的是,elementUI版本尽量高一点,否则可能不显示。我公司的elementUI版本就是太低了,最后我换了高版本才搞定的。使用过程就不说了,按照官网提示就可以了。但是晚上让同事搞的时候,添加了一条数据,然后修改了数据,之后就不行了,前端就报错了,提示row-key是必须的。可是查看了前端是好的啊,所有配置都有,而且一直是可以运行的。查看了一下返回数据,也正常啊,标原创 2021-04-21 13:28:40 · 1334 阅读 · 0 评论 -
mybatis 处理参数List<String[]>mybatis bug
使用注解方式:(和xml一样) @Insert("<script>insert into t_ordersetting values" + "<if test = 'list !=null and list.size()>0'>" + "<foreach collection = 'list' index ='index' item='ss' separator=','>" + "(null原创 2021-04-09 21:09:55 · 1485 阅读 · 0 评论 -
restful /{id} id为空导致405 即@Pathvariable里的参数允许为空的问题的解决
问题描述:因为ids是子表中的数据,用户只处理了主表,子表没有处理,ids就为空了,这时,访问后端就会因为找不到资源路径,报405错误。而其他情况下,用户是可以正常访问的。即使用restful风格传递动态参数,因为参数可以为空,所以,可能后面的子路径就没有了。此时,就不是一个url了。比如: @PostMapping("/add/{ids}") public Result add(@RequestBody CheckGroup checkGroup, @PathVariable(valu原创 2021-04-06 12:57:13 · 2089 阅读 · 2 评论 -
使用method.invoke()时,报IllegalArgumentException
问题描述:在使用method.invoke()方法时,遇到了一个问题,就是,在传递第二个参数时,如果传递的是数组,如果数组中只有一个数据时,不需要强转,也不能强转,而如果数组中数据长度大于1时,需要强转成object.如下图:首先,明确一下method.invoke()方法的具体声明:invoke方法里有两个参数,第一个是object类型,这个是传具体的类对象的.第二个参数args,是可变参数,其实底层就是一个数组.问题也出在第二个参数上,为什么底层是数组,而我直接给传数组,还要看长度,长度原创 2021-02-03 17:55:48 · 2970 阅读 · 1 评论 -
双冒号(::)运算符 java
双冒号(::)英文:double colon,双冒号(::)运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。为此,方法引用需要有兼容的函数接口组成的目标类型上下文。::关键字提供了可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,::关键字可以使语言更简洁,减少冗余代码。方法引用(::)使用的前提条件: 1.满足lambda的相关条件,即:可以使用lambda表达式表示; - 只有一个抽象原创 2021-01-11 20:28:59 · 463 阅读 · 3 评论 -
IDEA加载项目时提示Windows Defender might be impacting your build performance
IDEA加载项目时提示Windows Defender might be impacting your build performance. IntelliJ IDEA checked the following directories原因:这个是提示 windows defender(防火墙) 可能会影响性能,idea检查出下面这些文件夹 :一个是idea的设置路径,一个是代码路径大概能明白就是idea觉得windows defender 扫描 那两个文件夹会影响性能。看到这里就明白了,把这两原创 2020-07-20 09:42:55 · 49143 阅读 · 13 评论 -
STS中没有spring 没有spring Bean configuration file 输入bean没有出现spring相关文件
可能是sts默认没有spring插件。这个需要自己安装相关插件。方法:help–Eclipse Marketplace–search下,输入springTool 之类的关键字,找到相关插件。如下图:2.安装红框中的插件,等待安装完成,弹出 重启 对话框,重启后即可。...原创 2020-07-19 17:40:22 · 2198 阅读 · 3 评论 -
日期时间字符串含义 YYYY-MM-DDTHH:mm:ss:sssZ(精确到毫秒级)
转载自此原创 2020-01-07 11:35:35 · 13691 阅读 · 0 评论 -
idea如何导入新的项目或者打开已经存在的新项目
IDEA导入新的Maven项目本人从svn上下载的,步骤如下从这里添加项目。添加项目后之后直接open --项目名或者 .project (open as a project ),就可以打开,如下图打开之后,需要进行一下配置1.file–Project Structures2.facets – + --web3.选择 项目,ok4.检查配置路径是否正确。如果正确,可以直接跳...原创 2019-12-19 20:28:39 · 10453 阅读 · 1 评论 -
504,调用远程服务失败:read timed out
调用远程服务失败:read timed out描述:之前运行一直正常,用户导入了一批数据,然后报504。测试了一下,用个人电脑访问生产环境会出现错误,然后测试了一下本地代码正常,测试服务器代码正常,然后用本地代码加载生产数据库也正常,去到生产服务器,用生产环境的那个电脑运行也正常。跟了一下代码,发现域名访问时,时间只要超过5秒,前端会自动返回:调用失败。实际后台代码还在继续运行。分析:...原创 2019-10-28 16:40:04 · 1977 阅读 · 0 评论 -
java.lang.IllegalArgumentException: Document base ……does not exist or is not a readable directory
问题描述:解决办法:在项目目录,选择要部署启动的项目右击,选择最后的properties选项左侧点击project facets。在右边勾选如图示的三项:Dynamic Web Module、Java、JavaScript。点击apply,再点apply and close现在再去看tomcat,启动一下看看。如果project facets已勾选,还不行的话,需要执行下面操作:步...原创 2019-10-16 10:09:56 · 2551 阅读 · 1 评论 -
本地调试正确,测试环境报400(bad request)的问题
出现问题原因:是因为新版本tomcat不支持特殊字符的原因。完整url如下:http://localhost:8080/bspDataService/downloadExcel.action?requestParam={modelid='052a05aa-d833-4c6e-810f-58bc36787ace',project='%25E7%259F%25BF%25E7%25BE%258E%...原创 2019-10-14 14:58:49 · 2025 阅读 · 0 评论 -
POI操作EXCEL,往已存在的excel中追加数据(XSSFWorkbook)
话不多说,直接上代码: FileInputStream in = null; OutputStream out = null; XSSFWorkbook wb = null; try { HttpServletRequest request = this.getHttpRequest(); String path = ContextUtil.getAbsolutePath() + ...原创 2019-10-14 10:20:45 · 7346 阅读 · 0 评论 -
用URL传参带特殊字符(#@等),特殊字符丢失
Javascript 实现方法:(3种方法,看具体需求)在包含特殊字符的字段内容前面加上encodeURIComponentencodeURIComponent(字段内容)即可java部分解码:String param = (String)request.getParameter("param");param = URLDecoder.decode(param,"UTF-8");...原创 2019-10-11 18:38:00 · 950 阅读 · 0 评论 -
解决URL传中文参数乱码问题及原理
解决方案在前台,对URL的中文参数执行两次encodeURI:var param = encodeURI(encodeURI("中文"));后台取数据时使用 URLDecoder进行解码:String param = (String)request.getParameter("param");param = URLDecoder.decode(param,"UTF-8");原理解析...转载 2019-10-11 18:19:46 · 501 阅读 · 0 评论 -
一个tomcat下部署多个项目或一个服务器部署多个tomcat
转载自:https://www.cnblogs.com/jpfss/p/9208316.html最近需要把两个项目同时部署到服务器上,于是研究了一下,也借鉴了很多别人的方法,把过程记录下来,以儆效尤。目录:1,一个tomcat下同时部署两个项目(多个项目可以参考)1.1项目都放在webapps内(共用一个端口)1)把两个项目都放在webapps下。2)处理重复jar包。3)tomca...转载 2019-07-24 14:38:35 · 4165 阅读 · 0 评论 -
按字典顺序获取通讯录
1.数据一般在数据库中,将数据查询出来,按照名字字段排下序。order by convert(trim(g.procedure_name) using gbk) asc2.下载jar包(pinyin4j-2.5.0.jar),,放入webContent的web_inf—lib下,然后构建路径。就可以了需要用到jar包里的:获取中文第一个字的首字母:String 首字母= Pinyin...原创 2019-07-04 09:52:47 · 199 阅读 · 0 评论 -
Java如何判断字符串中包含有全角,半角符号
首先介绍下全角跟半角之间的区别:在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角"。在汉字输入时,系统提供"半角"和"全角"两种不同的输入状态,但是对于英文字母、符号和数字这些通用字符就不同于汉字,在半角状态它们被作为英文字符处理;而在全角状态,它们又可作为中文字符处理。半角和全角切换方法:单击输入法工具条上的按钮或按...转载 2019-07-03 10:35:24 · 1073 阅读 · 0 评论 -
解决 eclipse中的 xml文件文件中蓝色波浪线和蓝色i
最近eclipse安装了spring tool suite插件,尝试配置使用一下,结果发现xml里配置参数后有蓝色波浪线和蓝色i,如下图eclipse 解决方法:如上图,找到相应的项目,将第6个项目的勾全去了就 OK原文转自:https://blog.youkuaiyun.com/yeshuang520/article/details/84902489...转载 2019-06-03 20:36:37 · 2410 阅读 · 0 评论