相关文章推荐
八块腹肌的匕首  ·  Nginx报错403 ...·  8 月前    · 
一身肌肉的荒野  ·  7. Validation, Data ...·  1 年前    · 

1. 前言

  1. ResultSetMetaData 叫元数据 ,是数据库 列对象, 以列为单位封装为对象
  2. 元数据,指的是其包含列名,列值,列类型,列长度等等有用信息

2. 常用方法介绍

ResultSetMetaData 常用方法:
    1).  metaData.getColumnName(i)         获取该列的原始名字
    2).  metaData.getColumnLabel(i)        获取该列的别名
    3).  metaData.getColumnClassName(i)    获取该列的(在java中的)数据类型
    4).  metaData.getColumnType(i)         获取该列的(在数据库中的)数据类型对应的序号
    5).  metaData.getColumnTypeName(i)     获取该列的(在数据库中的)数据类型
    6).  metaData.getScale(i)              获取该列中小数点右边的位数
    7).  metaData.getColumnDisplaySize(i)  获取该列的长度
    8).  metaData.isAutoIncrement(i)       判断该列的值是否自动递增
    9).  metaData.isNullable(i)            判断该列的值是否为null
   10).  metaData.getTableName(i)          获取表名

3. 代码演示

  1. 先准备好一张表,如下图:
    在这里插入图片描述
    在这里插入图片描述

  2. 代码:

    public class Test {
        private static final String URL = "jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8";
        private static final String USERNAME = "root";
        private static final String PASSWORD = "root";
        public static void main(String[] args) throws Exception {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            // sql 语句 是使用了 别名的
            PreparedStatement preparedStatement = connection.prepareStatement("select id as ID, username as USERNAME, birthday as BIRTHDAY, sex as SEX, address as ADDRESS, money as MONEY  from user ");
            ResultSet resultSet = preparedStatement.executeQuery();
            // 获取元数据对象
            ResultSetMetaData metaData = resultSet.getMetaData();
            // 获取一共有多少列
            int columnCount = metaData.getColumnCount();
            // 将数据封装为Map
            List<Map<String, Object>> list = new ArrayList<>();
            while (resultSet.next()) {
                Map<String, Object> columnMap = new HashMap<>();
                // 注:列名的索引 起始是 1 不是 0
                for (int i = 1; i <= columnCount; i++) {
                    System.out.println("getColumnName(i): " + metaData.getColumnName(i));
                    System.out.println("getColumnLabel(i): " + metaData.getColumnLabel(i));
                    System.out.println("getColumnClassName(i): " + metaData.getColumnClassName(i));
                    System.out.println("getColumnType(i): " + metaData.getColumnType(i));
                    System.out.println("getColumnTypeName(i): " + metaData.getColumnTypeName(i));
                    System.out.println("getScale(i): " + metaData.getScale(i));
                    System.out.println("isNullable(i): " + metaData.isNullable(i));
                    System.out.println("isAutoIncrement(i): " + metaData.isAutoIncrement(i));
                    System.out.println("getTableName(i): " + metaData.getTableName(i));
                    System.out.println();
                    String key = metaData.getColumnName(i);
                    Object value = resultSet.getObject(key);
                    columnMap.put(key, value);
                list.add(columnMap);
            System.out.println();
            System.out.println(list);
            resultSet.close();
            preparedStatement.close();
            connection.close();
    

    4. 结果图(一部分)

    getColumnName(i): id
    getColumnLabel(i): ID
    getColumnClassName(i): java.lang.Integer
    getColumnType(i): 4
    getColumnTypeName(i): INT
    getScale(i): 0
    isNullable(i): 0
    isAutoIncrement(i): true   // id 自增 因此为true
    getTableName(i): user
    getColumnName(i): username
    getColumnLabel(i): USERNAME
    getColumnClassName(i): java.lang.String
    getColumnType(i): 12
    getColumnTypeName(i): VARCHAR
    getScale(i): 0
    isNullable(i): 0
    isAutoIncrement(i): false
    getTableName(i): user
    getColumnName(i): birthday
    getColumnLabel(i): BIRTHDAY
    getColumnClassName(i): java.time.LocalDateTime
    getColumnType(i): 93
    getColumnTypeName(i): DATETIME
    getScale(i): 0
    isNullable(i): 1
    isAutoIncrement(i): false
    getTableName(i): user
    getColumnName(i): sex
    getColumnLabel(i): SEX
    getColumnClassName(i): java.lang.String
    getColumnType(i): 1
    getColumnTypeName(i): CHAR
    getScale(i): 0
    isNullable(i): 1
    isAutoIncrement(i): false
    getTableName(i): user
    getColumnName(i): address
    getColumnLabel(i): ADDRESS
    getColumnClassName(i): java.lang.String
    getColumnType(i): 12
    getColumnTypeName(i): VARCHAR
    getScale(i): 0
    isNullable(i): 1
    isAutoIncrement(i): false
    getTableName(i): user
    getColumnName(i): money
    getColumnLabel(i): MONEY
    getColumnClassName(i): java.math.BigDecimal
    getColumnType(i): 3
    getColumnTypeName(i): DECIMAL
    getScale(i): 3     // 在数据库中该列值是 decimal 且是3位小数 因此得出 3
    isNullable(i): 1
    isAutoIncrement(i): false
    getTableName(i): user
    list:结果:
    {birthday=2021-02-27T17:47:08, address=北京, money=10.580, sex=男, id=41, username=老王}, 
    {birthday=2021-03-02T15:09:37, address=北京, money=10.580, sex=女, id=42, username=小二王}, 
    {birthday=2021-03-04T11:34:34, address=北京, money=10.580, sex=女, id=43, username=小二王}, 
    {birthday=2021-03-04T12:04:06, address=北京, money=10.580, sex=男, id=45, username=大王}, 
    {birthday=2021-03-07T17:37:26, address=北京, money=10.580, sex=男, id=46, username=老王}, 
    {birthday=2021-03-08T11:44, address=北京, money=10.580, sex=女, id=48, username=小马}, 
    {birthday=null, address=null, money=null, sex=男, id=50, username=kkooop}
    

    5. 源码

    https://gitee.com/Lgold/learning/tree/df1887c456aa4a140839104de0408f9dedb67ca4/src/main/java/com/king/learning/ResultSetMetaData

    文章目录1. 前言2. 常用方法介绍3. 代码演示4. 结果图(一部分)5. 源码1. 前言ResultSetMetaData 叫元数据,是数据库 列对象,以列为单位封装为对象。元数据,指的是其包含列名,列值,列类型,列长度等等有用信息。2. 常用方法介绍ResultSetMetaData 常用方法: 1). metaData.getColumnName(i) 获取该列的原始名字 2). metaData.getColumnLabel(i) 获
    文章地址:https://blog.csdn.net/m0_37969197/article/details/124522810 Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSetResultSetMetaData、查询结果集映射Map与ListMap 1.数据类型 2.封装通用增删改 2.1.封装JDBCUtil 2.2.封装Dao通用增删改 2.3.测试 3.ResultSetResultSetMetaData 4.查询对象映射Map 4.1.封装queryMap() 4.2.测试 5.查询结果集映射ListMap 5.1.封装queryListMap() 5.2.测试 6.完整源码
    一、使用 JDBC 驱动程序处理元数据Java 通过JDBC获得连接以后,得到一个Connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数据类型,触发器,存储过程等各方面的信息。根据这些信息,JDBC可以访问一个实现事先并不了解的数据库。  获取这些信息的方法都是在DatabaseMetaData类的对象上实现的,而DataBaseMe...
    利用jdbc连接数据库查询时,通常返回的结果就是每行数据的键值对集合。这时我们需要知道查询出来的数据有哪些字段。根据ResultSet结果集得到的ResultSetMetaData就可以获取到每个字段的名称。其中主要用getColumnLabel(intcolumn)和getColumnName(intcolumn)两种方法来获取。 ResultSetMetaData:用于获取关于ResultSet对象中列的类型和属性信息的对象; ResultSetMetaData...
    文章目录简介使用ResultSet使用ResultSetMetaData总结 java中数据库的操作相信大家都不陌生,JDK提供了java.sql包来规范对数据库的各种操作。我们最常用的操作就是从数据库的ResultSet中获取数据,其实这个包中还有一个非常有用的类叫做ResultSetMetaData,可以通过这个类来获取查询数据的元信息,一起来看看吧。 使用ResultSet java.sql.ResultSet是一个通用的规范,用来表示从数据库获取到的数据。 通常来说,我们通过connectio
    描述数据的数据 String SQL , 描述这份 SQL 字符串的数据叫做元数据 数据库元数据 DatabaseMetaData 参数元数据 ParameterMetaData 结果集元数据 ResultSetMetaData 2 MVC 设计模式 ​ MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 3 JSP 的开发模式 4 三层架构&MVC练习 5 学生信息管理系统 5.1 数据库准备 CREATE DATABASE stus; USE stus; CREATE TABLE stu ( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(20),
    JDBC技术规范中,提供了Connection,Statement,ResultSet这三个开发过程中经常用到的接口。针对与每个接口,JDBC规范提供了相应的接口描述对象,也就是xxxMetaData系列描述对象。DatabaseMetaDataResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
    你可以使用 Python 中的 MySQLdb 库来实现这个 MySQL 工具类。 首先,你需要连接到 MySQL 数据库服务器,并获取一个数据库游标。你可以使用这个代码来连接数据库并获取游标: ```python import MySQLdb # 连接数据库 conn = MySQLdb.connect(host="hostname", user="username", passwd="password", db="database_name") # 获取游标 cursor = conn.cursor() 然后,你可以使用如下 SQL 语句来判断数据表是否存在: ```SQL SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 'table_name'; 你可以使用 `cursor.execute()` 方法来执行这条 SQL 语句,并使用 `cursor.fetchone()` 方法来获取结果。如果结果为 0,则表示数据表不存在;如果结果大于 0,则表示数据表存在。 你可以使用如下 SQL 语句来创建数据表: ```SQL CREATE TABLE table_name ( column1 datatype, column2 datatype, 你可以使用类似的 SQL 语句来删除数据表: ```SQL DROP TABLE table_name; 你可以使用如下 SQL 语句来获取数据表的元数据: ```SQL DESCRIBE table_name; 你可以使用 `cursor.execute()` 方法来执行这条 SQL 语句,并使用 `cursor.fetchall()` 方法来获取结果。 希望这些信息能帮到你! @AutoConfiguration @EnableConfigurationProperties public class ConfigurationPropertiesAutoConfiguration { [/code] ConfigurationPropertiesAutoConfiguration 这个类上的 EnableConfigurationProperties 注解有什么用呢?并没有设定 value 值。