Java和大数据系列
注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天和大家分享一下Java通过xml文件方法实现JDBC代码案例
#博学谷IT学习技术支持#
前言
上次和大家分享了Java通过properties文件方法实现JDBC代码案例
https://blog.csdn.net/weixin_53280379/article/details/126103992?spm=1001.2014.3001.5502
但是比起properties文件方法,在大数据的框架下用的更多的是通过xml文件方法,今天和大家分享一下Java通过xml文件方法实现JDBC代码案例。
一、使用步骤
1.Maven导包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.iteheima</groupId>
<artifactId>jdbc</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
</project>
2.定义xml文件
按照自己情况定义Url,Username,Password等信息
<?xml version="1.0" encoding="utf-8" ?>
<jdbc_config>
<mysql_config>
<DriverClass>com.mysql.cj.jdbc.Driver</DriverClass>
<Url>jdbc:mysql://localhost:3306/aaa</Url>
<Username>root</Username>
<Password>12345678</Password>
<Sql>select * from employee</Sql>
</mysql_config>
</jdbc_config>
3.定义JDBCUtils类
package pack03;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream;
import java.sql.*;
import java.util.Iterator;
import java.util.Properties;
public class JDBCUtils {
private static String driverClass;
private static String url;
private static String username;
private static String password;
private static String sql;
private JDBCUtils(){}
//封装注册驱动.这里是mysql 8.0的版本
static {
try {
//1.加载Reader对象
SAXReader reader = new SAXReader();
//2.加载xml对象
InputStream inputStream =
JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.xml");
Document document = reader.read(inputStream);
//3.获得根结点
Element rootElement = document.getRootElement();
//4.获得子元素
Iterator<Element> iterator = rootElement.elementIterator();
while (iterator.hasNext()){
Element element = iterator.next();
Iterator<Element> iterator1 = element.elementIterator();
while (iterator1.hasNext()){
Element element1 = iterator1.next();
String name = element1.getName();
if (name.equals("DriverClass")){
driverClass = element1.getStringValue();
}
else if (name.equals("Url")){
url = element1.getStringValue();
}
else if (name.equals("Username")){
username = element1.getStringValue();
}
else if (name.equals("Password")){
password = element1.getStringValue();
}
else if (name.equals("Sql")){
sql = element1.getStringValue();
}
}
}
Class.forName(driverClass);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//封装获得连接
public static Connection getConnection(){
try {
return DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
//封装获得执行sql语句的对象
public static ResultSet getResult(Statement statement,Connection connection){
try {
return statement.executeQuery(sql);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
//封装处理结果
public static void printResult(ResultSet resultSet){
try {
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
while (resultSet.next()){
for (int i = 1; i <= columnCount; i++) {
Object object = resultSet.getObject(i);
System.out.print(object + "\t");
}
System.out.println();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
//封装释放资源
public static void closeAll(Statement statement,Connection connection){
try {
statement.close();
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
4.最后定义测试类
package pack03;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class demo01 {
public static void main(String[] args) throws Exception {
//注册驱动.这里是mysql 8.0的版本
//获得连接.
Connection connection = JDBCUtils.getConnection();
//获得执行sql语句的对象
Statement statement = connection.createStatement();
//执行sql语句,并返回结果
ResultSet resultSet =
JDBCUtils.getResult(statement,connection);
//处理结果
JDBCUtils.printResult(resultSet);
//释放资源
JDBCUtils.closeAll(statement,connection);
}
}
总结
今天通过一个小案例和大家分享了一下JDBC的另外一种通过xml的使用方法,xml比properties方法更为常见。大家根据自己实际项目情况使用即可。