自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PostgreSQL数组类型字段匹配包含或不包含

我们都知道PostgreSQL数组类型字段查询可以使用 ANY/SOME/ALL 关键字进行筛选。匹配结果在数组中存在表达式:WHERE expression operator ANY (subquery)WHERE expression operator SOME (subquery)WHERE expression operator ALL(subquery)官方文档: https://www.postgresql.org/docs/current/functions-comparisons.

2021-05-17 16:42:44 12214 1

原创 Feign忽略https接口调用SSL证书验证

报错信息:ERROR javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address 10.25.193.111 foundCaused by: java.security.cert.CertificateException: No subject alternative names matching IP addr

2021-04-27 00:00:58 7693 9

原创 fastjson转换对象为json字符串时,对象内Map元素乱序问题

经常会使用fastjson的JSON.parseObject(); 将java对象序列化和反序列化。如果代码中使用到了JSON.parseObject();这个方法反序列化了controller返回的对象,那么返回给前端的数据有一定概率会导致对象内Map对象元素或者List对象元素顺序乱序。举个栗子:@GetMapping(path = "/testJsonOrder")public Result<Map<String, Object>> testJsonOrder() {

2021-04-26 18:32:20 2349 2

原创 SpringBoot使用过滤器打印接口请求信息

话不多说,直接贴代码~import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.context.annotation.Configuration;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import java.io.IOException;

2021-04-23 15:58:43 979

原创 如何优雅的关闭SpringBoot程序服务

首先,我们先了解什么叫优雅关闭?第一步:停止接受请求和内部线程第二步:判断是否有线程正在执行第三步:等待正在执行的线程执行完毕第四步:停止服务容器使用 kill -9 pid ???NO! 暴力停止可能会带来严重的比如事务问题。方式一:kill -15 pid 关闭kill -15 这个命令可以理解为操作系统发送一个通知告诉应用主动关闭.,会让程序马上调用线程的interrupt方法,目的是为了让线程停止。方式二:ConfigurableApplicationContext.

2021-03-17 14:27:56 1181 6

原创 java.lang.UnsupportedOperationException: null at com.google.common.collect.ImmutableCollection.add

使用com.google.common.collect.ImmutableList初始化List,当进行add操作时,报java.lang.UnsupportedOperationException: null 错误。List<Integer> list = ImmutableList.of(11, 22, 33);list.add(555);报错提示:原因:不是所有初始化的List都有add remove等操作。例如Arrays.asList和一些第三方工具比如google I

2021-03-04 11:34:59 809 3

原创 java8 time包获取指定日期时间

我们都知道,java8新增的time包中使用 LocalDateTime.of() 方法能方便的生成指定时间。但是有时候需要获取生活中的一些指定日期时间,如获取固定的每月几日或者每周周几,这样的场景;of()方法就捉襟见肘了。不要着急,LocalDateTime还提供了一个 with() 方法,能够方便的达到以上目的。先看举例:需求:获取当前周四日期和当月6号日期public static void main(String[] args) { DateTimeFormatter

2020-06-19 17:30:44 1994

原创 SpringMVC Controller接口嵌套校验List对象请求参数

嵌套校验List<对象>形式的controller接口传参方式:接收参数使用外层对象包装List<对象>:@RestControllerpublic class TestController { @RequestMapping public Object testController(@RequestBody @Validated Bean bean) {}}class Bean { @Valid List<对象> list;}c

2020-06-11 17:27:34 1858

原创 Spring Data JPA普通JPA动态查询工具方法抽取

无聊写了个JPA动态查询的工具方法,注意!仅支持普通查询。不说废话,以下3个类即可实现:1. JPA操作类型枚举类:/** * @Description: JPA操作类型枚举 * @Author: caijun */public enum OperationType { EQUAL, // 等于 NOTEQUAL, // 不等于 LIKE, // 包含字符串(全like查询value不

2020-05-11 16:40:21 395

原创 object references an unsaved transient instance - save the transient instance before flushing

报错信息:org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : Entity1 -> Entity2Entity1和Entity2的关系:@ManyTo...

2020-02-14 18:08:48 439

原创 Could not safely identify store assignment for repository candidate interface

[org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport] 283 - Spring Data Elasticsearch - Could not safely identify store assignment for repository candidate interface…[o...

2020-02-14 15:17:20 12100 3

原创 SpringBoot2.x整合openfeign声明式服务接口调用

在SpringBoot项目中集成openfeign,达到方便调用和管理相同类别三方接口的目的。以下简单介绍:引入openfeign依赖<!--根据SpringBoot版本选择feign版本--><dependency> <groupId>org.springframework.cloud</groupId> <art...

2020-02-04 10:23:10 2489

原创 Spring Data Jpa+PostgreSQL对jsonb字段类型做映射实现

PostgreSQL支持json字段类型,json 数据类型可以用来存储 JSON(JavaScript Object Notation)数据, 这样的数据也可以存储为 text,但是 json 数据类型更有利于检查每个存储的数值是可用的 JSON 值。Spring Data Jpa若想使用json类型字段,需要自定义数据解析,具体实现方式就是实现UserType,重新方法实现编写解析逻辑代码解...

2020-01-17 14:12:44 6383

原创 Spring事务控制使用注解控制的方法发生异常既要回滚事务也要返回错误信息

使用Spring声明式事务方式控制事务简单方便(详解参考:链接: Spring事务@Transactional的说明和使用举例.),但是有些场景还需要结合编程式事务方式使用。如以下场景:添加@Transactional注解控制的方法有返回值,若此方法运行期间出现异常既需要回滚当前方法的事务,也要正常return返回值给调用此方法的上级使用。这时就需要手动回滚事务了。import org.spr...

2020-01-15 12:25:03 1026

原创 Caused by: org.postgresql.util.PSQLException: 错误: FROM 中的子查询必须有一个别名

记一个报错(粗心大意所致):背景是项目数据库从Oracle切换成PostgreSQL,使用Spring Data Jpa提供的SimpleJpaRepository做查询。下面是引起报错的查询示例:findTopByParam1AndParam2(param1, param2);报错信息:[WARN] [http-nio-8483-exec-3] [org.hibernate.engine...

2020-01-15 10:53:33 2713

原创 Java 两个List按照其中一个List元素顺序对另一个List元素进行排序

最近遇到对端接口批量查询不能根据批量条件列表顺序返回查询结果的问题,所以需要对返回数据进行重新排序。也就是说我们现在有一个需求:两个List,按照其中一个List元素的顺序对另一个List元素顺序进行排序。直接上代码:// 根据orderList顺序排序,orderList不存在的元素放置在targetList最后面private static void sort1(List<Stri...

2019-12-30 18:17:30 7015

原创 PostgreSQL根据IN查询条件元素顺序返回查询结果

刚从Mysql换到PostgreSQL,对PostgreSQL的函数了解还有所欠缺。我们都知道Mysql根据字段自定义排序可以使用 order by field() 函数,对于PG数据库如何实现这种效果?官方文档:https://www.postgresql.org/docs/9.3/static/functions-string.html查看官方文档,发现以下字符串处理函数:F...............

2019-12-30 15:10:25 5824 6

原创 SpringBoot使用starter整合Pagehelper分页插件

在已经集成Mybatis的项目中集成分页插件Pagehelper1、在pom.xml中添加Pagehelper依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifa...

2019-12-16 17:26:11 412

原创 SpringBoot配置异步线程池debug启动卡在初始化线程池的地方

记一个遇到的项目启动问题。背景描述:项目里配置了异步线程池,最开始项目debug启动都是可以正常启动,但是某天突然debug启动项目日志打印就卡在了异步线程池初始化初始化的地方,等待了许久项目也启动不起来。异步线程池代码:@Configuration@EnableAsyncpublic class ExecutorConfig { private static final Log...

2019-11-27 11:36:33 1266

原创 Spring事务@Transactional的说明和使用举例

一、简单介绍事务

2019-11-14 10:44:22 1323 3

原创 SpringBoot集成tk.mybatis抽取dao和service层base接口思路

好的项目结构可以让后期的开发工作更好的展开

2019-11-11 16:27:28 1579

原创 自定义注解校验Oracle数据库字段设计为varchar2类型字段长度校验(LENGTHB函数值)

对于oracle数据库varchar2类型的字段设计的字段,存储中文时一个汉字占3个字符,而数字、字母、符号占1个字符。导致接口校验字段内容长度时不方便,因此编写自定义注解用于校验这类字段的内容长度。...

2019-11-08 16:33:42 1141 1

原创 Java对SQL模糊匹配查询通配符%和_的处理

某位小伙伴,就称为小明,小明写爬虫程序喜欢将搜索框参数直接输入一个“%”,于是就可以爬取到所有结果,这样的小技巧其实是有理有据的。我们都知道SQL的模糊匹配查询like,比如select * from table where field like ‘%%’;将查询出所有结果,那么如何防止发生这种bug呢?我能想到两种方法,转义通配符或者替换通配符转义通配符可以使用EscapeUtils中的...

2019-11-07 17:16:13 2858

原创 使用tk.mybatis.mapper.common下的接口方法实现类似JPA操作

tk.mybatis.mapper.common包下提供有许多增删查改的接口方法,我们能直接使用或者对这些方法进行扩展使用来达到类似JPA操作数据库的效果。

2019-11-07 15:17:29 1030 1

原创 PostgreSQL数据库数组类型字段和Java实体对象字段值映射实现(Hibernate JPA)

Hibernate允许自定义复杂数据类型的对象字段映射。Hibernate为用户提供了Java and SQL descriptors和UserType接口方式自定义自己的数据类型映射。我们首选Java and SQL descriptors方式,因为它允许更好地分离 Java-to-JDBC 和 JDBC-to-SQL 类型处理。PostgreSQL允许将字段定义成变长的多维数组。数组...

2019-11-05 18:07:38 9271 3

原创 使用Hibernate事件监听机制并结合kafka异步记录对象修改日志

前言:org.hibernate.event.spi包中有许多用于ORM映射对象的操作监听器,如:PostLoadEventListener,PostInsertEventListener, PostUpdateEventListener, PostDeleteEventListener我们可利用这些监听器达到当对象信息发生变化时,记录对应日志的业务需求;并结合kafka消息队列,实现异步非阻...

2019-10-23 17:20:19 593

原创 Java手写一个简单分页

有时候我们需要对数据进行分页操作,比如一批数据id需要调接口批量查询,考虑到接口性能,通常不会一次查很多条数据,这时就可手动分页查询。直接来看例子:public class PagingTest { public static void main(String[] args) { Integer[] integers = {1, 2, 3, 4, 5, 6, 7, 8,...

2019-10-23 10:02:02 1500

原创 让工具类不能实例化

Java开发中,我们经常会使用工具类。例如JDK自带的Math类,工具类的方法和属性都是静态的,因此不需要实例即可访问。因为不需要实例化,因此JDK对工具类做了构造函数私有化的限制。让我们看看Math类的源码:public final class Math { /** * Don't let anyone instantiate this class. */ ...

2019-10-17 09:54:20 462

原创 Java多重继承实现方法

我们都知道,在Java中一个类可以多重实现,但是不能多重继承。也就是说一个类可以同时实现多个接口,但不能同时继承多个类。有时候我们需要让一个类同时拥有多个类的行为功能。这时候使用单继承特性就很难解决问题了。幸运的是Java提供的内部类可以用来解决此问题。内部类的一个重要特性:内部类可以继承一个与外部类无关的类,保证了内部类的独立性,正是基于这一点, 多重继承才会成为可能。这种内部类叫做成员内部...

2019-10-16 11:03:46 2202

原创 java使用免费日期API获取当年节假日

接到个需求需要区分工作日和非工作日,因此在网上找了个免费的接口: (https://tool.bitefu.net/jiari/)用来测试获取相应日期信息。接口开发人员不易,请尽量付费使用!!!这个接口参数d输入yyyyMMdd格式的日期参数,将返回工作日(0)、休息日(1)和节假日(2)三种状态码:请求样例:https://tool.bitefu.net/jiari/?d=20191001...

2019-10-15 17:04:08 4865

原创 Java常量池简单测试

我们大家都知道,java中的常量池技术,是为了方便快捷地创建某些对象而出现的,因此方便理解写了下面一段代码来简单介绍常量池的作用:public static void main(String[] args) { Scanner input = new Scanner(System.in); while (input.hasNextInt()) { int ii =...

2019-10-12 16:51:22 286

原创 @RestControllerAdvice注解和ResponseBodyAdvice接口实现统一处理controller返回

@RestControllerAdvice注解可用于扩展Controller层次结构

2019-08-22 15:30:35 5257 4

原创 SpringBoot logback日志打印增加trace_uuid追踪接口请求输出日志

为方便项目日志查询,可在日志配置文件中加入自定义标识,在日志头添加uuid,以达到为同一次接口请求标识添加唯一标识的目的。下面介绍一种简单的方式:1、通过查看slf4j源码注释,org.slf4j包中MDC类为log4j和logback提供了MDC【MDC ( Mapped Diagnostic Contexts ),它是一个线程安全的存放诊断日志的容器。)】功能,MDC类中静态方法put(S...

2019-08-21 15:59:33 11630

原创 SpringBoot使用AOP技术日志打印接口请求信息

使用aop技术实现接口请求相关信息日志打印功能

2019-08-21 15:58:39 927

原创 idea插件推荐

。。。

2019-07-15 18:04:24 321

原创 idea常用快捷键

自己在使用IDEA过程中总结的一些idea常用的快捷键操作,若发现不起作用,可能是因为我自己改过快捷键设置,欢迎评论纠正。项目启动、调试相关:Shift+ F9: debug启动项目Shift+ F10: run启动项目F7:前行断点,进入方法体内F8:前进断点,不进入方法体内F9:两个断点之间跳过Alt + F8:选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果...

2019-07-11 11:38:03 293

原创 @profile注解和spring.profiles.active参数搭配实现不同环境下配置参数的切换

Spring Boot使用@Profile注解可以实现不同环境下配置参数的切换,任何@Component或@Configuration注解的类都可以使用@Profile注解。

2019-07-10 14:22:28 951

原创 @PostConstruct注解用于方法上,初始化该方法,达到类似静态代码块的效果实例

前言:若java类不是spring bean 不能使用@Value(${})注解获取配置文件中的值。读取非缓存区配置信息的配置文件中配置。

2019-07-09 17:58:46 1677

原创 MySQL连接函数concat(),concat_ws(),group_concat()总结

concat()concat_ws()group_concat()

2019-07-09 16:50:30 309

原创 MySQL IFNULL() 函数的作用

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。其表达式为:IFNULL(expr1,expr2)SELECT IFNULL(NULL, "bye"); -- byeSELECT IFNULL("hello", "bye"); -- hello...

2019-07-09 09:35:36 446

空空如也

空空如也

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

TA关注的人

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