WEB03_Day01(下)-JDBC连接MySQL、封装DBUtils工具类

一、JDBC连接MySQL(CRUD)

1.1 删除

     /**
   * 删除数据
  */
  @Test
  public void delete() throws Exception {
  //1.加载驱动
 
  //2.获取连接对象
  String url = "jdbc:mysql://localhost:3306/newdb3?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true";
  String userName = "root";
  String password = "root";
  Connection conn = DriverManager.getConnection(url,userName,password);
  //3.创建命令对象
  Statement stat = conn.createStatement();
  //4.执行sql
  String sqlStr = "DELETE FROM emp WHERE empno=12";
  int nums = stat.executeUpdate(sqlStr);
  System.out.println("受影响的行数:" + nums);
 
  //5.关闭资源
  conn.close();
 
  }

1.2 修改

     /**
  * 修改数据
  */
  @Test
  public void update() throws Exception{
  Class.forName("com.mysql.cj.jdbc.Driver");
  String url = "jdbc:mysql://localhost:3306/newdb3?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true";
  String userName = "root";
  String password = "root";
  Connection conn = DriverManager.getConnection(url,userName,password);
  Statement stat = conn.createStatement();
  String sqlStr = "UPDATE emp SET sal=1000 WHERE empno=1";
  int nums = stat.executeUpdate(sqlStr);
  System.out.println(nums);
         conn.close();
 
  }

1.3 查询

     /**
   * 查询数据
  */
  @Test
  public void select() throws Exception{
  Class.forName("com.mysql.cj.jdbc.Driver");
  String url = "jdbc:mysql://localhost:3306/newdb3?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true";
  String userName = "root";
  String password = "root";
  Connection conn = DriverManager.getConnection(url,userName,password);
  Statement stat = conn.createStatement();
  String sqlStr = "SELECT empno,ename FROM emp";
  /*
  * 查询数据时,返回的是一个ResultSet结果集对象,
  * 在结果集对象中包含了查询出来的数据
  */
  ResultSet rs = stat.executeQuery(sqlStr);
  /*
  * 使用rs结果集对象中提供的next方法,进行遍历当前对象中的
  * 每一行员工数据内容,根据每位员工的字段信息就可以获取对应字段的数值。
  * 结果集对象调用next方法时如果有数据返回值为true,如果没有数据返回值为false
  *
  */
 // boolean b = rs.next();
 // System.out.println(b);
 // b = rs.next();
 // System.out.println(b);
 // System.out.println(rs.getInt(1));
 // System.out.println(rs.getString(2));
 // //向上移动指针
 // b = rs.previous();
 // System.out.println(b);
 // System.out.println(rs.getInt(1));
 // System.out.println(rs.getString(2));
 // b = rs.previous();
 // System.out.println(b);
 
 
  while (rs.next()) {
  /*
  * 获取字段数据的方法:
  * 1.根据列的序列号
  * 2.根据字段的名字
  */
 // int empId = rs.getInt(1);
 // String ename = rs.getString(2);
  int empId = rs.getInt("empno");
  String ename = rs.getString("ename");
  System.out.println(empId + "," + ename);
  }
 
 
  }

二、封装DBUtils工具类

  DBUtils工具类是根据CRUD当前代码业务的分析,可以查看到在代码有大量冗余的代码,每次进行连接数据库,然后对于数据库中的数据进行操作,都需要写相同的代码。此时可以将冗余的代码抽取设计一个工具类,在每次进行连接数据库时不需要再次重新书写,只需要进行复用工具类中的连接代码即可。

  • 在项目的src/main/resources目录下新建jdbc.properties配置文件,在配置文件中书写连接数据库的一些连接参数

 driver=com.mysql.cj.jdbc.Driver
 url=jdbc:mysql://localhost:3306/newdb3?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
 username=root
 password=root

该配置文件不需要单独记忆,以后使用直接复制粘贴即可。

  • 在cn.tedu.jdbc包中进行新建DBUtils工具类,在工具类中进行封装连接MySQL数据库的代码逻辑,并且需要进行解析jdbc.properties配置文件中的连接数据库的参数

 package cn.tedu.jdbc;
 
 import java.io.InputStream;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.util.Properties;
 
 /**
  * JDBC连接MySQL工具类
  * @author Tedu
  *
  */
 public class DBUtils {
 
  /**
   * 静态方法,用户获取连接对象
  * @return 返回连接对象
  * @throws Exception
  */
  public static Connection getConn() throws Exception {
  //1.进行解析jdbc.properties配置文件,用户获取里面的连接参数
  //1.1获取输入流对象,用户读取项目的配置文件(磁盘->内存)
  InputStream in = DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
  //1.2使用Properties对象进行解析配置文件
  Properties p = new Properties();
  //1.3 加载配置文件的输入流
  p.load(in);
 
  //2.使用解析得到的参数值进行获取连接对象
  String driver = p.getProperty("driver");
  String url = p.getProperty("url");
  String userName = p.getProperty("username");
  String password = p.getProperty("password");
 
  //3.加载驱动
  Class.forName(driver);
 
  //4.获取连接对象
  Connection conn = DriverManager.getConnection(url,userName,password);
 
  return conn;
 
  }
 
 }
  • 测试当前DBUtils工具类是否可以进行获取连接对象

 package cn.tedu.jdbc;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
 import org.junit.Test;
 
 public class JdbcTest03 {
 
  @Test
  public void select() {
  //通过工具类获取连接对象
  try (Connection conn = DBUtils.getConn();){
  //获取命令对象
  Statement stat = conn.createStatement();
  //准备sql
  String sqlStr = "SELECT empno,ename FROM emp";
  //执行sql
  ResultSet rs = stat.executeQuery(sqlStr);
  while (rs.next()) {
  int empno = rs.getInt(1);
  String ename = rs.getString(2);
  System.out.println(empno + "," + ename);
  }
 
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
 
 }

 

 

posted @ 2021-09-13 23:34  Coder_Cui  阅读(178)  评论(0编辑  收藏  举报