DBUtils注意问题

简介: DBUtils注意问题

在使用DBUtils之前,应该注意一些问题:

  1. DBUtils是JDBC的简单封装,可以和JDBC混合使用。
  2. DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表结果集列名一一对应。
  3. DBUtils可以将结果集封装为各种类型,主要有:Bean/List<Bean>,Map/List<Map>/Map<Map>数组/List<数组>,列/List<列>,这些类型。 对于Map<Map>的类型使用KeyedHandler作为结果集处理器,内层的Map是“列名-值"对,外层的Map是“主键-内层Map的引用”,但此处的主键不一定就是数据库的主键,可以随意指定,比如:
    ResultSetHandler h = new KeyedHandler("id");
    Map found = (Map) queryRunner.query("select id, name, age from person", h);
    Map jane = (Map) found.get(new Long(1)); // jane's id is 1
    String janesName = (String) jane.get("name");
    Integer janesAge = (Integer) jane.get("age");
  4. DBUtils执行插入操作的时候,无法返回自增主键,这是一个很严重的问题,当然不能怪DBUtils,可以通过变通的方法来实现,比如在MySQL中,执行完了一个插入SQL后,接着执行SELECT LAST_INSERT_ID()语句,就可以获取到自增主键。
  5. DBUtils的性能和JDBC性能是一样,测试过程中没发现性能损失,拥有了很高性能的同时,而不失JDBC的灵活性。
  6. 对于JavaBean的成员类型定义,有一条原则那就是:尽可能使用包装类型,而不要使用基本类型
    //错误
    int a1 = (Integer) null;
    boolean x1 = (Boolean)null;
    //正确
    Integer a2 = (Integer) null;
    Boolean x2 = (Boolean)null;
    实际上就是为了保证在查询结果为null的时候,也不会因为给基本类型赋null值而发生错误。


相关文章
|
程序员 编译器 C语言
C++风格与C风格类型强转异同
C++风格的强转: C++强制类型转换 C风格的强制类型转换很容易理解,不管什么类型都可以直接进行转换,使用格式如下: 目标类型 b = (目标类型) a; C++也是支持C风格的强制类型转换,但是C风格的强制类型转换可能会带来一些隐患,出现一些难以察觉的问题,所以C++又推出了四种新的强制类型转换来替代C风格的强制类型转换,降低使用风险。 在C++中,新增了四个关键字static_cast、const_cast、reinterpret_cast和dynamic_cast,用于支持C++风格的强制类型转换。 C++风格的强制类型转换能更清晰的表明它们要干什么,程序员只要看一眼这样的代码,立即
338 0
|
8月前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
1590 3
|
关系型数据库 MySQL 数据库
Docker 安装 MySQL
一、查看 MySQL 版本 访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags 。 可以通过 Tags 查看其他版本的 MySQL,默认是最新版本 mysql:latest 。 你也可以在下拉列表中找到其他你想要的版本: 二、拉取 MySQL 镜像 拉取官方的最新版本的镜像: docker pull mysql:latest 三、查看本地镜像 使用以下命令来查看是否已安装了 mysql: docker images 四、运行容器 安装完成后,我们可以使用以下命令来运行 mysql 容器: docker run -itd --name m
2054 0
|
Java Maven
【异常】java: Internal error in the mapping processor: java.lang.NullPointerException
【异常】java: Internal error in the mapping processor: java.lang.NullPointerException
1976 0
|
存储 分布式计算 算法
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
291 0
|
安全 Oracle 关系型数据库
智能合约中时间依赖漏洞
智能合约中时间依赖漏洞
405 6
|
iOS开发
mac版本Beyond Compare如何一直试用
mac版本Beyond Compare如何一直试用
1032 0
mac版本Beyond Compare如何一直试用
java使用FileChannel的transferTo方法拷贝大于2G文件
java使用FileChannel的transferTo方法拷贝大于2G文件
419 0
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的智能小麦害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
基于YOLOv8深度学习的智能小麦害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
|
前端开发 JavaScript PHP
fastadmin框架自带的数据效验
fastadmin框架自带的数据效验
658 0

热门文章

最新文章