1.前一天重点内容复习
什么是JDBC,本质是什么
JDBC就是Java操作数据库的连接器,本质是实现sun公司提供的数据库连接接口的类,这些实现类在数据库厂商提供的驱动包中
jdk动态代理,描述以及代码实现
描述:就是让代理角色帮助真实角色完成特定功能,对真实角色的功能进行增强,在程序运行的过程中,通过反射的方式产生类的实例
代码实现:
1.创建真实角色的接口
2.创建真实角色的实现类,实现真实角色的接口
3.创建真实角色对象,类型为真实角色接口类型
4.创建一个继承自InvocationHandler接口的子实现类,定义一个私有的Object类型的变量,给出有一个参数的构造方法并将参数赋值Object类型的变量,重写invoke方法进行权限校验和产生日志操作,通过对method的对象的invoke方法传入真实对象和此方法参数返回一个Object类型变量作为返回值
5.创建InvocationHandler接口的子实现类对象
6.使用Proxy类的静态方法来产生代理对象public static Object newProxyInstance (ClassLoader loader,Class<?>[] interfaces,InvocationHandler h) throws IllegalArgumentException,传入真实对象的类加载器,真实对象的接口和InvocationHandler接口的子实现类对象
7.通过代理对象来调用真实对象方法
JDBC原生操作步骤
导入驱动jar包
加载驱动
Class.forName("Driver类的全限定名称");
获取数据库的连接对象
DriverManager.getConnection("jdbc:数据库名称://域名:端口号/库名","用户名","密码");
准备静态sql语句
String sql = "sql语句";
通过数据库连接对象获得执行数据库的对象
数据库连接对象.createStatement();
数据库执行对象执行sql语句并返回结果
数据库执行对象.executeUpdate(sql);
释放资源
反射获取Method类对象并去调用成员方法
获取该类字节码文件对象
Class.forName("类的全限定名称");
通过字节码文件对象来创建一个该类的实例对象
字节码文件对象.newInstance();
通过字节码文件对象来获取该对象的成员方法对象
字节码文件对象.getMethod(”方法名“,参数.class、、、);
成员方法对象调用执行方法,传入实例对象和方法参数,以此来访问成员方法
成员方法对象.invoke(实例对象,"参数",、、、);
2.JDBC操作中核心接口及类
java.sql.DriverManager类:管理一组驱动服务
public static synchronized void registerDriver(java.sql.Driver driver):注册驱动的方法
注册驱动时为何需要写Class.forName("驱动类的全限定名称");目的是加载驱动类的字节码文件,向下保证兼容性,并且在此类的静态代码块中已经注册驱动,只要类加载立即注册驱动,写此代码原因就是为了向下兼容,加载Driver类
java.sql.Connection接口:与特定数据库的会话连接
com.mysql.cj.jdbc.ConnectionImpl实现Connection接口并且实现Connection接口里面的抽象方法Statement createStatement()
java.sql.Statement接口:执行对象,执行的都是静态sql语句
int executeUpdate(String sql) throws SQLException;:执行更新操作
ResultSet executeQuery(String sql) throws SQLException;:执行查询工作
ResultSet:表示数据库结果集的数据表
Boolean next() throws SQLException;:将光标从当前位置向前移动一行,返回值为true表示存在有效数据,光标移动,false为没有数据
get数据类型(数据类型 变量):获得当前行指定列的值
ResultSetData getMetaData():获取结果集数据表数据