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 项目基本结构
三个包的解释:
- dao 包下创建 UserDao 类,实现最基本的增删改查的方法
- entity 包下创建 User 类,增加基本的 User 的基本信息 以及 getter 和 setter 方法
- 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");
}
为什么这样做?
- 因为这样做了,以后修改配置只用修改 jdbc.properties 的配置即可,代码基本可以不用改变
- 然后加入相对应的数据库驱动即可
1.3 Dao 层分离
将 UserDao 分离成如下两个部分
- UserDao 类转换成 UserDaoT 类
- 新增一个 UserDao 接口
- 新增一个 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 程序