自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u011923621的博客

源码的分析交流,欢迎博文下方留言,每个留言都会认真回复

  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 mybatis系列-tkmybatis-10-pagehelper分页原理及源码分析

最近在写Mybatis系列文章,pageHelper在物理分页上用的比较多,这里就通过源码对它的原理进行分析tkmybatis源码版本:<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.12</ver...

2021-05-07 18:56:14 1112

转载 mybatis系列-tkmybatis-09-物理分页与逻辑分页的区别

Mybatis的分页操作可以分为物理分页和逻辑分页。他们之间有什么区别呢?在什么场景下使用什么样的分页呢?1. Mybatis实现分页的方法 使用RowBounds对象进行逻辑(逻辑内存中)分页,它是针对ResultSet结果集执行的内存分页。 使用pageHelper插件进行物理分页(其实是依赖物理数据库实体)。 2. Mybatis使用pageHelper实现分页的原理强烈推荐阅读——浅析pagehelper分页原理<dependency>..

2021-05-07 16:15:20 477

转载 Spring-事务传播-01-Spring事务传播行为详解

前言Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本文对七种事务传播行为做详细介绍,内容主要代码示例的方式呈现。基础概念1. 什么是事务传播行为?事...

2021-05-07 15:15:43 158

原创 Mybatis系列-tkmybatis-08-多数据源配置

作为一个资深的CRUD工程师,我们在实际使用springboot开发项目的时候,难免会遇到同时使用多个数据库的情况,比如前脚刚查询mysql,后脚就要查询sqlserver。为springboot配置多个数据源,需要用哪个数据库连接,直接@Autowired不就行了。那么问题来了,怎么配置呢?1、准备工作: a、建立了两个数据库,分别名为foodie-shop和foodie-shop-2,foodie-shop包含表users,foodie-shop-2包含表myusers。两...

2021-05-06 17:44:48 1923 1

原创 mybatis系列-tkmybatis-07-使用动态SQL方式扩展接口,进行多表关联查询

实际项目中,除了使用一些常用的增删改查的方法之外,有些复杂的需求,可能还需要执行一些自定义的动态sql。mybatis 除了提供了@Insert、@Delete 这些常用的注解,还提供了多个注解如:@InsertProvider,@UpdateProvider,@DeleteProvider和@SelectProvider,用来建立动态sql 和让 mybatis 执行这些sql 的注解。这些注解在MybatisSpring和tkMybatis中都能使用。像我们在tkMybatis源码分析...

2021-04-30 17:50:48 759 1

原创 mybatis系列-tkmybatis-06-使用注解方式扩展接口,进行多表关联查询

