摘要: @[TOC] 作为一个优秀的框架, 其除了要解决大部分的流程之外, 还需要提供给使用者能够自定义的能力。 有缓存, 有插件接口等。我们可以通过自定义插件的方式来对 进行使用上的扩展。 以一个简单的 mysql 分页插件为例, 插件的使用包含以下步骤: 1 分页参数的传递 分页参数就是 offset 阅读全文
posted @ 2019-09-27 22:03 阿进的写字台 阅读(2820) 评论(0) 推荐(2) 编辑
摘要: 第一次看到 的时候, 我个人非常的开心。 因为其跟我内心里面的想法不谋而合。 1 MapStruct 是什么? 1.1 JavaBean 的困扰 对于代码中 之间的转换, 一直是困扰我很久的事情。 在开发的时候我看到业务代码之间有很多的 之间的相互转化, 非常的影响观感, 却又不得不存在。 我后来想 阅读全文
posted @ 2019-08-05 23:19 阿进的写字台 阅读(7528) 评论(5) 推荐(1) 编辑
摘要: @[TOC] 1 泛型 泛型 的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 1.1 为什么需要泛型 泛型是JDK1.5才出来的, 在泛型没出来之前, 我们可以看看集合框架中的类都是怎么样的。 以下为JD 阅读全文
posted @ 2018-12-26 11:53 阿进的写字台 阅读(1296) 评论(8) 推荐(7) 编辑
摘要: @[TOC] 反射就是在运行的状态中, 对于任意的一个实体类, 都能知道这个类的所有属性和方法。 并将其封装成一个个对象, 对通过这些对象来实现对应实体类的创建, 以及访问该类的方法和属性。 在我们创建了一个Java类之后, 编译出的.class文件在虚拟机中加载, 都会在JVM中创建一个Class 阅读全文
posted @ 2018-12-20 13:38 阿进的写字台 阅读(2886) 评论(2) 推荐(2) 编辑
摘要: @[TOC] 1 Class 类是什么? 在 Java 中, 一切皆对象。 比如 这个类本身就是 java.liang.Class 的一个对象。 每一个 .class 文件在类加载器加载了之后, 都会在 JVM 中创建一个 Class 对象。 所有的类都是在第一次使用时, 动态加载到 JVM 中。 阅读全文
posted @ 2018-12-19 00:03 阿进的写字台 阅读(822) 评论(0) 推荐(1) 编辑
摘要: @[TOC] Method 类描述的是类对象的方法信息。 其中包含了被反射方法的信息, 访问信息。在运行时, 我们可以通过该类进行方法的调用。 1 获取 Method 1.1 方法 因为 Java 中的 java.lang.reflect 包下所有类的构造函数都不为 public, 同时类都是 fi 阅读全文
posted @ 2018-12-18 09:39 阿进的写字台 阅读(904) 评论(0) 推荐(0) 编辑
摘要: @[TOC] 1. 并发编程的两个问题 在并发编程中, 需要处理两个关键问题: 线程之间如何通信及线程之间如何同步 通信指的是线程之间是以何种机制来交换信息, 在命令式编程中, 线程之间的通信机制有两种:共享内存和消息传递。在共享内存的模型中, 线程之间共享程序的公共状态, 通过读写内存中的公共状态 阅读全文
posted @ 2018-12-11 15:35 阿进的写字台 阅读(1135) 评论(0) 推荐(1) 编辑
摘要: @[TOC] 在 Java 中, 枚举, 也称为枚举类型, 其是一种特殊的数据类型, 它使得变量能够称为一组预定义的常量。 其目的是强制编译时类型安全。 因此, 在 Java 中, enum 是保留的关键字。 1. 枚举的定义 在 Java 是在 JDK 1.4 时决定引入的, 其在 JDK 1.5 阅读全文
posted @ 2018-12-03 11:03 阿进的写字台 阅读(866) 评论(0) 推荐(4) 编辑
摘要: @[TOC] 1 HashMap在JAVA中的怎么工作的? 基于Hash的原理 2 什么是哈希? 最简单形式的 hash,是一种在对任何变量/对象的属性应用任何公式/算法后, 为其分配唯一代码的方法。 一个真正的hash方法必须遵循下面的原则 哈希函数每次在相同或相等的对象上应用哈希函数时, 应每次 阅读全文
posted @ 2018-11-28 09:00 阿进的写字台 阅读(927) 评论(2) 推荐(5) 编辑
摘要: @[TOC] 函数指针 定义 函数指针(也称为子例程指针或过程指针)是指向函数的指针。与引用数据不同, 函数指针指向内存中的可执行代码。解引用函数指针时, 就如同引用函数一样, 可以调用和传递参数。 这样的调用就称之为间接调用, 因为函数是通过变量间接调用的,而不是直接通过固定的标识符或地址调用。 阅读全文
posted @ 2018-11-21 17:28 阿进的写字台 阅读(479) 评论(0) 推荐(1) 编辑
摘要: 阅读全文
posted @ 2018-11-20 09:39 阿进的写字台 阅读(1307) 评论(0) 推荐(2) 编辑
摘要: @[TOC] 在前一篇 "[MyBatis动态SQL(认真看看, 以后写SQL就爽多了)" ]中, 详细给出了动态 SQL 的用法, 也收到了至今为止最多的赞和日阅读量。 今天在大致讲解一下 <sql> 和 <include> 节点的使用。 <sql> 节点的基础 阅读全文
posted @ 2018-11-15 09:12 阿进的写字台 阅读(18373) 评论(4) 推荐(2) 编辑
摘要: @[TOC] 0 一起来学习 mybatis 你想不想来学习 mybatis? 学习其使用和源码呢?那么, 在博客园关注我吧!! 我自己打算把这个 源码系列 更新完毕, 同时会更新相应的注释。快去 star 吧!! "mybatis最新源码和注释" MyBatis 令人喜欢的一大特性就是动态 SQL 阅读全文
posted @ 2018-11-05 16:07 阿进的写字台 阅读(11072) 评论(16) 推荐(19) 编辑
摘要: 使用了这么久的mybatis, 你有深入了解过 阅读全文
posted @ 2018-10-26 10:43 阿进的写字台 阅读(4062) 评论(3) 推荐(5) 编辑
摘要: @[TOC] ResultMap 对应的是结果集 <resultMap>中的一个结果集。 其基本组成部分中, 含有 ResultMapping 对象。 其组成大致如下: 本文, 主要讲解一下该类的组成。 1 成员变量 2 构造函数 只有默认构造函数 3 其他函数 3.1 setter 和 阅读全文
posted @ 2018-10-23 23:13 阿进的写字台 阅读(1663) 评论(0) 推荐(0) 编辑
摘要: @[TOC] ResultMapping 对象是 mybatis 的 <resultMap> 节点在 ResultMap 对象中基础组成部分. ResultMapping 对象记录了结果集中一列与队友JavaBean中一个属性的对应关系。 1 成员变量 2 构造函数 就是一个空的构造函数 阅读全文
posted @ 2018-10-22 23:27 阿进的写字台 阅读(2149) 评论(0) 推荐(0) 编辑
摘要: @[TOC] 当我在学习一个新技术的时候, 入门阶段, 基本上都遵循 是什么 为什么 怎么用 这样的原则。 1 Kafka 是什么? 1.1 背景 Kafka 最初是 LinkedIn 的一个内部基础设施系统, 后续捐赠给了 Apache, 目前是 Apache 的一个顶级项目。 1.2 定位 在官 阅读全文
posted @ 2018-10-22 14:02 阿进的写字台 阅读(910) 评论(2) 推荐(1) 编辑
摘要: @[TOC] 在一对多的关系中, 主表的数据回对应关联表中的多条数据。 因此, 查询时就会查询出多条结果, 所以, 向类似的情况我们会使用 List 来进行存储关联表中获取到的信息。 1 数据准备 创建以下的名为 mybatis 的数据库, 并在其下创建4个表。 在此就不贴出来建表的 SQL 语句了 阅读全文
posted @ 2018-10-18 10:41 阿进的写字台 阅读(2775) 评论(3) 推荐(2) 编辑
摘要: @[TOC] 在使用 mybatis 过程中, 当手写 JavaBean 和 XML 写的越来越多的时候, 就越来越同意出错。这种重复性的工作, 我们当然不希望做那么多。 还好, mybatis 为我们提供了强大的代码生成 MybatisGenerator 。 通过简单的配置, 我们就可以生成各种类 阅读全文
posted @ 2018-10-13 12:00 阿进的写字台 阅读(5815) 评论(3) 推荐(2) 编辑
摘要: @[TOC] 1 简介 1.1 单参数 在 Mybatis 中, 很多时候, 我们传入接口的参数只有一个。 对应接口参数的类型有两种, 一种是基本的参数类型, 一种是 JavaBean 。 例如在根据主键获取对象时, 我们只需要传入一个主键的参数即可。 而在插入, 更新等操作时, 一般会涉及到很多参 阅读全文
posted @ 2018-10-09 10:36 阿进的写字台 阅读(6745) 评论(7) 推荐(1) 编辑
摘要: @[TOC] 如果没有自定义过拦截器, 可以看我 "前面的文章" 。如果不知道 JDK 动态代理怎么使用的, 可以看我这 "文章" 。 责任链设计模式理解起来很简单, 网上找个例子看看即可。 插件的原理使用的是动态代理和责任链来实现的。 1 拦截哪些方法 在 "前面" 说过, 可以通过注解 和 来进 阅读全文
posted @ 2019-09-28 22:23 阿进的写字台 阅读(1132) 评论(0) 推荐(0) 编辑
摘要: 在前面, 介绍了 及其入门。 本文则是进一步的进阶。 在 生成对应的实现类的时候, 有如下的几个情景。 1 属性名称相同,则进行转化 在实现类的时候, 如果属性名称相同, 则会进行对应的转化。这个在之前的文章代码中已经有所体现。 通过此种方式, 我们可以快速的编写出转换的方法。 源对象类 目标对象类 阅读全文
posted @ 2019-08-07 09:16 阿进的写字台 阅读(25565) 评论(0) 推荐(2) 编辑