Statement:
用于执行 SQL 语句的对象,传入的 SQL 语句可以是 INSERT、UPDATE 或 DELETE,但不能是 SELECT。
使用:
新建一张表 tb_user:
执行 INSERT 操作:
再查看数据表结果:
同理,UPDATE 和 DELETE 的用法是一样的,所以可以将以上方法封装到类里:
将获取连接和关闭的方法统一封装到 JDBCUtil 类里面,方便调用。
ResultSet:
结果集,封装了使用 JDBC 进行查询的结果
查询表 tb_user 的所有记录并打印:
ResultSet 实际上返回的是一张数据表,调用 next() 方法去查找每一行是否存在数据。
PreparedStatement:
由于使用 Statement 需要繁琐的拼写 SQL 语句,而且容易出错,所以 JDBC 提供了 Statement 的子接口 PreparedStatement,它可以传入带占位符的 SQL 语句,并且提供了补充占位符变量的方法。同时,使用 PreparedStatement 可以有效的防止 SQL 注入,而且可以最大可能的提高性能。在批量插入记录时,PreparedStatement 已经预编译好 SQL 命令,所以相对 Statement 来说,效果提高不少。
使用步骤:
⑴ 创建 PreparedStatement
⑵ 调用 PreparedStatement 的 setXxx( int index,Object val) 设置占位符的值,其中index 的值 从1 开始
⑶ 执行 SQL 语句:executeQuery() 或 executeUpdate(),注:执行式不再需要传入 SQL 语句
案例:
利用反射和 JDBC元数据封装通用查询方法:
步骤:
⑴ 利用 SQL 进行查询,得到结果集
⑵ 利用反射创建实体类的对象
⑶ 获取结果集的列的别名
⑷ 获取结果集的每一列的值,结合步骤 ⑶ 得到一个 Map 键值对
⑸ 利用反射对创建的对象的属性赋值,属性为 map 的键,值为 map 的值
ResultSetMetaData :
描述 ResultSet 的元数据对象,从中可以获取到结果集中有多少列,每一列的列名等
使用:
由图,可以传入指定的实体类,SQL 语句和参数值,来获取指定实体对象的每个字段的值。
以上为本人的一些学习笔记,如有出错欢迎指正,陆续更新!!!
网友评论