类 OldBaseDao<Entity>
java.lang.Object
cool.scx.dao._old.OldBaseDao<Entity>
最基本的 可以实现 实体类 CRUD 的 DAO
- 版本:
- 0.1.3
- 作者:
- scx567888
-
字段概要
字段修饰符和类型字段说明protected final ResultHandler<Long>查询 count 所用的 handlerprotected final ResultHandler<List<Entity>>实体类对应的 BeanListHandler实体类 class 用于泛型转换protected final SQLRunnerSQLRunnerprotected final TableInfo<? extends OldBaseDaoColumnInfo>实体类对应的 table 结构 -
构造器概要
构造器构造器说明OldBaseDao(TableInfo<? extends OldBaseDaoColumnInfo> tableInfo, Class<Entity> entityClass, SQLRunner sqlRunner) a -
方法概要
修饰符和类型方法说明final SQLRunnerfinal TableInfo<? extends OldBaseDaoColumnInfo>final void清空表中所有数据 (注意此操作不受事务影响, 所以慎用!!!)final SQLbuildSelectSQL(Query query, SelectFilter selectFilter) 构建 (根据聚合查询条件Query获取数据列表) 的SQL
可用于另一条查询语句的 where 条件 用法final SQLbuildSelectSQLWithAlias(Query query, SelectFilter selectFilter) 在 mysql 中 不支持 in 子句中包含 limit 但是我们可以使用 一个嵌套的别名表来跳过检查 此方法便是用于生成嵌套的 sql 的final long获取条数final long删除数据final Longinsert(Entity entity, UpdateFilter updateFilter) 保存单条数据insertBatch(Collection<Entity> entityList, UpdateFilter updateFilter) 保存多条数据select(Query query, SelectFilter selectFilter) 获取列表final longupdate(Entity entity, Query query, UpdateFilter updateFilter) 更新数据
-
字段详细资料
-
tableInfo
实体类对应的 table 结构 -
entityClass
实体类 class 用于泛型转换 -
sqlRunner
SQLRunner -
entityBeanListHandler
实体类对应的 BeanListHandler -
countResultHandler
查询 count 所用的 handler
-
-
构造器详细资料
-
OldBaseDao
public OldBaseDao(TableInfo<? extends OldBaseDaoColumnInfo> tableInfo, Class<Entity> entityClass, SQLRunner sqlRunner) a- 参数:
tableInfo- 因为其使用 SQL.ofPlaceholder 的方式进行参数填充 所以必须是 BaseColumnInfo 才可以entityClass- asqlRunner- a
-
-
方法详细资料
-
insert
保存单条数据- 参数:
entity- 待插入的数据updateFilter- a- 返回:
- 插入成功的主键 ID 如果插入失败或数据没有主键则返回 null
-
insertBatch
保存多条数据- 参数:
entityList- 待保存的列表updateFilter- a- 返回:
- 保存成功的主键 (ID) 列表
-
select
获取列表- 参数:
query- 查询过滤条件.selectFilter- a- 返回:
- a
Listobject.
-
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), SelectFilter.ofIncluded("carID")), SelectFilter.ofExcluded() )); // 同时也支持 whereSQL 方法 // 这个写法和上方完全相同 var cars1 = carService._select(new Query().whereSQL("id IN ", personService._buildSelectSQL(new Query().lessThan("age", 100), SelectFilter.ofIncluded("carID")), SelectFilter.ofExcluded() ));
注意 !!! 若同时使用 limit 和 in/not in 请使用buildSelectSQLWithAlias(Query, SelectFilter)- 参数:
query- 聚合查询参数对象selectFilter- 查询字段过滤器- 返回:
- selectSQL
-
buildSelectSQLWithAlias
在 mysql 中 不支持 in 子句中包含 limit 但是我们可以使用 一个嵌套的别名表来跳过检查 此方法便是用于生成嵌套的 sql 的- 参数:
query- qselectFilter- s- 返回:
- a
-
count
获取条数- 参数:
query- 查询条件- 返回:
- 条数
-
update
更新数据- 参数:
entity- 要更新的数据query- 更新的过滤条件updateFilter- a- 返回:
- 受影响的条数
-
delete
删除数据- 参数:
query- where 条件- 返回:
- 受影响的条数 (被成功删除的数据条数)
-
_truncate
public final void _truncate()清空表中所有数据 (注意此操作不受事务影响, 所以慎用!!!) -
_tableInfo
-
_entityClass
-
_sqlRunner
-