public class BaseDao<T> extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
protected org.nutz.dao.Dao |
dao |
| 构造器和说明 |
|---|
BaseDao() |
| 限定符和类型 | 方法和说明 |
|---|---|
int |
clear(org.nutz.dao.Condition cnd)
清晰的
根据一个 WHERE 条件,清除一组对象。
|
int |
count()
计算某个对象在数据库中有多少条记录
|
int |
count(org.nutz.dao.Condition cnd)
数
根据条件,计算某个对象在数据库中有多少条记录
|
org.nutz.dao.pager.Pager |
createPager(int pageNumber,
int pageSize)
创建寻呼机
根据数据源的类型,创建一个翻页对象
|
int |
delete(long id)
删除
根据对象 ID 删除一个对象。
|
int |
delete(String name)
删除
根据对象 Name 删除一个对象。
|
int |
deletex(Object... pks)
deletex
根据复合主键,删除一个对象。
|
int |
each(org.nutz.dao.Condition cnd,
org.nutz.lang.Each<T> callback)
每一个
对一组对象进行迭代,这个接口函数非常适用于很大的数据量的集合,因为你不可能把他们都读到内存里
|
int |
each(org.nutz.dao.Condition cnd,
org.nutz.dao.pager.Pager pager,
org.nutz.lang.Each<T> callback)
每一个
对一组对象进行迭代,这个接口函数非常适用于很大的数据量的集合,因为你不可能把他们都读到内存里
|
void |
execute(org.nutz.dao.sql.Sql... sqls)
执行
执行一组 Sql,这些 Sql 将会一起被提交
|
org.nutz.dao.sql.Sql |
execute(org.nutz.dao.sql.Sql sql)
执行
执行单条自定义SQL
|
T |
fastInsert(T obj)
快速插入
快速插入一个对象。
|
T |
fetch(org.nutz.dao.Condition cnd)
获取
根据 WHERE 条件获取一个对象。
|
T |
fetch(long id)
获取
根据对象 ID 获取一个对象。
|
T |
fetch(String name)
获取
根据对象 Name 获取一个对象。
|
T |
fetchx(Object... pks)
fetchx
根据复合主键,获取一个对象。
|
org.nutz.dao.Dao |
getDao()
把刀
|
org.nutz.dao.entity.Entity<T> |
getEntity()
得到实体
获取实体描述, 其中包含了Java Pojo数据库的全部映射信息
|
int |
getMaxId()
得到最大id
获取某个对象,最大的 ID 值。
|
T |
getObject(ResultSet rs,
org.nutz.dao.FieldMatcher fm)
得到对象
从一个 ResultSet 中获取一个对象。
|
T |
getObject(ResultSet rs,
org.nutz.dao.FieldMatcher fm,
String prefix)
得到对象
|
void |
insert(org.nutz.dao.Chain chain)
插入
与 insert(String tableName, Chain chain) 一样,不过,数据表名,将取自 POJO 的数据表声明,请参看
'@Table' 注解的详细说明
|
void |
insert(String tableName,
org.nutz.dao.Chain chain)
插入
自由的向一个数据表插入一条数据。
|
T |
insert(T obj)
插入
将一个对象插入到一个数据源。
|
T |
insert(T t,
boolean ignoreNull,
boolean ignoreZero,
boolean ignoreBlankStr)
插入
以特殊规则执行insert
|
T |
insert(T obj,
org.nutz.dao.FieldFilter filter)
插入
将一个对象按FieldFilter过滤后,插入到一个数据源。
|
T |
insert(T obj,
String actived)
插入
|
T |
insertLinks(T obj,
String regex)
插入链接
根据一个正则表达式,仅将对象所有的关联字段插入到数据库中,并不包括对象本身
|
T |
insertOrUpdate(T t)
插入或更新
根据对象的主键(@Id/@Name/@Pk)先查询, 如果存在就更新, 不存在就插入
|
T |
insertOrUpdate(T t,
org.nutz.dao.FieldFilter insertFieldFilter,
org.nutz.dao.FieldFilter updateFieldFilter)
插入或更新
根据对象的主键(@Id/@Name/@Pk)先查询, 如果存在就更新, 不存在就插入
|
T |
insertRelation(T obj,
String regex)
插入的关系
将对象的一个或者多个,多对多的关联信息,插入数据表
|
T |
insertWith(T obj,
String regex)
插入与
将对象插入数据库同时,也将符合一个正则表达式的所有关联字段关联的对象统统插入相应的数据库
关于关联字段更多信息,请参看 '@One' | '@Many' | '@ManyMany' 更多的描述
|
org.nutz.dao.DatabaseMeta |
meta()
元
|
org.nutz.dao.sql.PojoMaker |
pojoMaker() |
List<T> |
query(org.nutz.dao.Condition cnd)
查询
查询一组对象。
|
List<T> |
query(org.nutz.dao.Condition cnd,
org.nutz.dao.pager.Pager pager)
查询
查询一组对象。
|
List<T> |
query(org.nutz.dao.Condition cnd,
org.nutz.dao.pager.Pager pager,
org.nutz.dao.FieldMatcher matcher)
查询
|
List<T> |
query(org.nutz.dao.Condition cnd,
org.nutz.dao.pager.Pager pager,
String regex)
查询
|
void |
run(org.nutz.dao.ConnCallback callback)
运行
这个方法试图给你最大的灵活性,因为你的 ConnCallback 实现类将得到一个 Connection 接口
的实例。
|
org.nutz.dao.SqlManager |
sqls()
中的
|
int |
update(org.nutz.dao.Chain chain,
org.nutz.dao.Condition cnd)
更新
与 update(String tableName, Chain chain, Condition cnd) 一样,不过,数据表名,将取自
POJO 的数据表声明,请参看 '@Table' 注解的详细说明
|
int |
update(T obj)
更新
更新一个对象。
|
int |
update(T obj,
org.nutz.dao.Condition cnd)
更新
|
int |
update(T obj,
org.nutz.dao.FieldFilter fieldFilter)
更新
|
int |
update(T obj,
org.nutz.dao.FieldFilter fieldFilter,
org.nutz.dao.Condition cnd)
更新
|
int |
update(T obj,
String actived)
更新
更新对象一部分字段
|
int |
update(T obj,
String actived,
String locked,
boolean ignoreNull)
更新
更新对象一部分字段
|
int |
updateAndIncrIfMatch(T obj,
org.nutz.dao.FieldFilter fieldFilter,
String fieldName)
如果匹配更新和增加
乐观锁, 以特定字段的值作为限制条件,更新对象,并自增该字段.
|
int |
updateIgnoreNull(T obj)
更新忽略空
更新一个对象,并且忽略所有 null 字段。
|
T |
updateLinks(T obj,
String regex)
更新的链接
根据一个正则表达式,仅更新对象所有的关联字段,并不包括对象本身
|
int |
updateRelation(String regex,
org.nutz.dao.Chain chain,
org.nutz.dao.Condition cnd)
更新关系
多对多关联是通过一个中间表将两条数据表记录关联起来。
|
T |
updateWith(T obj,
String regex)
更新与
将对象更新的同时,也将符合一个正则表达式的所有关联字段关联的对象统统更新
关于关联字段更多信息,请参看 '@One' | '@Many' | '@ManyMany' 更多的描述
|
public org.nutz.dao.Dao getDao()
Daopublic org.nutz.dao.DatabaseMeta meta()
public org.nutz.dao.SqlManager sqls()
SqlManagerpublic org.nutz.dao.sql.PojoMaker pojoMaker()
public void execute(org.nutz.dao.sql.Sql... sqls)
sqls - 要被执行的 Sql 数组public void run(org.nutz.dao.ConnCallback callback)
如果你从当前连接对象中创建了ResultSet对象或者 Statement对象,请自行关闭。Nutz.Dao 的原则是:
callback - 回调public T getObject(ResultSet rs, org.nutz.dao.FieldMatcher fm)
因为 Dao 接口可以知道一个 POJO 的映射细节,这个函数可以帮你节省一点体力。
rs - 结果集fm - 字段过滤器public T getObject(ResultSet rs, org.nutz.dao.FieldMatcher fm, String prefix)
rs - rsfm - 调频prefix - 前缀Tpublic T insert(T obj)
声明了 '@Id'的字段会在插入数据库时被忽略,因为数据库会自动为其设值。如果想手动设置,请设置 '@Id(auto=false)'
插入之前,会检查声明了 '@Default(@SQL("SELECT ..."))' 的字段,预先执行 SQL 为字段设置。
插入之后,会检查声明了 '@Next(@SQL("SELECT ..."))' 的字段,通过执行 SQL 将值取回
如果你的字段仅仅声明了 '@Id(auto=true)',没有声明 '@Next',则认为你还是想取回插入后最新的 ID 值,因为 自动为你添加类似 @Next(@SQL("SELECT MAX(id) FROM tableName")) 的设置
obj - 要被插入的对象
它可以是:
Id,
Default,
Nextpublic T insert(T obj, org.nutz.dao.FieldFilter filter)
dao.insert(pet, FieldFilter.create(Pet.class, FieldMatcher.create(false)));obj - 要被插入的对象filter - 字段过滤器, 其中FieldMatcher.isIgnoreId生效Dao.insert(Object)public void insert(String tableName, org.nutz.dao.Chain chain)
tableName - 数据表名chain - 数据名值链public void insert(org.nutz.dao.Chain chain)
chain - 数据名值链Tablepublic T fastInsert(T obj)
即,你必须为其设置好值,它会统一采用 batch 的方法插入
obj - 要被插入的对象
它可以是:
Tpublic T insertWith(T obj, String regex)
关于关联字段更多信息,请参看 '@One' | '@Many' | '@ManyMany' 更多的描述
obj - 数据对象regex - 正则表达式,描述了什么样的关联字段将被关注。如果为 null,则表示全部的关联字段都会被插入One,
Many,
ManyManypublic T insertLinks(T obj, String regex)
obj - 数据对象regex - 正则表达式,描述了什么样的关联字段将被关注。如果为 null,则表示全部的关联字段都会被插入One,
Many,
ManyManypublic T insertRelation(T obj, String regex)
obj - 对象regex - 正则表达式,描述了那种多对多关联字段将被执行该操作ManyManypublic int update(T obj)
并且调用这个函数前, 主键的值必须保证是有效,否则会更新失败
这个对象所有的字段都会被更新,即,所有的没有被设值的字段,都会被置成 NULL,如果遇到 NOT NULL 约束,则会引发异常。 如果想有选择的更新个别字段,请使用 org.nutz.dao.FieldFilter
如果仅仅想忽略所有的 null 字段,请使用 updateIgnoreNull 方法更新对象
obj - 要被更新的对象
它可以是:
FieldFilterpublic int update(T obj, String actived)
obj - 对象actived - 正则表达式描述要被更新的字段public int update(T obj, String actived, String locked, boolean ignoreNull)
obj - 对象actived - 正则表达式描述要被更新的字段locked - 锁着的ignoreNull - 忽略空public int update(T obj, org.nutz.dao.FieldFilter fieldFilter)
obj - objfieldFilter - 字段过滤public int update(T obj, org.nutz.dao.FieldFilter fieldFilter, org.nutz.dao.Condition cnd)
obj - objfieldFilter - 字段过滤cnd - cndpublic int update(T obj, org.nutz.dao.Condition cnd)
obj - objcnd - cndpublic int updateIgnoreNull(T obj)
注意: 基本数据类型都是不可能为null的,这些字段肯定会更新
obj - 要被更新的对象
它可以是:
public int update(org.nutz.dao.Chain chain,
org.nutz.dao.Condition cnd)
chain - 数据名值链cnd - WHERE 条件Tablepublic T updateWith(T obj, String regex)
关于关联字段更多信息,请参看 '@One' | '@Many' | '@ManyMany' 更多的描述
obj - 数据对象regex - 正则表达式,描述了什么样的关联字段将被关注。如果为 null,则表示全部的关联字段都会被更新One,
Many,
ManyManypublic T updateLinks(T obj, String regex)
obj - 数据对象regex - 正则表达式,描述了什么样的关联字段将被关注。如果为 null,则表示全部的关联字段都会被更新One,
Many,
ManyManypublic int updateRelation(String regex, org.nutz.dao.Chain chain, org.nutz.dao.Condition cnd)
而这个中间表可能还有其他的字段,比如描述关联的权重等
这个操作可以让你一次更新某一个对象中多个多对多关联的数据
regex - 正则表达式,描述了那种多对多关联字段将被执行该操作chain - 针对中间关联表的名值链。cnd - 针对中间关联表的 WHERE 条件ManyManypublic List<T> query(org.nutz.dao.Condition cnd, org.nutz.dao.pager.Pager pager, org.nutz.dao.FieldMatcher matcher)
cnd - cndpager - 寻呼机matcher - 匹配器Listpublic List<T> query(org.nutz.dao.Condition cnd, org.nutz.dao.pager.Pager pager, String regex)
cnd - cndpager - 寻呼机regex - 正则表达式Listpublic List<T> query(org.nutz.dao.Condition cnd, org.nutz.dao.pager.Pager pager)
cnd - WHERE 条件。如果为 null,将获取全部数据,顺序为数据库原生顺序pager - 翻页信息。如果为 null,则一次全部返回. 不会使用cnd中的pager!!!public List<T> query(org.nutz.dao.Condition cnd)
cnd - WHERE 条件。如果为 null,将获取全部数据,顺序为数据库原生顺序public int each(org.nutz.dao.Condition cnd,
org.nutz.dao.pager.Pager pager,
org.nutz.lang.Each<T> callback)
cnd - WHERE 条件。如果为 null,将获取全部数据,顺序为数据库原生顺序pager - 翻页信息。如果为 null,则一次全部返回callback - 处理回调public int each(org.nutz.dao.Condition cnd,
org.nutz.lang.Each<T> callback)
cnd - WHERE 条件。如果为 null,将获取全部数据,顺序为数据库原生顺序callback - 处理回调public int delete(long id)
你的对象必须在某个字段声明了注解 '@Id',否则本操作会抛出一个运行时异常
如果你设定了外键约束,没有正确的清除关联对象会导致这个操作失败
id - 对象 IDIdpublic int delete(String name)
你的对象必须在某个字段声明了注解 '@Name',否则本操作会抛出一个运行时异常
如果你设定了外键约束,没有正确的清除关联对象会导致这个操作失败
name - 对象 NameNamepublic int deletex(Object... pks)
pks - 复合主键需要的参数,必须同 '@PK'中声明的顺序一致public T fetch(long id)
你的对象必须在某个字段声明了注解 '@Id',否则本操作会抛出一个运行时异常
id - 对象 IDTIdpublic T fetch(String name)
你的对象必须在某个字段声明了注解 '@Name',否则本操作会抛出一个运行时异常
name - 对象 NameNamepublic T fetchx(Object... pks)
pks - 复合主键需要的参数,必须同 '@PK'中声明的顺序一致Tpublic T fetch(org.nutz.dao.Condition cnd)
cnd - WHERE 条件Condition,
Namepublic int clear(org.nutz.dao.Condition cnd)
cnd - 查询条件,如果为 null,则全部清除public org.nutz.dao.entity.Entity<T> getEntity()
public int count(org.nutz.dao.Condition cnd)
cnd - WHERE 条件public int count()
public int getMaxId()
public org.nutz.dao.pager.Pager createPager(int pageNumber,
int pageSize)
pageNumber - 第几页 ,从 1 开始。pageSize - 每页可以有多少条记录public org.nutz.dao.sql.Sql execute(org.nutz.dao.sql.Sql sql)
sql - 自定义SQL对象public T insert(T t, boolean ignoreNull, boolean ignoreZero, boolean ignoreBlankStr)
t - 实例对象ignoreNull - 忽略空值ignoreZero - 忽略0值ignoreBlankStr - 忽略空白字符串public T insertOrUpdate(T t)
t - 对象public T insertOrUpdate(T t, org.nutz.dao.FieldFilter insertFieldFilter, org.nutz.dao.FieldFilter updateFieldFilter)
t - 对象insertFieldFilter - 插入时的字段过滤, 可以是nullupdateFieldFilter - 更新时的字段过滤,可以是nullpublic int updateAndIncrIfMatch(T obj, org.nutz.dao.FieldFilter fieldFilter, String fieldName)
update t_user set age=30, city="广州", version=version+1 where name="wendal" and version=124;obj - 需要更新的对象, 必须带@Id/@Name/@Pk中的其中一种.fieldFilter - 需要过滤的属性. 若设置了哪些字段不更新,那务必确保过滤掉fieldName的字段fieldName - 参考字段的Java属性名.默认是"version",可以是任意数值字段Copyright © 2021. All rights reserved.