文章目录

  • JDBCUtils
  • 数据库连接池
  • Apache—DBUtils
  • BasicDAO

  JDBC就是Java做了一套关于数据库操作的接口,交给由不同的数据库产商去具体实现。这样,无论是那种类型的数据库,我们导入相应的 jar包,只操作这一套接口就可以实现功能。
  下面我做了一张JDBC常用API的思维导图:


------- 2023.1.15加更

JDBCUtils

  以上是JDBC的一些常用API,但是连接数据库依然很繁琐。连接数据库和关闭资源是必须的操作,我们可以写一个JDBCUtils,封装连接资源和关闭资源。

public class JDBCutils {public static String user;public static String password;public static String url;public static String driver;static {try {Properties properties = new Properties();properties.load(new FileInputStream("D:\\code\\JDBC\\src\\mysql.properties"));user = properties.getProperty("user");password = properties.getProperty("password");url = properties.getProperty("url");driver = properties.getProperty("driver");} catch (IOException e) {throw new RuntimeException(e);}}public static Connection getConnection(){try {return DriverManager.getConnection(url,user,password);} catch (SQLException e) {throw new RuntimeException(e);}}public static void close(ResultSet set, Statement statement,Connection connection){try {if (set != null){set.close();}if (statement != null){statement.close();}if (connection != null){connection.close();}} catch (SQLException e) {throw new RuntimeException(e);}}
}

  这样获取连接和关闭资源我们就不用每次都写一大推重复的代码了,调用这个工具类传参数就可以了。
  批处理
  需要处理大量的sql语句时,我们可以采取批处理的方式,即,把sql语句打个包,发到数据库执行时让其一次性执行多条。而不是收一条处理一条,再收一条再处理一条。这样提高了效率:

 public void tran() throws SQLException {Connection connection = JDBCutils.getConnection();String sql = "insert into account01 values (null,?,?)";PreparedStatement preparedStatement = connection.prepareStatement(sql);try {System.out.println("开始执行");long start = System.currentTimeMillis();for (int i = 0; i < 5000; i++) {preparedStatement.setString(1,"jack" + i);preparedStatement.setString(2,"666");preparedStatement.addBatch();if ((i + 1) % 1000 == 0){preparedStatement.executeBatch();preparedStatement.clearBatch();}}long end = System.currentTimeMillis();System.out.println("批处理耗时:" + (end - start));} catch (SQLException e) {throw new RuntimeException(e);}finally {JDBCutils.close(null, preparedStatement,connection );}}

数据库连接池

  频繁连接、断开数据库性能较低,而且访问量突增的情况下会使得数据库瘫痪,因此引入了数据库连接池技术。连接池作为一个缓冲,既提高了效率,又保护了数据库安全。德鲁伊连接池目前性能最好,应用广泛。

public class JDBCUtilsByDruid {private static DataSource ds;static {Properties properties = new Properties();try {properties.load(new FileInputStream("D:\\code\\JDBC\\src\\druid.properties"));ds = DruidDataSourceFactory.createDataSource(properties);} catch (Exception e) {throw new RuntimeException(e);}}public static Connection getConnection() throws SQLException {return ds.getConnection();}public static void close(ResultSet resultSet, Statement statement, Connection connection) {try {if (resultSet !=null){resultSet.close();}if (statement != null){statement.close();}if (connection != null){connection.close();}} catch (SQLException e) {throw new RuntimeException(e);}}
}

