盒子
盒子
文章目录
  1. 数据表数据存储对象
  2. properties配置文件
  3. properties文件的创建和编写
  4. 加载配置文件
  5. 读取配置文件的工具类
  6. DButils工具类的介绍和三个核心类

DBUtils

数据表数据存储对象

  • JDBC读取数据表sort,每行数据封装到Sort类的对象中

    • 很多个Sort类对象,存储到List集合中
    • 建一个Sort类
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
        package jdbcUtils;

      class Sort {
      private int sid;
      private String sname;
      private double sprice;
      private String sdesc;
      public Sort(int sid, String sname, double sprice, String sdesc) {
      super();
      this.sid = sid;
      this.sname = sname;
      this.sprice = sprice;
      this.sdesc = sdesc;
      }
      public Sort() {
      super();
      }
      public int getSid() {
      return sid;
      }
      public void setSid(int sid) {
      this.sid = sid;
      }
      public String getSname() {
      return sname;
      }
      public void setSname(String sname) {
      this.sname = sname;
      }
      public double getSprice() {
      return sprice;
      }
      public void setSprice(double sprice) {
      this.sprice = sprice;
      }
      public String getSdesc() {
      return sdesc;
      }
      public void setSdesc(String sdesc) {
      this.sdesc = sdesc;
      }
      @Override
      public String toString() {
      return "Sort [sid=" + sid + ", sname=" + sname + ", sprice=" + sprice
      + ", sdesc=" + sdesc + "]";
      }
      }
  • 用我们自己封装的工具类JDBCUtils读取数据库数据封装Sort对象到集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package jdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import jdbcTest.JDBCUtils;

public class JDBCDemo {
public static void main(String[] args) throws SQLException {
//使用JDBC工具类,直接获取数据库连接对象
Connection con = JDBCUtils.getConnection();
//连接获取数据库SQL语句执行者对象
PreparedStatement pst = con.prepareStatement("select * from sort");
//调用查询方法,获取结果集
ResultSet rs = pst.executeQuery();
//创建集合对象
List<Sort> ls = new ArrayList<Sort>();
while(rs.next()){
//获取到每个列数据,封装到Sort对象中
Sort s = new Sort(rs.getInt("sid"),rs.getString("sname"),rs.getDouble("sprice"),rs.getString("sdesc"));
//封装的Sort对象,存储到集合中
ls.add(s);
}
//遍历List集合
for(Sort s : ls){
System.out.println(s);
}
JDBCUtils.close(con, pst,rs);
}
}

properties配置文件

  1. 使用properties配置文件
    开发中获得连接的4个参数(驱动、URL、用户名、密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。
    通常情况下,我们习惯使用properties文件,此文件我们将做如下要求:
    1. 文件位置:任意,建议src下
    2. 文件名称:任意,扩展名为properties
    3. 文件内容:一行一组数据,格式是“key=value”.
      • key命名自定义,如果是多个单词,习惯使用点分隔。例如:jdbc.driver
      • value值不支持中文,如果需要使用非英文字符,将进行unicode转换。

properties文件的创建和编写

右击src创建file文件,后缀名.properties,文件内容格式如下:

1
2
3
4
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名
user=root
password=root

加载配置文件

  • 在java程序中我们读取properties配置文件,如果用io流读取:
    FileInputStream fis = new FileInputStream(src/db.properties);
    System.out.println(fis);
    这样能读取到,但是我们的项目给客户,源码是不给的,只给一个bin目录文件,此时如果用这种方式,没有src目录,会出问题,所以不用该方式读取。

  • 使用类的加载器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package jdbcUtils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/*
加载properties配置文件
IO读取文件,键值对存储到集合
从集合中以键值对方式获取数据库的连接信息,完成数据库的连接
*/
public class PropertiesDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
//使用类的加载器(类加载器将class文件加载进入内存,能加载bin目录中的class文件,则也可以加载bin中的properties文件)
InputStream in = PropertiesDemo.class.getClassLoader().getResourceAsStream("db.properties");
Properties pro = new Properties();
pro.load(in);
//获取集合中的键值对
String driverClass = pro.getProperty("driverClass");
String url = pro.getProperty("url");
String username = pro.getProperty("username");
String password = pro.getProperty("password");
Class.forName(driverClass);
Connection con = DriverManager.getConnection(url,username,password);
System.out.println(con);
}
}

读取配置文件的工具类

  • 工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package jdbcUtils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/*
编写JDBC的工具类,获取数据库的连接
采用读取配置文件的方式
读取配置文件,获取连接,执行一次,static{}
*/
public class JDBCUtilConfig {
private static Connection con;
private static String driverClass;
private static String url;
private static String username;
private static String password;
static{
try {
readConfig();
Class.forName(driverClass);
con = DriverManager.getConnection(url,username,password);
} catch (Exception e) {
throw new RuntimeException("数据库连接失败");
}
}
public static void readConfig() throws IOException{
InputStream in = JDBCUtilConfig.class.getClassLoader().getResourceAsStream("db.properties");
Properties pro = new Properties();
pro.load(in);
driverClass = pro.getProperty("driverClass");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
}
public static Connection getConnection(){
return con;
}
}
  • 测试工具类
1
2
3
4
5
6
7
8
9
10
package jdbcUtils;

import java.sql.Connection;

public class JDBCUtilsTest {
public static void main(String[] args) {
Connection con = JDBCUtilConfig.getConnection();
System.out.println(con);//有该对象说明成功
}
}

DButils工具类的介绍和三个核心类

如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,我们采用apache commons组件一个成员:DBUtils。
DBUtils是JDBC的简化开发工具包。需要项目导入 commons-dbutils-1.6.jar 才能够正常使用DBUtils工具。

工具包下载

  1. 介绍

DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
DBUtils三个核心功能介绍

  • QueryRunner中提供对 sql语句操作的API
  • ResultSetHandler接口,用于定义select操作后,怎样封装结果集
  • DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
联系我
扫一扫,添加JzhBetter
  • 微信扫一扫
  • qq扫一扫