# dbutils-demo **Repository Path**: zing173/dbutils-demo ## Basic Information - **Project Name**: dbutils-demo - **Description**: Apache DbUtils的基本使用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-25 - **Last Updated**: 2025-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Apache DbUtils的使用 ### 一、JDBC的基本操作 第一:数据库的相关操作 >数据库设计、E-R图、建库、建表、索引 第二:下载JDBC驱动包 >[Maven Repository: Search/Browse/Explore](https://mvnrepository.com/) > >mysql-connector-j-9.2.0.jar 第三:建立连接 > DbUtils 第四:实现数据表的增、删、改、查操作 > 使用 JDBC API: > > - DriverManager > - Connection > - Statement > - PreparedStatement > - CallableStatement > - ResultSet > - **ResultSetMetaData** 第五:Git的基本操作 >- 本地仓库: > - 暂存、撤销、提交本地仓库 > - 忽略文件 > - 分支操作:创建、切换、合并、冲突 > - 推送远程仓库、拉取远程仓库 >- 远程仓库:创建、工作流 ## 二、元数据对象 > 注意:为自定义 DbUtils 作准备 ### 1、应用场景 自定义 DbUtils 时,需要把查询的数据**映射**到实例对象中。此时,我们必须要知道查询字段的数量和名称。运用相关的知识点有:反射、内省、泛型、注解。 在 DbUtils 中约定,实体对象的属性名称与数据表的字段名称一致。如果不一致,则可以通过以下方法解决: - 查询时,给查询字段指定别名,别名为实体对象的属性名称 - 实现 DbUtils 时,通过注解在实体对象属性上标记对应的字段名称 ### 2、常用的API方法 ```java // 1.实例化对象:结果集对象.getMetaData() ; ResultSetMetaData metaData = rst.getMetaData() ; // 2.常用方法 // 2.1 结果集中包含列的数量:int getColumnCount(): // 2.2获取指定列的别名,索引从1开始:String getColumnLabel(int column) ``` ## 三、Druid 数据源 > 定义连接的基本信息、连接池、日志、监控等配置 第一:下载、解压到指定位置 第二:导入项目 第三:在项目构造路径下,创建配置文件 第四:定义 Druid 工具类,获取数据源对象 ## 四、DbUtils ### 1、QueryRunner >SQL执行器:执行相关的 SQL 语句 ##### 1)实例化 ```java // 实例化 QueryRunner 对象 QueryRunner qr = new QueryRunner(数据源对象) ; ``` ##### 2)执行增、删、改操作 ```java int row = QueryRunner对象.update(sql,Object ... params) ; ``` ### 2、ResultSetHandler #### 1)思考 增、删、改操作执行完成后,返回的是受影响的行数。 那么,执行查询语句后,返回的结果是什么? - 不确定! #### 2)作用 接口用于处理 `java.sql.ResultSet`,将结果集的数据按要求转换为指定类型的数据。 ResultSetHandler是接口,只定义处理 ResultSet 的抽象方法,没有具体实现。 DbUtils根据不同场景,针对 ResultSetHandler 接口,内置了一些实现。不同的实现,表示把 ReulstSet 转换为不同类型的数据。 #### 3)执行查询操作 ```java ? 数据 = QueryRunner对象 .query(sql,ResultSetHandler接口的实现类,Object ... params) ; BeanListHandler<对象> beanListHandler = new BeanListHandler<>(对象.class) ; Staff 数据 = QueryRunner对象 .query(sql,new BeanHandler(Staff.class),Object ... params) ; List 数据 = QueryRunner对象 .query(sql,new BeanListHandler(Staff.class),Object ... params) ; ``` ## 五、日期时间类型 #### 1、老的 API java.util.Date:同时包含日期和时间 - java.sql.Date :只包含日期 - java.sql.Time:只包含时间 - java.sql.Timestamp:同时包含日期和时间 #### 2、新的 API JDK8新特性:`java.time` - `LocalDate`:表示日期,不包含时间部分。 - `LocalTime`:表示时间,不包含日期部分。 - `LocalDateTime`:表示日期和时间,没有时区信息。 - `ZonedDateTime`:表示带时区的日期和时间。 - `Instant`:表示时间戳,与时区无关。 - `Duration`:表示时间段,例如两个时间点之间的差异。 - `Period`:表示日期段,例如两个日期之间的差异。 - `DateTimeFormatter`:用于格式化和解析日期时间对象的类。 #### 3、各日期时间类型之间的转换 略