类 JDBCDao<Entity>
java.lang.Object
cool.scx.data.jdbc.JDBCDao<Entity>
使用 JDBC 接口, 通过 SQL 操作关系型数据库的 DAO
- 版本:
- 0.1.3
- 作者:
- scx567888
-
字段概要
字段修饰符和类型字段说明protected final ResultHandler<Long>查询 count 所用的 handlerprotected final Dialect方言protected final ResultHandler<List<Entity>>实体类对应的 BeanListHandler实体类 class 用于泛型转换protected final JDBCDaoGroupByParserprotected final JDBCDaoOrderByParserprotected final SQLRunnerSQLRunnerprotected final AnnotationConfigTable实体类对应的 table 结构protected final JDBCDaoWhereParserwhere 解析器 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明获取 类final SQLRunnerfinal Table<? extends ColumnMapping>final void清空表中所有数据 (注意此操作不受事务影响, 所以慎用!!!)final SQLbuildSelectSQL(Query query, ColumnFilter selectFilter) 构建 (根据聚合查询条件Query获取数据列表) 的SQL
可用于另一条查询语句的 where 条件 用法final SQLbuildSelectSQLWithAlias(Query query, ColumnFilter selectFilter) 在 mysql 中 不支持 in 子句中包含 limit 但是我们可以使用 一个嵌套的别名表来跳过检查 此方法便是用于生成嵌套的 sql 的final long获取条数final long删除数据final Longinsert(Entity entity, ColumnFilter updateFilter) 保存单条数据insertBatch(Collection<Entity> entityList, ColumnFilter updateFilter) 保存多条数据select(Query query, ColumnFilter selectFilter) 获取列表final longupdate(Entity entity, Query query, ColumnFilter updateFilter) 更新数据
-
字段详细资料
-
tableInfo
实体类对应的 table 结构 -
entityClass
实体类 class 用于泛型转换 -
sqlRunner
SQLRunner -
entityBeanListHandler
实体类对应的 BeanListHandler -
countResultHandler
查询 count 所用的 handler -
dialect
方言 -
whereParser
where 解析器 -
groupByParser
-
orderByParser
-
-
构造器详细资料
-
JDBCDao
a- 参数:
entityClass- adataSource- a
-
-
方法详细资料
-
insert
保存单条数据 -
insertBatch
保存多条数据- 指定者:
insertBatch在接口中BaseDao<Entity,Long> - 参数:
entityList- 待保存的列表updateFilter- a- 返回:
- 保存成功的主键 (ID) 列表
-
select
获取列表 -
buildSelectSQL
构建 (根据聚合查询条件Query获取数据列表) 的SQL
可用于另一条查询语句的 where 条件 用法// 假设有以下结构的两个实体类 public class Person { // ID public Long id; // 关联的 汽车 ID public Long carID; // 年龄 public Integer age; } public class Car { // ID public Long id; // 汽车 名称 public String name; } // 现在想做如下查询 根据所有 person 表中年龄小于 100 的 carID 查询 car 表中的数据 // 可以按照如下写法 var cars = carService._select(new Query().in("id", personService._buildSelectSQL(new Query().lessThan("age", 100), ColumnFilter.ofIncluded("carID")), ColumnFilter.ofExcluded() )); // 同时也支持 whereSQL 方法 // 这个写法和上方完全相同 var cars1 = carService._select(new Query().whereSQL("id IN ", personService._buildSelectSQL(new Query().lessThan("age", 100), ColumnFilter.ofIncluded("carID")), ColumnFilter.ofExcluded() ));
注意 !!! 若同时使用 limit 和 in/not in 请使用buildSelectSQLWithAlias(Query, ColumnFilter)- 参数:
query- 聚合查询参数对象selectFilter- 查询字段过滤器- 返回:
- selectSQL
-
buildSelectSQLWithAlias
在 mysql 中 不支持 in 子句中包含 limit 但是我们可以使用 一个嵌套的别名表来跳过检查 此方法便是用于生成嵌套的 sql 的- 参数:
query- qselectFilter- s- 返回:
- a
-
count
获取条数 -
update
更新数据 -
delete
删除数据 -
_truncate
public final void _truncate()清空表中所有数据 (注意此操作不受事务影响, 所以慎用!!!) -
_tableInfo
-
_entityClass
从接口复制的说明:BaseDao获取 类- 指定者:
_entityClass在接口中BaseDao<Entity,Long> - 返回:
- a
-
_sqlRunner
-