欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Java中的JDBC操作详解、JDBC工具类的编写以及DBUtils工具包的使用

Java中的JDBC操作详解、JDBC工具类的编写以及DBUtils工具包的使用

2024/10/26 5:30:26 来源:https://blog.csdn.net/lzhlizihang/article/details/142793785  浏览:    关键词:Java中的JDBC操作详解、JDBC工具类的编写以及DBUtils工具包的使用

文章目录

  • 一、JDBC概述
  • 二、JDBC语句
    • 1、JDBC流程
    • 2、JDBC中DML语句
    • 3、JDBC中DQL语句
  • 三、JDBC工具类编写
    • 1、编写Properties配置文件
    • 2、编写JDBC工具类
  • 四、DBUtils工具包
    • 1、BeanHandler
    • 2、BeanListHandler
    • 3、ScalarHandler


一、JDBC概述

Java DataBase Connectivity: Java 数据库连接技术

通过Java语言操作数据库,是sun公司定义的一套操作所有关系型数据库的规则(接口),各个数据库厂商去实现这套接口,提供数据库驱动jar包

二、JDBC语句

1、JDBC流程

  1. 注册驱动(可以省略)
  2. 获取数据库连接对象 Connection
  3. 定义sql
  4. 获取执行sql语句的对象 Statement
  5. 执行sql,接收返回结果
  6. 处理结果
  7. 释放资源

执行时会出现时区问题:
解决方案:

?serverTimezone=Asia/Shanghai

2、JDBC中DML语句

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class Code01{public static void main(String[] args) throws Exception{// 1. 注册驱动(安转驱动)  此时这句话可以省略  如果书写的话,mysql8.0 带 cjClass.forName("com.mysql.cj.jdbc.Driver");// 2. 获取数据库连接对象 ConnectionConnection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db2?serverTimezone=Asia/Shanghai","root","root");// 3. 定义sql语句String sql = "insert into dept values(1,'咨询部','杭州')";// 4. 获取执行sql语句的对象 StatementStatement statement = conn.createStatement();// 5. 执行sqlboolean result = statement.execute(sql);// 6. 处理结果System.out.println(result);// 7. 释放资源statement.close();conn.close();}
}

3、JDBC中DQL语句

import java.sql.*;public class Code02 {public static void main(String[] args) throws Exception {// 注册驱动(省略了)// 获取连接Connection coon = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb03", "root", "root");// 定义sql语句String sql = "select * from dept";// 获取执行sql语句的对象 preparedStatementPreparedStatement preparedStatement = coon.prepareStatement(sql);//获取查询结果ResultSet resultSet = preparedStatement.executeQuery();//处理结果 循环打印while (resultSet.next()){int dept_id = resultSet.getInt("dept_id");String name = resultSet.getString("name");String local = resultSet.getString("local");System.out.println(dept_id + "\t" + name + "\t" + local);}//关闭连接preparedStatement.close();coon.close();}
}

三、JDBC工具类编写

1、编写Properties配置文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb03?serverTimezone=Asia/Shanghai
jdbc.user=root
jdbc.password=root

2、编写JDBC工具类

import java.sql.*;
import java.util.ResourceBundle;public class JdbcUtils {private static String driver = null;private static String url = null;private static String user = null;private static String password = null;private static Connection conn = null;// 静态代码块在该类被加载的时候只执行一次static {// 读取properties配置文件中的内容ResourceBundle db = ResourceBundle.getBundle("db");driver = db.getString("jdbc.driver");url = db.getString("jdbc.url");user = db.getString("jdbc.user");password = db.getString("jdbc.password");try {Class.forName(driver);conn = DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();}}// 对外部使用的 用来得到Connection对象方法public static Connection getConn() {return conn;}//关闭所有对象方法public static void close(ResultSet resultSet, PreparedStatement statement, Connection connection) {try {if (resultSet != null) {resultSet.close();}if (statement != null) {statement.close();}if (connection != null) {connection.close();}} catch (SQLException e) {e.printStackTrace();}}
}

四、DBUtils工具包

DbUtils给我们提供了10个ResultSetHandler实现类,分别是:

  1. ArrayHandler: 将查询结果的第一行数据,保存到Object数组中
  2. ArrayListHandler 将查询的结果,每一行先封装到Object数组中,然后将数据存入List集合
  3. BeanHandler 将查询结果的第一行数据,封装到user对象
  4. BeanListHandler 将查询结果的每一行封装到user对象,然后再存入List集合
  5. ColumnListHandler 将查询结果的指定列的数据封装到List集合中
  6. MapHandler 将查询结果的第一行数据封装到map结合
  7. MapListHandler 将查询结果的每一行封装到map集合,再将map集合存入List集合
  8. BeanMapHandler 将查询结果的每一行数据,封装到User对象,再存入map集合中
  9. KeyedHandler 将查询的结果的每一行数据,封装到map1,然后将map1集合(多个)存入map2集合(一个)
  10. ScalarHandler 封装类似count、avg、max、min、sum…函数的执行结果
    常用的是BeanHandler、BeanListHandler和ScalarHandler

1、BeanHandler

public class Code06 {public static void main(String[] args) throws SQLException {Connection conn = JdbcUtils.getConn();QueryRunner queryRunner = new QueryRunner();String sql = "select * from users";// 将查询结果的第一行数据,封装到user对象Users query = queryRunner.query(conn, sql, new BeanHandler<Users>(Users.class));System.out.println(query);}
}
// 运行结果:Users{userName = zhangsan, password = 123456}

2、BeanListHandler

public class Code07 {public static void main(String[] args) throws SQLException {Connection conn = JdbcUtils.getConn();QueryRunner queryRunner = new QueryRunner();String sql = "select * from users";// BeanListHandler 将查询结果的每一行封装到user对象,然后再存入List集合List<Users> query = queryRunner.query(conn, sql, new BeanListHandler<Users>(Users.class));System.out.println(query);}
}// 运行结果:[Users{userName = zhangsan, password = 123456}, Users{userName = lisi, password = 123123}, Users{userName = 陈嘉豪, password = 123124}]

3、ScalarHandler

public class Code08 {public static void main(String[] args) throws SQLException {Connection conn = JdbcUtils.getConn();QueryRunner queryRunner = new QueryRunner();String sql = "select count(*) from users";Object query = queryRunner.query(conn, sql, new ScalarHandler());System.out.println(query);}
}// 运行结果:3

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com