Class JDBCDao<Entity>
java.lang.Object
cool.scx.data.jdbc.JDBCDao<Entity>
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final BeanBuilder<Entity> protected final ResultHandler<Long> 查询 count 所用的 handlerprotected final ResultHandler<Entity> 实体类对应的 BeanListHandlerprotected final ResultHandler<List<Entity>> 实体类对应的 BeanListHandler实体类 class 用于泛型转换protected final JDBCDaoGroupByParserprotected final JDBCContextprotected final JDBCDaoOrderByParserprotected final SQLRunnerSQLRunnerprotected final AnnotationConfigTable实体类对应的 table 结构protected final JDBCDaoWhereParserwhere 解析器 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal Longadd(Entity entity, FieldFilter updateFilter) add(Collection<Entity> entityList, FieldFilter updateFilter) final SQLbuildGetSQL(Query query, FieldFilter selectFilter) final SQLbuildGetSQLWithAlias(Query query, FieldFilter selectFilter) 在 mysql 中 不支持 in 子句中包含 limit 但是我们可以使用 一个嵌套的别名表来跳过检查 此方法便是用于生成嵌套的 sql 的final SQLbuildSelectSQL(Query query, FieldFilter selectFilter) 构建 (根据聚合查询条件Query获取数据列表) 的SQL
可用于另一条查询语句的 where 条件 用法final SQLbuildSelectSQLWithAlias(Query query, FieldFilter selectFilter) 在 mysql 中 不支持 in 子句中包含 limit 但是我们可以使用 一个嵌套的别名表来跳过检查 此方法便是用于生成嵌套的 sql 的final voidclear()final longfinal longfind(Query query, FieldFilter selectFilter) voidfind(Query query, FieldFilter fieldFilter, Consumer<Entity> consumer) get(Query query, FieldFilter columnFilter) final SQLRunnerfinal AnnotationConfigTablefinal longupdate(Entity entity, Query query, FieldFilter updateFilter)
-
Field Details
-
tableInfo
实体类对应的 table 结构 -
entityClass
-
sqlRunner
SQLRunner -
entityBeanListHandler
实体类对应的 BeanListHandler -
entityBeanHandler
实体类对应的 BeanListHandler -
countResultHandler
查询 count 所用的 handler -
whereParser
where 解析器 -
groupByParser
-
orderByParser
-
jdbcContext
-
columnNameMapping
-
beanBuilder
-
-
Constructor Details
-
JDBCDao
-
-
Method Details
-
add
-
add
-
find
-
find
-
get
-
update
-
delete
-
count
-
clear
-
entityClass
-
tableInfo
-
sqlRunner
-
beanBuilder
-
entityBeanListHandler
-
entityBeanHandler
-
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, FieldFilter)- Parameters:
query- 聚合查询参数对象selectFilter- 查询字段过滤器- Returns:
- selectSQL
-
buildSelectSQLWithAlias
在 mysql 中 不支持 in 子句中包含 limit 但是我们可以使用 一个嵌套的别名表来跳过检查 此方法便是用于生成嵌套的 sql 的- Parameters:
query- qselectFilter- s- Returns:
- a
-
buildGetSQL
-
buildGetSQLWithAlias
在 mysql 中 不支持 in 子句中包含 limit 但是我们可以使用 一个嵌套的别名表来跳过检查 此方法便是用于生成嵌套的 sql 的- Parameters:
query- qselectFilter- s- Returns:
- a
-