一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第29天,点击查看活动详情。
接下来我们回到前面思路分析,目前已经对使用端代码编写完成了,所以接下来我们的关注点应该放在自定义持久层框架本身。
这个自定义持久层框架代码的编写相比较使用端代码的编写,它整体代码的编写步骤稍微的复杂一点。这里,我们同样会新创建一个工程或者模块,在这个工程模块中完成六步代码的编写,这六步在自定义持久层框架设计思路分析中已经详细的介绍,具体参考《自定义持久层框架思路分析》。
回顾自定义持久层框架设计思路
自定义持久框架本质就是对原生 JDBC 代码进行了封装,所以它底层执行的还是原生 JDBC 代码。一段原生 JDBC代码想要能够正常执行,两部分信息必不可少,一部分就是数据库配置信息,还有一部分就是 SQL 的配置信息,而这两部信息已经被使用端用两个配置文件进行了提供。
所以我们自定义持有层框架,要完成的功能就是使用 dom4j 技术,对使用端提供的 xml 格式的文件进行解析,并把解析出来的信息封装到 Configuration 和 MapperStatement 这两个 JavaBean 中。这两个 JavaBean 会作为参数层层传递。
传递到 SimpleExecutor 类中 query() 方法中,query 方法在原生 JDBC 代码执行的过程中,会取出 sql-mapper-config.xml 和 mapper.xml 这两个配置文件所封装的信息进行使用,这个是我们整体的一个实现思路。
创建 Resource 类
自定义尺寸框架要使用 dom4j 来对配置进行解析的,首先需要加载配置文件,它加载成字节输入流存储在内存中,以便后期我们使用 dom4j 技术解析配置文件。
如何去加载这个配置文件,我们具体的实现其实就是新建项目或者模块,在这个模块中要完成功能就是加载配置文件。我们要来创建一个 Resource 类。
在这个类中来编写一个 getResourceAsStream() 方法,同时还需一个参数接受使用端传递过来的配置文件的路径。在这个方式中,具体的实现借助类加载器中 getClassLoader().getResourceAsStream() 方法完成,最终将获取到 InputStream(输入字节流)进行返回。
public class Resource {
// 根据配置文件的路径,将配置文件加载成字节输入流存储在内存中
public static InputStream getResourceAsStream(String path){
//借助类加载器
InputStream resourceAsStream = Resource.class.getClassLoader().getResourceAsStream(path);
return resourceAsStream;
}
}
打 jar 包
在使用端能够正常的使用自定义持久层框架,还需要将自定义框架进行打成 jar 包。在 IDEA 中的右菜单栏,点击 Maven ,找到自定义持久层框架工程,点击生命周期(Lifecycle),点击 install 进行打包。如下图所示:
如果在编译打包过程中,出现如下保持信息。
- 不再支持源选项 5。请使用 6 或更高版本。
- 不再支持目标选项 1.5,请使用 1.6 或更高版本。
解决办法是在工程的 pom.xml 文件中设置 JDK 编译版本以及编码。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>1.8</java.version>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
在进行重新打包编译,在控制台输出如下信息,说明我们打包成功。
编译打包成功之后,我们就可以在使用端的工程引入自定义框架的 jar 包。
使用端引入自定义持久层框架依赖
要在使用端使用自定义持久层框架的 jar 包的依赖,需要在使用端的 pom.xml 中导入相关的依赖。
<!-- 引入自定义持久层框架的依赖 -->
<dependency>
<groupId>com.itbbfx</groupId>
<artifactId>Itbbfx-Permanence-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在使用端是否能正确的引入自定义框架 jar,在 IDEA 中右侧菜单中点击 Maven,找到使用端工程,在 Dependencies 显示如下信息,说明引入依赖成功。
编写测试类
目前,不知道我们所编写的代码是否有问题,此时我们可以在使用端编写一个测试类,在这个类中有一个方法,这个方式是用来调用 Resource 类中配置文件加载的方法,同时,获取字节输入流的返回值。
public class PermanenceTest {
public void test(){
InputStream resourceAsStream = Resource.getResourceAsStream("slq-mapper-config.xml");
}
}
介绍到这里,加载配置文件的功能基本实现了。在下期课程中,我们将要完成功能是实现两个 JavaBean,将配置文件中的信息解析出来存放在这两 JavaBean 中。
小结
在本期课程,我们主要学习内容不多,并且也比较简单。
- 首先,回顾了一下自定义持久层框架设计思路。
- 其次,创建自定义持久层框架工程,并在该工程中创建一个 Resource 类,在该类实现获取使用端传递过来的配置文件的全路径。
- 再次,完成自定义持久层框架工程打包和依赖的引入。
- 最后,在使用端中编写一个测试类,完成对获取配置文件的全路径。