前提准备

1.和01里面一样还是要导入druid的jar包和mysql的驱动jar包。
2.编写配置文件 druid.properties

配置文件:druid.properties

在java项目的src文件夹下创建配置文件

image.png

创建工具类(我用的就是这个工具类)

创建一个utils包下面创建JDBCUtils工具类
工具类代码

  1. package utils;
  2. import com.alibaba.druid.pool.DruidDataSourceFactory;
  3. import javax.sql.DataSource;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.sql.Connection;
  7. import java.sql.SQLException;
  8. import java.util.Properties;
  9. /**
  10. * 这个类主要是提供一个数据库连接和druid的DataSource
  11. */
  12. public class JDBCUtils {
  13. private static DataSource ds ;
  14. //使用静态代码块来加载配置文件
  15. static {
  16. try {
  17. Properties properties = new Properties();
  18. //加载配置文件
  19. InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
  20. //得到输入流
  21. properties.load(is);
  22. //得到 datasource对象
  23. ds = DruidDataSourceFactory.createDataSource(properties);
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. public static Connection getConnection() throws SQLException {
  31. return ds.getConnection();
  32. }
  33. public static DataSource getDataSource(){
  34. return ds;
  35. }
  36. }

上面的工具类是我项目使用到的哦工具类,但是是不够好的,因为一般还有释放资源的方法
这里给一个比较好的Druid工具类的案例

  1. /**
  2. * Druid数据库连接池的工具类 实现
  3. *
  4. * 0在静态代码块里面获取配置文件
  5. * 1.获取数据库连接
  6. * 2,释放资源
  7. * 3.获取数据库连接池对象
  8. *
  9. */
  10. public class DruidTools {
  11. private static DataSource ds ;
  12. //静态代码块读取配置文件
  13. static {
  14. try {
  15. Properties properties= new Properties();
  16. //加载文件
  17. InputStream is = DruidTools.class.getClassLoader().getResourceAsStream("druid.properties");
  18. properties.load(is);
  19. ds = DruidDataSourceFactory.createDataSource(properties);
  20. } catch (IOException e) {
  21. e.printStackTrace();
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. /**
  27. * 获取数据库的连接
  28. */
  29. public static Connection getConnection() throws SQLException {
  30. return ds.getConnection();
  31. }
  32. /**
  33. * 释放资源
  34. * 在执行dml(增删改)语句的时候是 释放 statement 和 connection 对象
  35. * 在执行dq查询语句的时候是要释放 释放 resultset ,statement 和 connection 对象
  36. */
  37. public static void close(Statement stmt , Connection connection){
  38. //简化代码,我们调用下面的方法实现释放资源
  39. close(null ,stmt,connection);
  40. }
  41. public static void close(ResultSet resultSet ,Statement stmt , Connection connection){
  42. if (resultSet != null){
  43. try {
  44. resultSet.close();
  45. } catch (SQLException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. if (stmt != null){
  50. try {
  51. stmt.close();
  52. } catch (SQLException e) {
  53. e.printStackTrace();
  54. }
  55. }
  56. if (connection != null){
  57. try {
  58. connection.close();
  59. } catch (SQLException e) {
  60. e.printStackTrace();
  61. }
  62. }
  63. }
  64. /**
  65. * 获取连接池的方法
  66. */
  67. public static DataSource getDataSource(){
  68. return ds;
  69. }
  70. }

测试类查询数据库里面的数据

使用工具类实现数据库的查询

  1. package dimian;
  2. import utils.JDBCUtils;
  3. import javax.sql.DataSource;
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. //我们会发现在getdruidconnection1里面很多地方可能都会用到数据库的连接 和druid的datasouce
  9. //我们可以把得到数据库的连接,和得到druid的datasouce封装成为一工具类 JDBCUtils
  10. public class getdruidconnection2 {
  11. public static void main(String[] args) throws SQLException {
  12. //使用工具类来操作mysql数据库
  13. Connection conn = JDBCUtils.getConnection();
  14. String sql = "select * from luo ;";
  15. PreparedStatement preparedStatement = conn.prepareStatement(sql);
  16. ResultSet resultSet = preparedStatement.executeQuery();
  17. //遍历得到的集合
  18. while (resultSet.next()){
  19. //输出数据库name字段里面的数据
  20. String name = resultSet.getString("name");
  21. System.out.println(name);
  22. }
  23. }
  24. }