博客
MyBatis是如何让我们通过接口就能调用到SQL的
大致可分为如下几个步骤1. 动态注册bean1.1 根据配置mapperScan, 扫描对应的包, 将对应的类解析成BeanDefinition1.2 通过替换BeanDefinition中的BeanClass为MapperFactoryBean, (原来的BeanClass是Mapper接口) 实
MyBatis拦截器实现SQL打印
mybatis有自带的sql打印, 但只会出现在抛异常的时候, 或者配置日志输出, 但是输出的日志较为冗长像这样### Error querying database. Cause: java.lang.ArithmeticException: / by zero
### The error ma
MyBatis拦截器执行顺序
最近项目用上了mybatis, 但是想像hibernate那样能打印sql, 于是写了个基于mybatis拦截器的sql打印, 参考这个https://blog.22xcode.com/post/78然后, 碰到了问题, 拦截器会重复输出一句sqlmybatis sql: SELECT id, na
Seata全局事务隔离性
在数据库本地事务隔离级别 读已提交(Read Committed) 或以上的基础上,Seata(AT 模式)的默认全局隔离级别是 读未提交(Read Uncommitted) 。如果应用在特定场景下,必需要求全局的 读已提交 ,目前 Seata 的方式是通过 SELECT FOR UPDATE 语句
Java 建造者模式
建造者模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离
Docker 安装 MongoDB
docker pull mongo
docker run -itd --name mongo -p 27017:27017 mongo --auth
-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mo
Dubbo服务降级-Mock
模块A依赖模块B, 当模块B无法启动或无法提供服务时, 需要进行服务降级 @Reference(version = "${bs.service.version}", timeout = 500000, retries = 0, check = false, mock = "fail:com.code
Java操作Redis的常见误区
不能使用 keys * 命令不能在set中存放大量数据
Java 单例模式
双重校验懒汉式单例public class Singleton {
//1. 避免jvm指令重排 由于JVM具有指令重排的特性,执行顺序有可能变成 1-3-2。指令重排在单线程下不会出现问题,但是在多线程下会导致一个线程获得一个未初始化的实例。例如:线程T1执行了1和3,此时T2调用 ge
Java 工厂模式
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}
Java 模板模式
public abstract class Template {
public final void templ() {
System.out.println("开始");
code();
System.out.println("结束");
}
public abstract v
Java 装饰者模式
接口Printerpublic interface Printer {
void start();
void print();
void stop();
}
实现类 HPPrinter
public class HPPrinter implements Printer {
Java Proxy.newProxyInstance动态代理
定义接口public interface Student {
void buy();
String talk();
}
实现类public class Lisi implements Student {
@Override
public void buy() {
System.ou
Spring自定义注解加载和使用
Spring在扫描类信息的使用只会判断被@Component注解的类所以任何自定义的注解只要带上@Component(当然还要有String value() default "";的方法,因为Spring的Bean都是有beanName唯一标示的)都可以被Spring扫描到,并注入容器内例: Spr
SpringDataJPA + SQL Server 分页查询返回page0_字段
在配置了方言后, 使用 jpa 的分页查询(Pageable)时, sql返回的字段都变成了这样{
"page1_": "2020121800040029834",
"page2_": 19.25,
"page3_": null,
"page0_": "2020-12
SpringBoot连接Redis服务出现Command timed out
docker 部署的redis一直出现超时docker pull redis
网上的都说要设置这个值spring.redis.timeout=50000
然而实际使用过程中仍然超时查看redis 服务端配置-bash# cat redis.conf | grep tcp-k
tcp-keepali
SpringBoot RedisTemplate 操作不同的库
其他开发解决不了redis切换库, 于是通过消息队列, 让其他项目去操作对应的库, 太奇葩了, PM居然不管???@Bean("redisTemplateForDb6")
public RedisTemplate<Object, Object> redisTemplate(RedisConnecti
Jenkins + Gitee 持续集成
接上文/article/537098261463302145 Jenkins安装JDK安装将jdk-8u171-linux-x64.rpm(oracle官网下载)上传至服务器执行安装命令rpm -ivh jdk-8u171-linux‐x64.rpm
RPM方式安装JDK,其根目录为:/usr/ja
Redis实现分布式锁
boolean redisRes = stringRedisTemplate.opsForValue().setIfAbsent(key, value)
原子操作当key不存在, 存入value,返回true当key存在, 不进行操作, 返回false当处于redis事务中 , 返回null
SQL SERVER timestamp类型 不能使用java.sql.Timestamp类型对应
实际应该使用 CONVERT ( bigint, addTimestamp)进行转换, 然后用long接值