MyBatisPlus的SQL注入器批量插入更新方法
MyBatisPlus的SQL注入器批量插入更新方法
一、介绍
在前几天,我们使用了MyBatis plus的SQL注入器成功注入了我们想要的SQL写法。
MyBatisPlus的SQL注入器 | 半月无霜 (banmoon.top)
现在我又新增了一个方法,来看看
二、代码
其他代码就不贴了,去上一篇文章那看,这边只贴具体的方法实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172package com.banmoon.business.mybatis.method;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;import com.baomidou.mybatisplus.core.meta ...
IDEA如何在DEBUG中输出耗时
IDEA如何在DEBUG中输出耗时
一、介绍
在今天进行debug的时候,我突然想知道一段业务代码执行需要多少时间。
这也很简单,打上日志输出耗时就行了。
可是,当时的项目已经debug启动,想要输出还得改代码,还得重新启动
这就很麻烦了,有没有什么其他方法呢?
还真的有,这个IDEA中debug带的功能,我们使用下就可以进行输出耗时了,如下
二、代码
假设我们有这么一段代码,中间的睡眠,我们模拟业务的方法调用
我们只需要在前面打上断点
需要在这里输入什么代码呢?
本文考虑的是耗时,所以我找了一个工具类,如下
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061package com.banmoon.utils;import cn.hutool.core.date.DateUtil;import cn.hutool.core.date.TimeInterval;import cn.hutool.core.ut ...
MyBatisPlus的SQL注入器
MyBatisPlus的SQL注入器
一、介绍
在前些天的时候,我需要写一个存在则更新的sql语句,这以前我有记录过。
MySQL插入重复后进行覆盖更新 | 半月无霜 (banmoon.top)
但以前我是在mapping.xml文件中,自己手动拼出来的。
虽然可以实现,但真的好麻烦,每个实体都要这样写吗?
我不,我去看了MyBatis plus的BaseMapper是如何实现的。
嘿,还真的让我找到了,不多说,上代码。
二、代码
在MP中,有一个接口ISqlInjector.java,它的一个实现类DefaultSqlInjector.java,截图看看
可以看到,它自己弄了点方法注入进去了,所以我们只要依葫芦画瓢,也就能写出自己的方法;
1)编写方法
我们编写一个类似于Insert.java的这样一个类,我们取名为InsertOnDuplicateKeyUpdateMethod.java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 ...
关于Java中try...catch...finally的面试题
关于Java中try…catch…finally的面试题
一、问题
try...catch...finally
try中间有return返回值,那么finally还执行吗?
如果try中间有return返回,finally中间也有,会发生什么?
如果try中间有return返回一个变量,在finally中修改这个变量,会发生什么?
二、解答
1)try中间有返回值,那么finally还执行吗
finally中的代码块都会执行,不管try中有没有return,也不管有没有出现异常。
这个大家都知道,通常这个finally关键字,都是用来释放资源的,比如关闭流。
2)如果try中间有return返回,finally中间也有,会发生什么
这个问题有点困扰,平常我们不会这样写代码,正如上面说的,我们通常是用来释放资源的。
但如果在finally出现了return代码,应该知道将会出现什么样的结果。
注意看下面这段代码
123456789101112131415161718192021222324252627282930packa ...
Spring中事件的发布订阅
Spring中事件的发布订阅
一、介绍
在Spring框架中,ApplicationEventPublisher是一个接口,用于发布应用程序事件。它允许应用程序的不同组件之间进行解耦,实现事件驱动的开发模式。
通过ApplicationEventPublisher,我们可以将自定义的事件发布到应用程序的上下文中,然后其他组件可以注册为ApplicationListener来监听这些事件。ApplicationListener是另一个接口,用于接收和处理应用程序事件。
当事件被发布时,ApplicationEventPublisher会通知所有注册的ApplicationListener,并将事件对象传递给它们。这样,监听器就可以根据事件的类型进行相应的处理逻辑,完成业务逻辑的触发和处理。
使用ApplicationEventPublisher和ApplicationListener可以实现松耦合的事件驱动编程,提高代码的可维护性和扩展性。它们是Spring框架中事件机制的核心组件之一。
不啰嗦,直接看如何编写代码
二、代码
声明一个事件,TestEvent.java,需要继承Appli ...
如何在控制台实现一个进度条
如何在控制台实现一个进度条
一、前言
在今天使用Java代码做一个集合的任务的时候,没在for循环中手动打印日志信息,导致在任务执行后根本不知道执行到了哪一步。
这点让我挺困扰的,于是在github上寻找有没有什么进度条的显示方式,我还真找到了。
看了一下代码,挺简单的,就将思路直接copy过来,实现了一个自己的控制台进度条。
vdurmont/etaprinter: Java console progress bar (github.com)
二、代码
抽象类ProcessBarUtil.java,里面有着基本的信息
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485package com.banmoon.utils.processbar;import java.util.Iterator;import java.u ...
SpringBoot动态创建绑定rabbitMq队列
SpringBoot动态创建绑定rabbitMq队列
一、介绍
在以前,我写过一篇如何使用SpringBoot整合rabbitMq的文章。
SpringBoot整合rabbitMq | 半月无霜 (banmoon.top)
上面这种方法,是自己创建队列,交换机,绑定。生成Bean,从而实现队列等等的创建。
这种方式太过于繁琐,有没有一种方法可以快速创建呢,我们只管使用就行了
还真的有,只需要在配置文件中配置队列、交换机等信息,就可以在服务启动的时候自动创建并绑定。
一次偶然间,在csdn上看到了,动态创建rabbitMq队列的文章。
拉出来魔改了一下,只要再配置文件中配置了相关的实现,实现了队列、交换机的绑定。
同时还解决了,多个开发连接同一个rabbitMq,导致自己生产的消息,被其他同事消费走的问题。
二、代码
1)读取配置的代码
这是RabbitModuleInfoProperties.java,读取配置文件中的信息,生成信息对象
12345678910111213141516171819202122232425262728293031323334353637383940414 ...
ComplatableFuture初解使用
ComplatableFuture初解使用
一、介绍
CompletableFuture是Java中的一个类,用于进行异步编程。它提供了一套强大的方法,可以方便地管理异步操作、处理结果和错误等。
二、方法
方法
功能
入参
出参
completedFuture(T value)
创建一个已经完成结果的CompletableFuture对象
无
有
runAsync(Runnable runnable)
启动异步任务
无
无
supplyAsync(Supplier<U> supplier)
启动异步任务
无
有
thenApply(Function<T, U> function)
转换一个CompletableFuture对象及内容
有
有
thenApplyAsync(Function<T, U> fn)
启动异步任务,转换一个CompletableFuture对象及内容
有
有
thenAccept(Consumer<T> consumer)
消费一个CompletableFuture对象的内容
有
...
SpringBoot日志详解使用include
SpringBoot日志详解使用include
一、介绍
前段时间,公司让我整改SpringBoot日志的配置,我改的老痛苦了。
一共有7个微服务,其中每一个微服务各自都有4个这样logback-spring-{active}.xml文件。
正好我看过SpringBoot中是怎么写的,给大家截图看下
既然如此,我们也可以通过include标签来进行编写。
哦对了,SpringBoot使用的logback日志,里面的含义代表什么,我就不详细讲了。
具体可以看我的这边文章,SpringBoot日志配置详情 | 半月无霜 (banmoon.top)
二、配置
这边创建两份基础文件,分别是
banmoon-logback-defined.xml:里面定义了一些参数
banmoon-logback-append.xml:里面定义了一些输出
banmoon-logback.xml:将上面的两个文件引入整合,并加上了一些日志等级的配置
看看文件所在的目录,都在scr/main/java的包内
1)banmoon-logback-defined.xml
123 ...
如何读取到maven中profile设置的参数
如何读取到maven中profile设置的参数
一、介绍
在maven工程中,我们会用到profiles来配置不同环境的不同的参数。
我们下面介绍如何读取到在这里面设置的值
1234567891011121314151617<profiles> <profile> <id>local</id> <properties> <host>localhost:2333</host> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>dev</id> <properties> ...