Apache—DBUtils

  关闭connection连接后,结果集resultSet也不能再使用了。但是,一直不关连接会浪费资源,因此需要把结果集封装到集合中去。

 public ArrayList<Actor> testArraylist(){Connection connection = null;String aql = "select * from actor where id >= ?";
//        String aql = "select  *from actor";PreparedStatement preparedStatement = null;ResultSet resultSet = null;ArrayList<Actor> list = new ArrayList<>();try {connection = JDBCUtilsByDruid.getConnection();preparedStatement = connection.prepareStatement(aql);preparedStatement.setInt(1,1);resultSet = preparedStatement.executeQuery();while (resultSet.next()) {int id =resultSet.getInt("id");String name = resultSet.getString("name");String sex = resultSet.getString("sex");String brithday = resultSet.getString("brithday");String phone = resultSet.getString("phone");list.add(new Actor(id,name,sex,brithday,phone));}System.out.println("list = " + list);} catch (SQLException e) {throw new RuntimeException(e);} finally {JDBCUtilsByDruid.close(resultSet,preparedStatement,connection);}return list;}

  以上是韩老师教我们自己动手封装的办法,相当于是说一下原理和思路。而Apache—DBUtils则提供了一系列办法,我们导入jar包直接调用即可。简化了JDBC开发。开发中我们使用druid和commons.dbutils进行JDBC开发。

BasicDAO

  在进一步的使用中,我们封装了BasicDAO类,引入泛型和可变参数进一步提高了通用性和效率。实例见在下的另外一篇文章,满汉楼项目。

public class BasicDAO<T> {private QueryRunner qr = new QueryRunner();public int update(String sql, Object... parameters) {Connection connection = null;try {connection = JDBCUtilsByDruid.getConnection();int update = qr.update(connection, sql, parameters);return update;} catch (SQLException e) {throw new RuntimeException(e);} finally {JDBCUtilsByDruid.close(null,null,connection);}}public List<T> quertMutli(String sql,Class<T> clazz,Object... parameters){return null;}public T quertSingle(String sql,Class<T> clazz,Object... parameters){Connection connection = null;try {connection = JDBCUtilsByDruid.getConnection();return qr.query(connection,sql,new BeanHandler<T>(clazz),parameters);} catch (SQLException e) {throw new RuntimeException(e);} finally {JDBCUtilsByDruid.close(null,null,connection);}}
}

JDBC的一些API相关推荐

  1. 【JDBC】JDBC 简介 ( JDBC 概念 | JDBC 本质 | 使用 JDBC 操作数据库的好处 | JDBC 提供的 API 组件 )

    文章目录 一.JDBC 概念 二.JDBC 本质 三.使用 JDBC 操作数据库的好处 四.JDBC 提供的 API 组件 一.JDBC 概念 JDBC 全称 Java DataBase Connec ...

  2. 01-JDBC学习手册:JDBC概述之JDBC发展、API、驱动

    1  概述 JDBC  从物理结构上说就是 Java 语言访问数据库的一套接口集合.从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议.JDBC 的实现由数据库厂商以驱动程序的形式提供. ...

  3. jdbc mysql api_JDBC Api详解

    一.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  4. 【学习笔记】JDBC:java提供的专门操纵数据库的API JDBC驱动程序的类型 JDBC常用的类与接口

    JDBC技术 JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准接口,JDBC是一种底层的API,因此访问数据库 ...

  5. MySQL攻略 - JDBC程序SQL注入,PreparedStatement接口详解与案例练习,JDBC相关API小结

    文章目录 SQL注入 Statement详解 基本介绍 Navicat演示SQL注入 JDBC演示SQL注入 PreparedStatement详解 基本介绍 预处理好处 预处理案例(selete语句 ...

  6. JDBC高级特性3--JNDI,连接池,分布式事务

    2019独角兽企业重金招聘Python工程师标准>>> System.out.print(rs.getInt(1)+"\t"); System.out.print ...

  7. Java JDBC批处理插入数据操作

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  8. Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据

    概述 如何获取本地数据连接 示例从DBCP数据源中获取Oracle的本地连接对象 相关接口操作 LobCreator LobHandler 插入LOB类型的数据 以块数据的方式读取LOB数据 以流数据 ...

  9. sql server java类型_使用基本 JDBC 数据类型 - SQL Server | Microsoft Docs

    使用基本数据类型Using basic data types 01/29/2021 本文内容 Microsoft JDBC Driver for SQL ServerMicrosoft JDBC Dr ...

最新文章

  1. HarmonyOS ScrollView 使用
  2. 山寨c 标准库中的getline 函数
  3. Spring是如何运用设计模式的?
  4. 计算机专业面试国王的问题,阿卜杜拉国王科技大学电气与计算机科学面试经验汇总...
  5. 我们人类与人工智能技术究竟是怎样的关系?
  6. 关于windows的version和OS build version
  7. [oralce] 利用CRT的端口转发功能直接用plsql访问数据库
  8. [css] 说下你对css样式的这几个属性值initial、inherit、unset、revert的理解
  9. dpdk的无锁环形队列Ring
  10. Java中的集合HashSet、LinkedHashSet、TreeSet和EnumSet(二)
  11. 招C++高手及强力美工
  12. 【必备知识】线激光扫描三维成像原理
  13. 三极管NPN和PNP的区别
  14. 云端服务器上传本地项目
  15. 第四篇、代理模式详解(三种)
  16. 码工成长手册:刚毕业的程序员如何快速提升自己?
  17. 支付宝支付--手机支付
  18. java-learning:32. ArrayList类应用
  19. 设计模式简单RPG游戏设计
  20. 易企秀 背景音乐 下载

热门文章

  1. Andy’s First Dictionary(安迪的第一部词典)
  2. 通过自定义镜像创建具有相同操作系统、应用程序和数据的百度云服务器BCC,有效提高交付效率!
  3. 弗雷歇距离的原理及python代码实现(动态规划)
  4. [转] Boost算法
  5. 储物点的距离【前缀和】
  6. 计算机内存运算太低,内存频率低对电脑性能有影响吗
  7. 【2022感恩节活动营销理念】跨境电商卖家必知 !
  8. 在office中插入特殊符号方框带√
  9. PIC16F15323单片机 (中断与定时器Timer0)
  10. 绝对经典!百句浓缩版小常识(ZT)