手把手教你学 JDBC —— 结构分离

2021-12-09 14:03:27 浏览数 (1)

JDBC 学习笔记 —— 结构分离

代码语言:txt复制
    - [前期准备](https://cloud.tencent.com/developer)
    - [一、实现你的第二个 JDBC 程序](https://cloud.tencent.com/developer)
        - [1.1 项目基本结构](https://cloud.tencent.com/developer)
        - [1.2 BaseDao 结构分离](https://cloud.tencent.com/developer)
            - [1.2.1 创建 jdbc.properties 文件](https://cloud.tencent.com/developer)
            - [1.2.2 创建 ConfigProperty.java 文件](https://cloud.tencent.com/developer)
            - [1.2.3 创建 Contranct.java 文件](https://cloud.tencent.com/developer)
        - [1.3 Dao 层分离](https://cloud.tencent.com/developer)
            - [1.3.1 UserDao 接口的实现](https://cloud.tencent.com/developer)
            - [1.3.2 UserDaoImpl 类,UserDao 的方法实现](https://cloud.tencent.com/developer)
            - [往期回顾](https://cloud.tencent.com/developer)

前期准备

基本配置看我

一、实现你的第二个 JDBC 程序

1.1 项目基本结构

三个包的解释

  1. dao 包下创建 UserDao 类,实现最基本的增删改查的方法
  2. entity 包下创建 User 类,增加基本的 User 的基本信息 以及 getter 和 setter 方法
  3. util 包下,使用 BaseDao 类对 JDBC 进行封装工作
1.2 BaseDao 结构分离
1.2.1 创建 jdbc.properties 文件

util 包中,我们将 BaseDao 中注册驱动的部分再细分下去,把注册驱动的四要素文件专门存放在 一个文件的当中,对其进行二次封装 (jdbc.properties),并且添加如下内容

代码语言:javascript复制
#mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bank?userUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
1.2.2 创建 ConfigProperty.java 文件

在下面使用了 Properties 类,然后通过该类用来读取 jdbc.properties 属性文件

代码语言:javascript复制
package cn.jdbc.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;


public class ConfigProperty {
	//Properties(Java.util.Properties),主要用于读取Java的配置文件
	Properties properties = null;
	private static ConfigProperty instance = null;

	private ConfigProperty() {
		properties = new Properties();// 创建属性文件对象
		// 得到输入流--反射机制
		InputStream is = ConfigProperty.class.getClassLoader()
				.getResourceAsStream("jdbc.properties");
		try {
			properties.load(is);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static ConfigProperty getInstance() {
		if (instance == null) {
			instance = new ConfigProperty();
		}
		return instance;
	}

	public String getValueByKey(String key) {// 根据key,找到值
		return properties.getProperty(key);
	}
}
1.2.3 创建 Contranct.java 文件

创建一个 Contranct 接口。然后和

代码语言:javascript复制
package cn.jdbc.util;

public interface Contranct {
	  public static final String DRIVER=ConfigProperty.getInstance().getValueByKey("jdbc.driver");
	  public static final String URL=ConfigProperty.getInstance().getValueByKey("jdbc.url");
	  public static final String NAME=ConfigProperty.getInstance().getValueByKey("jdbc.username");
	  public static final String PWD=ConfigProperty.getInstance().getValueByKey("jdbc.password");
}

为什么这样做?

  1. 因为这样做了,以后修改配置只用修改 jdbc.properties 的配置即可,代码基本可以不用改变
  2. 然后加入相对应的数据库驱动即可
1.3 Dao 层分离

将 UserDao 分离成如下两个部分

  1. UserDao 类转换成 UserDaoT 类
  2. 新增一个 UserDao 接口
  3. 新增一个 UserDaoImpl 类,继承 BaseDao 类 以及 UserDao 接口,最终实现 数据的增删改查操作
1.3.1 UserDao 接口的实现
代码语言:javascript复制
package cn.jdbc.dao;

import cn.jdbc.entity.User;

public interface UserDao {
	User selectUserByuserNameAndPwd(String userName, String pwd);
	
}
1.3.2 UserDaoImpl 类,UserDao 的方法实现
代码语言:javascript复制
package cn.jdbc.dao.Impl;

import java.sql.SQLException;

import cn.jdbc.dao.UserDao;
import cn.jdbc.entity.User;
import cn.jdbc.util.BaseDao;


public class UserDaoImpl extends BaseDao implements UserDao{

	@Override
	public User selectUserByuserNameAndPwd(String userName, String pwd) {
		// TODO Auto-generated method stub
		User user = null;
		String sql = "SELECT *FROM USER WHERE username=? AND pwd=?";
		Object[] params = { userName, pwd };
		rs = this.executeQuery(sql, params);
		try {
			if (rs.next()) {
				user = new User(rs.getString("username"), rs.getString("pwd"),
						rs.getString("status"), rs.getString("qq"),
						rs.getTimestamp("registerTime"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return user;
	}

}
往期回顾

实现你的第一个 JDBC 程序

0 人点赞