前言
.
本文将深入探讨如何在自己实现MyBatis底层机制的过程中完成第一个任务阶段,即读取配置文件并建立数据库连接。这一关键步骤是了解MyBatis内部工作原理的第一步,也是自定义MyBatis底层机制的基础。
.
在任务阶段1中,我们将从头开始创建必要的配置文件和Java类,逐步解析配置文件,获取数据库连接,以为后续的操作打下坚实的基础。这个过程将涵盖XML文件的解析、配置参数的读取、数据库连接的建立等关键步骤。
个人主页:尘觉主页
个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力
在csdn获奖荣誉: csdn城市之星2名
Java全栈群星计划top前5
端午大礼包获得者
阿里云专家博主
亚马逊DyamoDB结营
欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦
package com.wyxdu.wyxmybatis.sqlsession;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
/**
* 读取xml文件, 建立连接
*/
public class WyxConfiguration {
//属性-类的加载器
private static ClassLoader loader =
ClassLoader.getSystemClassLoader();
//读取xml文件信息,并处理
public Connection build(String resource) {
Connection connection = null;
try {
//加载配置wyx_mybatis.xml 获取到对应的InputStream
InputStream stream =
loader.getResourceAsStream(resource);
//解析wyx_mybatis.xml => dom4j
SAXReader reader = new SAXReader();
Document document = reader.read(stream);
//获取到wyx_mybatis.xml 的根元素
Element root = document.getRootElement();
System.out.println("root=" + root);
//解析root元素,返回Connection => 单独的编写一个方法
connection = evalDataSource(root);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
//方法会解析wyx_config.xml 信息,并返回Connection
//eval: 评估/解析
private Connection evalDataSource(Element node) {
if (!"database".equals(node.getName())) {
throw new RuntimeException("root 节点应该是" );
}
//连接DB的必要参数
String driverClassName = null;
String url = null;
String username = null;
String password = null;
//遍历node下的子节点,获取属性值
for (Object item : node.elements("property")) {
Element i = (Element) item;//i 就是 对应property节点
String name = i.attributeValue("name");
String value = i.attributeValue("value");
//判断是否得到name 和 value
if (name == null || value == null) {
throw new RuntimeException("property 节点没有设置name或者value属性");
}
switch (name) {
case "url":
url = value;
break;
case "username":
username = value;
break;
case "driverClassName":
driverClassName = value;
break;
case "password":
password = value;
break;
default:
throw new RuntimeException("属性名没有匹配到...");
}
}
Connection connection = null;
try {
Class.forName(driverClassName);
connection = DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
}
return connection; //返回Connection
}
}
创建 WyxMyBatisTest测试类
public class WyxMybatisTest {
public static void main(String[] args) {
HspConfiguration wyxConfiguration = new WyxConfiguration();
//获取到一个Connection
Connection connection = wyxConfiguration.build("wyx_config.xml");
System.out.println(connection);
}
}
在本文中,我们成功完成了自己实现MyBatis底层机制的任务阶段1,即读取配置文件并建立数据库连接。我们创建了名为wyx_config.xml的XML配置文件,其中包含了数据库连接的必要信息。随后,我们编写了WyxConfiguration类,负责解析配置文件并根据配置信息建立数据库连接。
通过详细的步骤和代码示例,我们展示了如何使用DOM4J库来解析XML文件,如何遍历XML元素并提取配置参数,以及如何使用DriverManager类来建立数据库连接。这一过程为理解MyBatis底层机制奠定了坚实的基础,同时也为后续任务的完成提供了必要的基础设施。
下一步,我们将继续深入研究MyBatis的底层机制,逐步构建更多关键组件,以实现一个完整的自定义MyBatis底层框架。希望本文对您的学习和项目开发有所帮助。
第一篇–>深入剖析:自己实现 MyBatis 底层机制的步骤与原理解析
热门专栏推荐
想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集
linux合集
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
欢迎大家加入我的社区 尘觉社区
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力