From 0967b177e44e01b8d8ee5e30914227ef7d95b424 Mon Sep 17 00:00:00 2001 From: Wizzer Date: Tue, 11 Jul 2017 00:19:43 +0800 Subject: [PATCH] =?UTF-8?q?add:=20BaseService=E5=A2=9E=E5=8A=A0=E6=9B=B4?= =?UTF-8?q?=E5=A4=9A=E7=9A=84=E5=85=AC=E5=85=B1=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/base/service/BaseService.java | 22 +++- .../base/service/BaseServiceImpl.java | 110 +++++++++++++++++- 2 files changed, 124 insertions(+), 8 deletions(-) diff --git a/wk-framework/src/main/java/cn/wizzer/framework/base/service/BaseService.java b/wk-framework/src/main/java/cn/wizzer/framework/base/service/BaseService.java index 4014cff1e..e4d0887b5 100644 --- a/wk-framework/src/main/java/cn/wizzer/framework/base/service/BaseService.java +++ b/wk-framework/src/main/java/cn/wizzer/framework/base/service/BaseService.java @@ -41,15 +41,23 @@ public interface BaseService { boolean exists(Object... pks); - T insert(T obj); + T insert(T obj); - T insertOrUpdate(T obj); + T insert(T obj, FieldFilter filter); - T insertOrUpdate(T obj, FieldFilter insertFieldFilter, FieldFilter updateFieldFilter); + T insertOrUpdate(T obj); + + T insertOrUpdate(T obj, FieldFilter insertFieldFilter, FieldFilter updateFieldFilter); void insert(String tableName, Chain chain); - T fastInsert(T obj); + T fastInsert(T obj); + + T insertWith(T obj, String regex); + + T insertLinks(T obj, String regex); + + T insertRelation(T obj, String regex); int update(Object obj); @@ -59,6 +67,12 @@ public interface BaseService { int update(String tableName, Chain chain, Condition cnd); + T updateWith(T obj, String regex); + + T updateLinks(T obj, String regex); + + int updateRelation(Class classOfT, String regex, Chain chain, Condition cnd); + int updateWithVersion(Object obj); int updateWithVersion(Object obj, FieldFilter filter); diff --git a/wk-framework/src/main/java/cn/wizzer/framework/base/service/BaseServiceImpl.java b/wk-framework/src/main/java/cn/wizzer/framework/base/service/BaseServiceImpl.java index 05392e029..bdb616a3c 100644 --- a/wk-framework/src/main/java/cn/wizzer/framework/base/service/BaseServiceImpl.java +++ b/wk-framework/src/main/java/cn/wizzer/framework/base/service/BaseServiceImpl.java @@ -158,10 +158,23 @@ public boolean exists(Object... pks) { * 注意:如果是集合,数组或者 Map,所有的对象必须类型相同,否则可能会出错 * @return 插入后的对象 */ - public T insert(T obj) { + public T insert(T obj) { return this.dao().insert(obj); } + /** + * 将一个对象按FieldFilter过滤后,插入到一个数据源。 + *

+ * dao.insert(pet, FieldFilter.create(Pet.class, FieldMatcher.create(false))); + * + * @param obj 要被插入的对象 + * @param filter 字段过滤器, 其中FieldMatcher.isIgnoreId生效 + * @return 插入后的对象 + * @see org.nutz.dao.Dao#insert(Object) + */ + public T insert(T obj, FieldFilter filter) { + return this.dao().insert(obj, filter); + } /** * 插入或修改对象 @@ -169,7 +182,7 @@ public T insert(T obj) { * @param obj * @return */ - public T insertOrUpdate(T obj) { + public T insertOrUpdate(T obj) { return this.dao().insertOrUpdate(obj); } @@ -181,7 +194,7 @@ public T insertOrUpdate(T obj) { * @param updateFieldFilter 更新时的字段过滤,可以是null * @return 原对象 */ - public T insertOrUpdate(T obj, FieldFilter insertFieldFilter, FieldFilter updateFieldFilter) { + public T insertOrUpdate(T obj, FieldFilter insertFieldFilter, FieldFilter updateFieldFilter) { return this.dao().insertOrUpdate(obj, insertFieldFilter, updateFieldFilter); } @@ -201,10 +214,52 @@ public void insert(String tableName, Chain chain) { * @param obj * @return */ - public T fastInsert(T obj) { + public T fastInsert(T obj) { return this.dao().fastInsert(obj); } + /** + * 将对象插入数据库同时,也将符合一个正则表达式的所有关联字段关联的对象统统插入相应的数据库 + *

+ * 关于关联字段更多信息,请参看 '@One' | '@Many' | '@ManyMany' 更多的描述 + * + * @param obj 数据对象 + * @param regex 正则表达式,描述了什么样的关联字段将被关注。如果为 null,则表示全部的关联字段都会被插入 + * @return 数据对象本身 + * @see org.nutz.dao.entity.annotation.One + * @see org.nutz.dao.entity.annotation.Many + * @see org.nutz.dao.entity.annotation.ManyMany + */ + public T insertWith(T obj, String regex) { + return this.dao().insertWith(obj, regex); + } + + /** + * 根据一个正则表达式,仅将对象所有的关联字段插入到数据库中,并不包括对象本身 + * + * @param obj 数据对象 + * @param regex 正则表达式,描述了什么样的关联字段将被关注。如果为 null,则表示全部的关联字段都会被插入 + * @return 数据对象本身 + * @see org.nutz.dao.entity.annotation.One + * @see org.nutz.dao.entity.annotation.Many + * @see org.nutz.dao.entity.annotation.ManyMany + */ + public T insertLinks(T obj, String regex) { + return this.dao().insertLinks(obj, regex); + } + + /** + * 将对象的一个或者多个,多对多的关联信息,插入数据表 + * + * @param obj 对象 + * @param regex 正则表达式,描述了那种多对多关联字段将被执行该操作 + * @return 对象自身 + * @see org.nutz.dao.entity.annotation.ManyMany + */ + public T insertRelation(T obj, String regex) { + return this.dao().insertRelation(obj, regex); + } + /** * 更新数据 * @@ -248,6 +303,53 @@ public int update(String tableName, Chain chain, Condition cnd) { return this.dao().update(tableName, chain, cnd); } + /** + * 将对象更新的同时,也将符合一个正则表达式的所有关联字段关联的对象统统更新 + *

+ * 关于关联字段更多信息,请参看 '@One' | '@Many' | '@ManyMany' 更多的描述 + * + * @param obj 数据对象 + * @param regex 正则表达式,描述了什么样的关联字段将被关注。如果为 null,则表示全部的关联字段都会被更新 + * @return 数据对象本身 + * @see org.nutz.dao.entity.annotation.One + * @see org.nutz.dao.entity.annotation.Many + * @see org.nutz.dao.entity.annotation.ManyMany + */ + public T updateWith(T obj, String regex) { + return this.dao().updateWith(obj, regex); + } + + /** + * 根据一个正则表达式,仅更新对象所有的关联字段,并不包括对象本身 + * + * @param obj 数据对象 + * @param regex 正则表达式,描述了什么样的关联字段将被关注。如果为 null,则表示全部的关联字段都会被更新 + * @return 数据对象本身 + * @see org.nutz.dao.entity.annotation.One + * @see org.nutz.dao.entity.annotation.Many + * @see org.nutz.dao.entity.annotation.ManyMany + */ + public T updateLinks(T obj, String regex) { + return this.dao().updateLinks(obj, regex); + } + + /** + * 多对多关联是通过一个中间表将两条数据表记录关联起来。 + *

+ * 而这个中间表可能还有其他的字段,比如描述关联的权重等 + *

+ * 这个操作可以让你一次更新某一个对象中多个多对多关联的数据 + * + * @param classOfT 对象类型 + * @param regex 正则表达式,描述了那种多对多关联字段将被执行该操作 + * @param chain 针对中间关联表的名值链。 + * @param cnd 针对中间关联表的 WHERE 条件 + * @return 共有多少条数据被更新 + * @see org.nutz.dao.entity.annotation.ManyMany + */ + public int updateRelation(Class classOfT, String regex, Chain chain, Condition cnd) { + return this.dao().updateRelation(classOfT, regex, chain, cnd); + } /** * 基于版本的更新,版本不一样无法更新到数据