java小知识之查询数据库数据的元信息

 更新时间:2021年10月13日 15:34:35   作者:程序那些事  
这篇文章主要给大家介绍了关于java小知识之查询数据库数据的元信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

简介

java中数据库的操作相信大家都不陌生,JDK提供了java.sql包来规范对数据库的各种操作。我们最常用的操作就是从数据库的ResultSet中获取数据,其实这个包中还有一个非常有用的类叫做ResultSetMetaData,可以通过这个类来获取查询数据的元信息,一起来看看吧。

使用ResultSet

java.sql.ResultSet是一个通用的规范,用来表示从数据库获取到的数据。

通常来说,我们通过connection来创建Statement,然后通过执行查询语句来得到:

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                        ResultSet.CONCUR_UPDATABLE);
         ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");

resultSet提供了各种getter方法,来获取结果集中的各种数据。可以通过index,也可以通过column名称来获取。

当然,使用index它的效率会更高,index是从1开始的。如果是通过列名来获取数据,传入的列名是大小写不敏感的,如果结果数据中有多个匹配的类,则会返回最先匹配的那一列。

在get的过程中,JDBC driver会尝试将结果数据的数据库类型转换成为对应的java类型。

JDBC 2.0 API,ResultSet也可以进行更新和插入操作,可能我们很少这样做,一般都是先构造好数据后直接插入。

先看下更新操作:

         rs.absolute(5); // 将游标移动到第5行
         rs.updateString("SITE", "www.flydean.com"); // 将SITE更新为www.flydean.com
         rs.updateRow(); // 更新到数据库中

再看下插入操作:

  
         rs.moveToInsertRow(); // 将游标移动到插入行
         rs.updateString(1, "www.flydean.com"); // 将插入行的第一列更新为www.flydean.com
         rs.updateInt(2,35); // 更新第二列为35
         rs.updateBoolean(3, true); // 更新第三列为true
         rs.insertRow();
         rs.moveToCurrentRow();

使用ResultSetMetaData

有了ResultSet,我们可以通过它的getMetaData方法,来获取结果集的元数据。

什么是元数据呢?元数据又叫做Metadata,是用来描述数据属性的数据。

   ResultSetMetaData getMetaData() throws SQLException;

举个具体的例子:

       ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
       ResultSetMetaData rsmd = rs.getMetaData();
       int numberOfColumns = rsmd.getColumnCount();
       boolean b = rsmd.isSearchable(1);

ResultSetMetaData提供了很多非常有用的元数据检测方法:

我们可以拿到列的名称、类型、字段长度、是否为空等很多有意义的数据。

这个元数据有什么用呢?

通过元数据,我们可以拿到数据库的描述文件,从而可以自动创建对应的数据库表格的映射关系,从而减少手动代码的输入,非常的方便。

用过MybatisPlus的朋友可能知道,它提供了一个AutoGenerator,可以自动生成mapper对象和对应的xml文件,非常好用,大家可以试一试。

总结

以上就是ResultSet和ResultSetMetaData的介绍,大家学会了吗?

到此这篇关于java小知识之查询数据库数据元信息的文章就介绍到这了,更多相关java查询数据库数据元信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java8 forEach结合Lambda表达式遍历 List操作

    java8 forEach结合Lambda表达式遍历 List操作

    这篇文章主要介绍了java8 forEach结合Lambda表达式遍历 List操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • java数据结构基础:算法

    java数据结构基础:算法

    这篇文章主要介绍了Java的数据解构基础,希望对广大的程序爱好者有所帮助,同时祝大家有一个好成绩,需要的朋友可以参考下,希望能给你带来帮助
    2021-07-07
  • SpringBoot中定位切点的两种常用方法

    SpringBoot中定位切点的两种常用方法

    有时候,我们使用AOP来进行放的增强,编写切面类的时候,需要定位在哪个方法上试用该切面进行增强,本片文章主要讲解两种在SpringBoot中定位切点的方法,感兴趣的可以了解一下
    2021-06-06
  • Apache Maven3.6.0的下载安装和环境配置(图文教程)

    Apache Maven3.6.0的下载安装和环境配置(图文教程)

    本文主要介绍了Apache Maven3.6.0的下载安装和环境配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 解析java稀疏数组如何帮助我们节省内存提升性能

    解析java稀疏数组如何帮助我们节省内存提升性能

    这篇文章主要为大家介绍了java稀疏数组如何帮助我们节省内存提升性能解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Mybatis控制台打印SQL执行信息的方法详解

    Mybatis控制台打印SQL执行信息的方法详解

    SQL性能监控是一个程序必要的功能,通常我们可以使用数据库自带的客户端工具进行SQL性能分析,本章节只实现Mybatis执行时对执行SQL进行拦截,控制台打印执行SQL包括参数、执行方法以及执行时间,需要的朋友可以参考下
    2024-11-11
  • Spring通过三级缓存解决循环依赖问题的过程详解

    Spring通过三级缓存解决循环依赖问题的过程详解

    循环依赖指的是在对象之间存在相互依赖关系,形成一个闭环,导致无法准确地完成对象的创建和初始化,本文主要介绍了Spring通过三级缓存解决循环依赖的方法,需要的可以参考下
    2023-10-10
  • java基础之标签、按钮和按钮事件简介

    java基础之标签、按钮和按钮事件简介

    本文给大家带来的是java图形界面的基础知识,简单介绍了标签、按钮和按钮事件,十分的详细,有需要的小伙伴可以参考下。
    2015-06-06
  • springboot常用注释的讲解

    springboot常用注释的讲解

    今天小编就为大家分享一篇关于springboot常用注释的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Java Comparable和Comparator对比详解

    Java Comparable和Comparator对比详解

    这篇文章主要介绍了Java Comparable和Comparator对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论