自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 向上、向下递归查询

#{deptId} 表示不包含自己。2、#向下递归查询指定部门的所有子部门(不含自己)4、#向上递归查询指定部门的所有父部门(不含自己)1、#向下递归查询指定部门及其所有子部门。3、#向上递归查询指定部门及其所有父部门。

2022-10-12 17:09:18 2505 1

原创 StringUtils.isNumeric(str)方法校验非负整数(0,正整数)及“”,NumberUtils.isNumber(str)方法校验是否是数字

【代码】StringUtils.isNumeric(str)方法校验非负整数(0,正整数)及“”,NumberUtils.isNumber(str)方法校验是否是数字。

2022-09-01 14:55:11 635

原创 创建联合唯一索引的sql

(如果表中已经有重复的记录,这时候添加唯一索引,执行上面的操作时,数据库会返回添加失败信息,因为已经有重复的记录了,建立索引失败。ALTER TABLE 表名 ADD unique INDEX 索引名称(字段1,字段2);DROP INDEX 索引名称 ON 表名;...

2022-08-30 16:10:16 3751

原创 mybatis执行update批量更新时报错

这是因为配置mysql的时候没有开启批量插入,不开启的话只能允许操作一条sql语句,所以只需要修改一处即可:将properties配置文件中的数据库连接信息URL后面添加上&allowMultiQueries=true就可以了,问题完美解决。...

2022-08-12 11:35:39 1998

原创 springboot集成(Mybatis-plus)@DS注解连接多数据源

当注解添加到方法上时,意味着此方法上使用的数据源优先级高于其他一切配置。当注解添加到类上,意味着此类里的方法都使用此数据源;添加@DS注解到实现类或者实现类的方法上才有效。

2022-08-11 09:40:00 4025

原创 xxl-job使用注意事项

2、使用xxl执行任务时,机器地址可以从执行器管理-Online机器地址选择需要执行的环境,否则所有环境都执行。xxl-job可以用来执行定时任务,还可以界面传参执行任务,也可以选择“执行一次”。任务参数是json字符串格式,使用String类型接受。...

2022-07-21 18:13:27 5495 1

原创 Mybatis-Plus中的and()和or()的使用

mybatis-plus复杂有优先级的的连接。

2022-07-19 12:04:10 1506

原创 使用@Feign调用第三方接口,对象的字段为空字符串(““)时,在调用的时候会被反序列化成null

使用@Feign调用第三方接口,对象的字段为空字符串("")时,在调用的时候会被反序列化成null

2022-07-12 16:37:12 1111 1

原创 Integer类型的数据比较大小时,慎用“==”

这个问题已经踩过两次坑了,记录一下。举例1:Integer i = 2;Integer j = 2;if(i==j){return true;}else{return false};//返回 :trueInteger i = 666;Integer j = 666;if(i==j){return true;}else{return false};//返回 :false原因:自动装箱,Integer i=2; 相当于 Integer i=Integer.valueOf

2022-05-20 10:16:41 689

原创 使用Mybatis分页插件(PageHelper)导致数据量大时查询慢的解决方法

描述:在项目中使用MybatisPlus分页插件分页查询十分缓慢,但是在数据库中执行速度却很快?该数据库的表共有10000条数据,分页查询时,在数据库中是很快,但是在使用Mybatis分页插件的时候居然8s多!原因:PageHelper在做分页查询的时候,select count(0) 会先把原来的查询语句全部重新查询一遍(未做数量限制),然后再执行select count(0)操作,导致查询速度慢。例如:select count(*) from ("这里面的把sql又多重复查了一遍") user

2022-04-22 15:31:43 12031 3

原创 QueryWrapper使用注意事项

1、拼接条件,注意空值影响如果传入值为空,会导致查询不到记录queryWrapper.eq("tenant_id",tenantId).eq("code","0000333");可以对"tenant_id"做非空判断:queryWrapper.eq(StringUtils.isNotEmpty("tenant_id"),"tenant_id",tenantId).eq("code","0000333");2、seletOne返回的是一条实体记录,当查询结果出现多条时会报错解决办法:ba

2022-04-18 20:53:26 2073

原创 Spring中@NotNull注解@Valid注解使用

在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作。这样的话,在每次需要验证的时候,都需要判断一遍,如果参数有十多个,那岂不是要判断写十多个判断,这样不仅加大了自己的开发工作,也让代码变得冗余,@NotNull注解就很好的解决了这个问题。Controller层:加@Valid注解 ,,表示当前的实体类接收的参数需要根据配置的@NotNull注解判断@NotNull是对整个对象的非空判断实体类:实体类需要判断的字段上面

2022-04-18 20:50:11 8484 1

原创 MySql递归查询

利用find_in_set()函数和group_concat()函数实现递归查询:1、向下递归:查询本部门及其所有子部门调用方式:SELECT dept_id FROM sys_dept WHERE FIND_IN_SET(dept_id, queryChildDeptInfo((select t.dept_id from sys_user t where t.user_id = #{user.userId})))实例:DROP FUNCTION IF EXIS

2022-04-07 18:31:42 2174

原创 Apache POI实现excel表格导出

导出部分代码: try { resp.setHeader("Content-disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1") + ".xls"); //设置文件头编码格式 resp.setContentType("application/vnd.ms-excel");

2022-04-02 17:59:31 409

原创 EasyExcel导出excel表格

传统Excel操作或者解析都是利用Apach POI进行操作,但是使用过这个框架的人都知道,这个框架并不完美,有较多的缺陷:1、使用步骤繁琐2、动态写出Excel操作非常麻烦3、对于新手来说,很难在短时间内上手4、读写时需要占用较大的内容,当数据量大时容器发生OOMEasyExcel实现excel导出: try { //设置头居中 WriteCellStyle headWriteCellStyle = new WriteCellSty

2022-04-02 17:51:34 5829

原创 两个List合并,List集合中的对象根据某个相同的属性,合并另外属性

场景描述:因为是在不同的数据库里,所以不能使用sql联合查询,所以只能采用List封装数据和另一个List封装数据拼接成一个结果集。方法:根据共同的字段id,将一个对象List遍历, 放到map集合<id,object1>。然后遍历另外一个对象List,比较id, id相等,取出object的值,和object2的值,放到新的对象newObject。R<List<UserVO>> r = adminClient.querySysUserListByReqVo(req

2022-04-02 15:29:18 5616 1

原创 mybatis批量新增和修改

使用mybatis批量新增和批量修改:ON DUPLICATE KEY UPDATEon duplicate key update :判断主键是否存在,主键存在则更新,不存在就新增insert…on duplicate key update语法的作用,可以分析到,当发生主键冲突的时候,可以直接进行update操作,这个update操作里面可以更新任意想要更新的列;而没有主键冲突的时候,相当于对这个表进行了一次插入操作 int i = sysUserMapper.batchInsertOrUpdate

2022-03-22 17:06:40 4446

转载 QueryWrapper多表联查分页、IPage分页(解决IPage+ QueryWrapper 多表联查、条件搜素、模糊匹配的分页问题)

参考:https://blog.csdn.net/weixin_44684812/article/details/122240662QueryWrapper多表联查分页、IPage分页解决IPage+ QueryWrapper 多表联查、条件搜素、模糊匹配的分页问题解决IPage+ QueryWrapper 多表联查、条件搜素、模糊匹配的分页问题假如我们有一张user表,和一张department表 (关联关系表)要通过department(模糊匹配)到所有的user并且分页实体类@ApiMo

2022-03-05 17:26:50 6711

转载 oracle中 with as, decode ,where 1=1等的用法

1.with as转自:https://www.cnblogs.com/linjiqin/archive/2013/06/24/3152667.htmlwith as语法–针对一个别名with tmp as (select * from tb_name)–针对多个别名withtmp as (select * from tb_name),tmp2 as (select * from tb_name2),tmp3 as (select * from tb_name3),…–相当于建了个e临

2022-03-05 16:58:18 601

原创 MyBatis-Plus :QueryWrapper及LambdaQueryWrapper的使用

QueryWrapper最基础的使用方式:// 查询条件构造器QueryWrapper<User > wrapper = new QueryWrapper<>();wrapper.eq("user_name",userName);// 查询操作List<User > users = userMapper.selectList(wrapper);引入lambda,可以避免在代码中写类似的于user_name的硬编码:QueryWrapper<User

2022-03-05 16:57:21 1737

原创 Java8---LocalDate和LocalDateTime用于时间比较

判断当前时间或者当前时刻是否在某个时间范围内例如:public static final DateTimeFormatter YYYYMMDD_PATTERN_FORMARTTER = DateTimeFormatter .ofPattern("yyyyMMdd");public static final DateTimeFormatter YYYY_MM_DD_PATTERN_FORMARTTER = DateTimeFormatter .ofPattern("yyyy_MM_dd");pub

2021-11-05 15:38:38 1303

原创 Java8 时间日期API ---DateTimeFormatter

**时间格式化LocalDate,DateTimeFormatter—>parse,ofParttern****Instant:**瞬时实例。**LocalDate:**本地日期,不包含具体时间 例如:2014-01-14 可以用来记录生日、纪念日、加盟日等。**LocalTime:**本地时间,不包含日期。**LocalDateTime:**组合了日期和时间,但不包含时差和时区信息。**ZonedDateTime:**最完整的日期时间,包含时区和相对UTC或格林威治的时差。新API还

2021-10-26 17:31:03 1862

转载 Mybatis-Plus

Mybatis-Plus用法收集Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。适合单表操作。常见用法:(1)insert: 直接调用insert方法传入实体(2)update:u

2021-09-13 15:45:16 366

转载 JDK1.8新特性

Java Stream API参考:https://blog.csdn.net/weixin_44391036/article/details/1061023321.1Stream可以提高我们处理集合类数据的效率。他就像一个流水线,在这条流水线上有很多工作人员来操作他的数据,A处理完流到B,B处理完流到C。。。在没有学这个之前,我们处理集合类型的数据通常通过for循环,一层一层,一次一次,Stream 会显的更加简洁,方便。操作步骤:把产品放到流水线上(转化为流),称为源操作对产品进行操作,例如

2021-07-27 11:36:36 602

转载 使用PLSQL导出oracle表结构,表数据;导入数据

1、使用PL/SQL导出、导入表在使用PL/SQL操作oracle数据库时,经常使用的一个操作就是将自己写的数据表导出,或者想把他人的数据表导入到自己的数据库中。虽然是很简单的操作,但自己之前一直出错,所以在这里记录一下使用方法。1.1.导出数据表在PL/SQL中可以选择导出表结构或者只导出数据或者同时导出数据结构和数据。接下来将一一解说。1.1.1.导出数据表结构流程: Tools –> Export User Objects最后点击导出就可以了,导出的文件格式为.sql查看文本编辑

2021-07-05 10:16:39 9202

原创 left(right) join on后面 加条件和where后面加条件的区别;left join,right join,(inner)join的区别

left(right) join on后面 加条件和where后面加条件的区别(1)select * from A left join B on A.id = B.id **and** A.name='lily' and B.score is not null;(2)select * from A left join B on A.id = B.id **where** A.name='lily' and B.score = '100'区别:on只是对局部条件做限制where是对全局做限制,

2021-06-30 19:57:00 729

转载 oracle中to_char(), to_date() ,ROUND(),NVL(), DECODE(), EXTRACT()等函数的使用

1.to_char()将时间日期按照指定的格式输出,得到的是字符串,而非date类型。只要被转换的是一个日期,yyyy,mm,dd中间加不加连接符,加什么连接符都可以2.to date()将字符串按照指定的格式输出,得到的是日期类型。第一个参数的yyyy,mm,dd之间有没有连接符。如果有,那么第二个参数必须有连接符,随便是什么连接符。Oracle的SQL采用了mi代替分钟:select to_date(‘2005-01-01 13:14:20’,‘yyyy-MM-dd HH24:mi:ss’

2021-06-24 19:32:37 1210

转载 Java 正则表达式 手机号 身份证号脱敏

// 手机号码前三后四脱敏public static String mobileEncrypt(String mobile) {if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) {return mobile;}return mobile.replaceAll("(\d{3})\d{4}(\d{4})", “$1****$2”);}//身份证前三后四脱敏public static String idEncrypt(Strin

2021-06-03 15:23:56 1277

转载 equals的用法:避免空指针异常

常量.equals(“变量”),避免空指针异常在Java语言中字符串比较有两种方式:== 和equals()。“==”比较的是针对两个String类型变量的引用,当两个String类型的变量指向同一个String对象(即同一个内存堆),则返回true。而equals()方法是对String对象封装的字符串内容进行比较,相同返回true。在用equals方法与其他值做比较的时候,有可能会导致抛出空指针异常。写一个小程序来举例说明: public class StringEqual { publi

2021-06-03 15:04:45 2468

原创 用在实体对象上面的注解收集

@JsonProperty@JsonProperty注解主要用于实体类的属性上,作用可以简单的理解为在反序列化的时候给属性重命名(多一个名字来识别)也可以写成@JsonProperty(“User_Name”)private String usedrName;用于与前端传参(User_Name)对应@Data1.idea安装lombok插件;2.重启idea3.添加依赖<dependency> <groupId>org.projectl.

2021-06-03 11:25:10 524

转载 Nginx学习 : 默认负载均衡轮询及Ip_hash等常用指令介绍

一、简介Upstream模块是Nginx中一个核心模块,当客户端访问Nginx服务器的时候,Nginx会从服务器列表中选取压力小的服务器,然后分配给客户端进行访问.这个过程,Nginx通过轮询算法轮询所有的服务器,找到合适的分配给客户端.而这个过程是通过Upstream模块来实现.所以,可以将Upstream模块理解为实现轮询算法的负载均衡.二、常用指令1、ip_hash指令(1)、简介在负载均衡系统中,如果客户端已经在某台服务器中登陆,如果我们在访问系统,Nginx会给客户端重新分配一台服务器

2020-08-10 15:51:24 598

原创 nginx实现minio分布式集群(windows)

通过不同端口号模拟几台服务器:1.带ip和端口启动:.\minio.exe server /data1 --address 192.168.124.241:9001.\minio.exe server /data2 --address 192.168.124.241:9002.\minio.exe server /data3 --address 192.168.124.241:9003.\minio.exe server /data4 --address 192.168.124.241:9004

2020-08-10 15:08:33 2288

转载 【转载】NGINX 配置路由UPSTREAM

1、轮询Java代码 收藏代码upstream backend{server 192.168.0.1:8080;server 192.168.0.2:8080;}2、权重值分配Java代码 收藏代码upstream backend{server 192.168.0.1:8080 weight=2;server 192.168.0.2:8080 weight=3;}weight值和负载权重成正比,weigh默认为1,weight越大,负载越高3、按照来源ip分配Java代码

2020-08-10 10:46:19 461

转载 springboot获取不同类型URL请求参数的几种方法

1、直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。**/*** 1.直接把表单的参数写在Controller相应的方法的形参中* @param username* @param password* @return*/@RequestMapping("/addUser1")public String addUser1(String username,String password) {System.out.println(“use

2020-07-30 12:19:34 751

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除