美文网首页Java后端生活程序员
JDBC(四)JDBC元数据和反射的利用

JDBC(四)JDBC元数据和反射的利用

作者: leeqico | 来源:发表于2018-06-17 18:42 被阅读2次

    一、使用 JDBC 驱动程序处理元数据

    Java 通过JDBC获得连接以后,得到一个Connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数据类型,触发器,存储过程等各方面的信息。根据这些信息,JDBC可以访问一个实现事先并不了解的数据库。

    获取这些信息的方法都是在DatabaseMetaData类的对象上实现的,而DataBaseMetaData对象是在Connection对象上获得的。

    二、DatabaseMetaData类

    DatabaseMetaData 类中提供了许多方法用于获得数据源的各种信息,通过这些方法可以非常详细的了解数据库的信息:

    getURL():返回一个String类对象,代表数据库的URL。

    getUserName():返回连接当前数据库管理系统的用户名。

    isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。

    getDatabaseProductName():返回数据库的产品名称。

    getDatabaseProductVersion():返回数据库的版本号。

    getDriverName():返回驱动驱动程序的名称。

    getDriverVersion():返回驱动程序的版本号。

    三、ResultSetMetaData 类

    可用于获取关于 ResultSet 对象中列的类型和属性信息的对象:

    getColumnName(int column):获取指定列的名称

    getColumnCount():返回当前 ResultSet 对象中的列数。

    getColumnTypeName(int column):检索指定列的数据库特定的类型名称。

    getColumnDisplaySize(int column):指示指定列的最大标准宽度,以字符为单位。

    isNullable(int column):指示指定列中的值是否可以为 null。

    isAutoIncrement(int column):指示是否自动为指定列进行编号,这样这些列仍然是只读的。

    四、案例

    (1)通用的查询方法:可以根据传入的 SQL、Class 对象返回 SQL 对应的记录的对象

    步骤如下:

    1. 得到 ResultSet 对象

    2. 得到 ResultSetMetaData 对象

    3. 创建一个 Map 对象,键: SQL 查询的列的别名,值: 列的值

    4. 处理结果集. 利用 ResultSetMetaData 填充 3 对应的 Map 对象

    5. 若 Map 不为空集, 利用反射创建 clazz 对应的对象

    6. 遍历 Map 对象, 利用反射为 Class 对象的对应的属性赋值.

    其中ReflectionUtils.setFieldValue(entity, fieldName, value);这个方法就是反射的工具类

    五、获取插入记录的主键值

    相关文章

      网友评论

        本文标题:JDBC(四)JDBC元数据和反射的利用

        本文链接:https://www.haomeiwen.com/subject/iqvbeftx.html