DBUtils query 方法为啥用 Integer 接收返回值不行呢?

问答 Josiah ⋅ 于 2020-10-28 17:35:13 ⋅ 最后回复由 一个小小鸟 2020-10-28 22:54:34 ⋅ 1514 阅读

file
file

为啥是Long类型,,我在源码里也没找到关于Long类型的字样

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 一个小小鸟
    2020-10-28 22:54:34
    在源码中有这样一句注释: @throws ClassCastException if the class datatype does not match the column type,

    就是当泛型的类型与字段的类型不匹配时抛出ClassCastException 异常。

    当ScalarHandler泛型使用Integer时,就报了该异常,是java.lang.Long不能转换成java.lang.Integer。
    
    因为查询记录数,select count(*) from person,返回结果的类型是bigint类型,可以使用以下方式查看

    create view v9 as
    select count(*) from person

    select column_name,column_comment,data_type
    from information_schema.columns
    where table_name='v9' and table_schema='db'

    mysql的bigint的取值范围与java的Long的范围一致,就映射成Long类型。所以查询总记录数的泛型应该使用Long,一般我们都使用它的父类Number。

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter