通用数据库访问对象
功能: 两大类
查询 excuteQuery() 结果集
查询出的数据结果对应java中的不同对象,最后功能返回一个对象的集合
增删改 excuteUpdate() 影响行数
insert into t_user values(?,?,?);
反射:
通过一个类的Class对象的newInstance()方法可以创建这个类型的对象(初始化对象信息时默认调用空构造)
通过一个类的Class对象先获取到这个类中的某个构造器,使用Constructor类的newInstance()方法创建对象(初始化对象信息时默认使用当前这个构造器)
封装增删改的方法。
1.获取连接
2.封装预处理块
3.给sql中的占位符赋值
4.执行sql
5.判断
public boolean testUpdate(String sql,Object[] args){
boolean flag =true;
Connection conn=null;
PreparedStatement state=null;
//1.获取连接
try {
conn=DBUtils.getConnection();
//2.封装预处理块
state=conn.prepareStatement(sql);
//3.给sql中的占位符赋值
for(int i=0;i<=args.length-1;i++){
state.setObject(i+1, args[i]);
}
//4.执行sql
int rows=state.executeUpdate();
//5.判断
if(rows<=0){
flag=false;
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBUtils.close( state, conn);
}
return flag;
}
封装查询功能
1.获取连接
2.封装预处理块
3.给sql中的占位符赋值
4.执行sql
获取结果集中每一条数据的字段(属性,属性和字段保持一致)的个数,字段的名字
5.判断结果集中是否存在数据,一条数据就是一个对象
6.有一条数据就有一个对象 默认调用空构造
7.从结果集中获取某一个字段值 value
8.获取字段名字
9.根据字段名字获取某一个字段
获取这个属性的设置器,通过调用设置器为私有属性赋值
10.给字段设置值
若没有权限
我们就放开权限
field.setAccessible(true);
field.setAccessible(false); //关闭权限
11.把对象放入容器
list.add(obj);
实质上就是把数据库中的数据拿出来给Java中我们创建的对象赋值,把表里的内容用Java表示出来,为查询。
JDBC
实现流程
1、加载驱动(选择数据库)(已经写好的驱动)
通过反射—>Class.forName(“包名+类名”)
获取该类的Class对象
2、获取连接(与数据库建立连接)
3、准备sql
4、准备处理块
5、发送sql到数据库
6、处理数据
7、关闭资源
加载驱动
1、连接 2、关闭
加载驱动需要一个静态块
配置文件
新建一个文件 source
连接数据库的配置文件:
建一个文件File,叫db.properties
driver
url
name
pwd
连接数据库需要加载的驱动直接拿过来用
反射加载驱动