前面介绍了使用xml方式扩展数据库操作接口,其实,mybatis 注解方式 和 XML配置方式两者的使用基本上相同,只有在构建 SQL 脚本有所区别,所以这里重点介绍两者之间的差异,还是以多表关联查询举个例子。示例 还是上一章的需求,相比于上一章,我们在UsersMapper中增加selectAllUsersOrdersByAnnotation方法,然后在该方法上增加@Select注解和用于将返回结果映射到pojo对象中的@Results注解(跟xml中的ResultMap类似...

2021-04-30 17:48:50 983 2

原创 mybatis系列-tkmybatis-05-使用xml方式扩展接口,进行多表关联查询

tkMybatis是对Mybatis功能的扩展,在Mybatis中,可以通过xml方式扩展接口(先在*mapper接口类中定义新的接口方法,然后在*mapper.xml文件写实现SQL)。在tkMybatis中,并没有改变Mybatis的作用机制,在常规Mybatis扫描xml文件和mapper文件创建sqlSessionFactory和各种Mapper代理类之后,才进行的扩展,所以以前Mybatis的那一套机制依旧有效。 这里举例说明下,如何基于xml扩展,实现多表关联查询。现在有个Us...

2021-04-30 17:39:41 816 1

原创 mybatis系列-tkmybatis源码分析-02-完整作用机制分析

啃了一周tkmybatis源码,留篇文章记录下,阅读时间30分钟-1个小时纯mybatis每个持久化操作都要写sql,会显得有些繁琐。现在市面上也有很多的插件,比如mybatis逆向工程,mybatisCodeHelperPro等,可以在xml文件中生成一些常用的sql和对应的mapper接口方法。也有一些mybatis的第三方工具框架,帮我们免去单表操作的sql编写,比如通用mapper,mybatis-plus。接下来我们来研究一下我个人常用的通用mapper的使用极其原理。...

2021-04-30 10:19:22 757 1

原创 Mybatis系列-tkmybatis源码分析-01-mybatis、mybatis-spring和tkmybatis的关系

mybatis、mybatis-spring和tkmybatis的关系 定义 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis-Spring 会帮助你...

2021-04-30 09:46:48 1729 1

原创 mybatis系列-tkmybatis-04-SpringBoot整合TkMybatis+PageHelper实现分页查询

上一章把SpringBoot与TkMybatis、hikaricp整合了起来,本章再把pagehelper也加进来。1、增加POM依赖pagehelper-spring-boot-starter这里对应的mapper-spring-boot-starter版本是2.1.5<!--pagehelper依赖--><dependency><groupId>com.github.pagehelper</groupId>&l...

2021-04-30 09:41:40 608

原创 mybatis系列-tkmybatis-03-SpringBoot整合TkMybatis+HikariCP

上一章把SpringBoot与TkMybatis整合了起来,本章再把HikariCP也加进来。1、pom.xml文件因为SpringBoot已经包含了HikariCP的相关依赖,无需添加,所以这里相对于上一篇没有变动2、application.properties增加HikariCP配置项# tomcat配置server.port=8081server.tomcat.uri-encoding=utf-8# datasource配置spring.datasour...

2021-04-30 09:36:31 150

原创 mybatis系列-tkmybatis-02-SpringBoot整合TkMybatis

本章Sprintboot整合tkmybatis实现数据库访问,默认已通过tk-mybatisgenerator自动生成了po、dao和*mapper.xml(参考“003-数据库-tkmybatis-01-使用tk-mybatis generator 自动生成代码”),补全项目springboot相关依赖,包括spring-boot-starter、spring-boot-starter-web。1、在pom.xml文件中添加依赖<!--tk.mybatis依赖--...

2021-04-30 09:32:50 245

原创 mybatis系列-tkmybatis-01-使用tk-mybatis generator 自动生成代码

tk-mybatis 是mybatis的一个功能扩展,可以在原有方法的基础之上提供更多的功能可用,如一个基类Mapper, 继承他就相当于拥有了常用的增删改查等功能,无需再每个mapper文件中都写增删改查,非常方便。 那么接下来我们来开始看如何使用tk-mybatis generator从数据库直接生成代码(包括pojo实体类、mapper类以及对应的mapper.xml文件)。【注意,由于POM依赖之间的不同版本有可能存在兼容问题,所以如果使用中出现java.lang....

2021-04-30 09:27:47 954 1

原创 jdk动态代理之java弱引用

弱引用弱引用也是用来描述非必须对象的,他的强度比软引用更弱一些,被弱引用关联的对象,在垃圾回收时,如果这个对象只被弱引用关联(没有任何强引用关联他),那么这个对象就会被回收。/*** 弱引用关联对象何时被回收* Created by ccr at 2018/7/14.*/public class WeakReferenceDemo {public static void main(String[] args) throws InterruptedException {//

2020-07-17 12:45:27 336

原创 JDK动态代理中的WeakCache解析

WeakCache解析 它是一个具有二级缓存的弱引用类,一级缓存的key是弱引用,二级缓存是强引用。其中key是根据入参直接传入的,二级缓存的key和value都是是根据一级缓存的key和value通过各自的工厂方法(subKeyFactory和valueFactory)计算得到的。当弱引用被clear后,entries会被以惰性(lazily)方式被删除。 在动态代理中,一级缓存是根据classloader生成的map,二级缓存是根据classloader和接口类数组生...

2020-07-17 12:43:58 556

原创 JDK动态代理机制分析

参考: https://developer.ibm.com/zh/articles/j-lo-proxy1/环境:jdk 1.8.0_201引言 本来是准备研究Spring源码,其中AOP部分对于普通接口类是通过JDK动态代理来实现的,所以顺便研究了动态代理的运行机制和特点,发现网上文章搜出来讲的都不太明白,所以本文结合原理和代码分析,对动态代理进行阐述。通过阅读本文,读者将会对 Java 动态代理机制有更加深入的理解。 Java 动态代理机制的出...

2020-07-13 12:38:19 395

原创 Spring源码环境搭建

每个人环境可能不太一样,如有问题欢迎在下方留言 环境 IDEA版本:IntelliJ IDEA 2019.3.4 x64操作系统:WIndow10Java版本:1.8.0_201构建工具:IDEA内置GradleSpringFramework版本:5.3.0-SNAPSHOT 源码下载 源码位于git上,自行下载 https://github.com/spring-projects/spring-framework,我这里用的master版本(5.3.0-SNA..

2020-06-22 11:14:53 1683 9

原创 如何在github上进行Pull Request(PR)操作,参与到开源项目中

本文目的: 新手gitter想参与开源项目,首次进行PR经常会遇到以下几个问题,: 想要参与到开源项目中,却不知道该如何提交代码给管理者. 网上搜了各种方法,都是告诉我要进行pullrequest,怎么进行pullrequest,但是没有操作环境. 提交了pullrequest却没有收到管理者的回复,怀疑是不是自己流程不对。 本文提供自己搭建的测试git项目环境,帮助新手首次进行PR提交,完成整个任务流程。https://github.com...

2020-06-10 17:46:38 1300 2

原创 时序数据库应用场景与设计

数据特点时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。比如工业上的设备状态监控,无人驾驶汽车各个设备监控。时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。对比传统数据库仅仅记录了数据的当前值,时序数据库则...

2019-06-20 14:20:04 3667 1

原创 centos7安装oracle 11g EE版本数据库

因为临时要用到oracle,之前又没装过,网上找了些文章,都有这样那样的问题,根据自己实际情况整理了一片博客,留着以后装的时候看,不过应该用不上,已经固化成docker镜像了。 版本Oracle 11.2.0.4.0 Oracle的启动步骤:1、配置数据实例 2、创建数据库实例 3、启动监听程序(1521端口) 4、启动数据库实例 1、下载 Oracle 11gOr...

2019-01-23 17:07:23 577

原创 Sping Data与Elasticsearch整合

介绍了Spring Data与Elastic search整合方式以及优缺点

2017-01-16 20:27:32 16585

原创 Spring Data整合Mysql

实例说明Spring Data 整合Mysql

2016-12-21 20:45:13 3547

原创 Spring框架系列(四)-Spring Data JPA简介

一、 概述SpringData是一个数据访问框架,基于Spring实现,旨在提供一致的数据库访问模型,同时仍然保留不同数据库底层数据存储的特点。Spring Data由一些列的组件组成,分别对应不同数据库具体实现。Spring Data为你实现了访问关系型数据库、非关系型数据库的统一的接口,对于常见的企业级CURD、排序操作不需要手动添加任何sql语句,同时也支持手动扩展功能。下面是Spr

2016-12-13 22:22:36 2400

原创 Spring框架系列(三)-XML配置和Java配置

比较了基于xml配置和基于java配置的两种spring配置方式,并通过例子进行了说明

2016-11-21 20:25:11 12295 2

原创 Spring框架系列(二)-AOP

1、 AOP定义AOP作为Spring的核心功能之一,用来解决服务之间依赖的耦合问题,通过定义切点,实现服务分离,将普遍依赖的非业务服务从业务服务之中分离开来。AOP的理论知识见上一章节Spring框架系列(一)-整体架构。Spring中AOP借鉴了AspectJ的实现,以提供注解驱动,编程模型几乎与编写成熟的AspectJ注解切面完全一致。Spring AOP和AspectJ的区别在于两

2016-11-15 17:22:41 768

原创 Spring框架系列(一)-整体架构

先进行Spring整体框架介绍,然后对IOC和AOP进行了详细的介绍

2016-11-07 16:20:36 4756 1

空空如也

空空如也

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

TA关注的人

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