亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

OpenJWeb快速開發(fā)平臺自動創(chuàng)建基于事務(wù)的業(yè)務(wù)邏

系統(tǒng) 1953 0

OpenJweb快速開發(fā)平臺在定義表的頁面中增加了"是否創(chuàng)建業(yè)務(wù)邏輯類"的選項,當勾選這個選項后,平臺自動生成針對此

表的業(yè)務(wù)邏輯接口和實現(xiàn)類,一般主明細表的主表應(yīng)該勾選此選項,當然也可以所有表都生成對應(yīng)的業(yè)務(wù)邏輯類.平臺除了生成

java代碼,還自動配置Spring的配置文件,并為新生成的類配置事務(wù)代理,下面是由平臺生成的業(yè)務(wù)邏輯接口的源代碼(接口默認提供一個刪除多行的方法,如果需要別的接口,可在生成后的接口和實現(xiàn)類源文件中自己添加):

?

package org.openjweb.core.service;

import javax.servlet.http.HttpServletRequest;

public interface ICrmDistributionService
{
??? public String deleteByIds(String entityClass, String fieldName, String rowIds[], HttpServletRequest request) throws Exception;
??? public void setDbService(String serviceName);
??? public String getDbService();
}

?

下面是生成的業(yè)務(wù)邏輯實現(xiàn)類代碼(渠道客戶表的業(yè)務(wù)邏輯):

package org.openjweb.core.service.impl;

import org.apache.log4j.Logger;
import org.openjweb.core.service.BaseMasterDetailService;
import org.openjweb.core.service.ICrmDistributionService;

public class CrmDistributionServiceImpl extends BaseMasterDetailService implements ICrmDistributionService
{
??? private static final Logger logger = Logger.getLogger(CrmDistributionServiceImpl.class);
}

這個實現(xiàn)類很簡單,deleteByIds方法的實現(xiàn)是寫在抽象類BaseMasterDetailService里了,下面是抽象類的代碼:

?

package org.openjweb.core.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.openjweb.core.entity.CommMasterDetailRel;
?

public abstract class BaseMasterDetailService
{
?private static final Logger logger = Logger.getLogger( BaseMasterDetailService.class);
?protected String dbService ="";

?public String getDbService()
?{
??return this.dbService;
?}

?public void setDbService(String serviceName)
?{
??this.dbService = serviceName;
?}

?public String deleteByIds(String entityClass, String fieldName, String[] rowIds, HttpServletRequest request) throws Exception
?{
??String sMessage="";
??//如果沒有設(shè)置主外鍵,要分別刪除主明細表
??//如果設(shè)置了主外鍵,則只刪除主表,如果數(shù)據(jù)庫沒設(shè)置級聯(lián),則需要開發(fā)者決定是否同時刪除主明細表還是提示錯誤信息。
??if(rowIds==null||rowIds.length==0)return "";
??IDBSupportService service = (IDBSupportService)ServiceLocator.getBean(this.dbService);
??String masterTableName="";//主表表名
??String masterColName="";//主表字段名
??Object obj = service.getJdbcTemplate().queryForObject("select table_name from comm_table_def where cls_name='"+entityClass+"'", String.class);
??????? if(obj!=null)masterTableName=obj.toString();
??
??????? for(int i=0;i<rowIds.length;i++)//頁面上選中多行,逐行刪除
??????? {
??? ??//刪除明細,這里混合使用hibernate和jdbctemplate有問題,所以全部使用jdbcTemplate
??????????? //從主明細關(guān)系表中檢索主表對應(yīng)哪些明細表,遍歷明細表進行刪除
??????????? List list = service.findListByFieldValue("org.openjweb.core.entity.CommMasterDetailRel", "masterCol", fieldName, true, "masterCol");
??????????? CommMasterDetailRel relEnt = null;
??????????? if(list!=null&&list.size()>0)
??????????? {
??????????? ?for(int j=0;j<list.size();j++)
??????????? ?{
??????????? ??
??????????? ??relEnt = (CommMasterDetailRel)list.get(j);
??????????????? ?String detailTableName="";//子表表名
??????????????? ?String detailColName="";//子表字段名
??????????????? ?detailTableName = relEnt.getDetailTable();
??????????????? ?detailColName = relEnt.getDetailCol();
??????????????? ?service.getJdbcTemplate().execute("delete from "+detailTableName+" where "+detailColName+"='"+rowIds[i]+"'");
??????????? ?}
??????????? }
??????? ?
??? ??//if(true) throw new Exception("test trans");? //這里拋出異常,則整個事務(wù)回滾
??????? ?//刪除主表
??????? ?//service.getJdbcTemplate().execute("delete from hr_resume where row_id='"+rowIds[i]+"'");
??????? ?service.getJdbcTemplate().execute("delete from "+masterTableName+" where row_id='"+rowIds[i]+"'");
??? ??
??????? ?//測試事務(wù),如果有異常,事務(wù)失敗!
??????? ?//if(true) throw new Exception("刪除失敗!");
??????? }
??return sMessage;
?}

}

在上面的抽象類里,從主明細表關(guān)系表中獲取此表是否有子表,如果有子表,則刪除子表記錄,刪除后再刪除主表記錄,當然在實際應(yīng)用中主子表有可能建立了主外鍵級聯(lián)刪除,如果沒有建主外鍵,則上面的操作先刪除子表,后刪除主表,如果中間有異常,則整個事務(wù)回滾.在上面的代碼中沒有事務(wù)處理的代碼,這是因為事務(wù)管理是由Spring容器控制的,下面是平臺生成的spring配置文件:

??? <!-- OpenJWeb create Service,don't delete this row -->
??? <bean id="ICrmDistributionService" parent="txProxyTemplate1">
??????? <property name="target">
??????????? <bean class="org.openjweb.core.service.impl.CrmDistributionServiceImpl">
??????????????? <property name="dbService" value="IDBSupportService3"/>
??????????? </bean>
??????? </property>
??? </bean>

其中 parent="txProxyTemplate1">指明了一個事務(wù)代理:

?

<bean id="txProxyTemplate1" abstract="true"
??class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
??<property name="transactionManager">
???<ref bean="demoTxManager" />
??</property>
??<property name="transactionAttributes">
??<props>
??<!-- 如果下面的被注釋掉,則方法內(nèi)部第一次寫數(shù)據(jù)庫成功后下一步拋異常,數(shù)據(jù)庫數(shù)據(jù)回提交 -->
?? ?<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
???<prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
???<prop key="*">PROPAGATION_REQUIRED,readOnly,-Exception</prop>
?
???</props>
??</property>
?</bean>

此事務(wù)代理指定update,insert,*等方法當出現(xiàn)Exception異常時回滾,*表示所有方法出現(xiàn)異常都回滾.

?

由于OpenJWeb實現(xiàn)了由平臺生成業(yè)務(wù)邏輯類并自動配置 Spring配置文件,所以對于不是很熟悉Spring的朋友提供了很大的方便.在實際開發(fā)中如果需要實現(xiàn)更多的業(yè)務(wù)邏輯,可在生成的源文件中添加新的方法.

?

作者聯(lián)系方式:

QQ:29803446

msn:baozhengw999@hotmail.com

?

?

?

?

OpenJWeb快速開發(fā)平臺自動創(chuàng)建基于事務(wù)的業(yè)務(wù)邏輯接口和實現(xiàn)類


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 高清不卡| 精品国产免费福利片 | 国产伦精品一区二区三区网站 | 久久久91| 一区二区福利视频 | 国产美女a做受大片在线观看 | 国产69精品久久久久999小说 | 国产精品午夜激爽毛片 | 六月婷婷久香在线视频 | 看一级毛片 | 欧美中文字幕在线看 | 亚洲欧美一区在线 | 久久久久久网站 | 四虎永久免费网站 | 岛国一级毛片 | 色偷偷亚洲女性天堂 | 我想看一级播放片一级的 | 亚洲欧美视频二区 | 国产成人综合亚洲一区 | 一级特级片 | 日韩不卡毛片 | 精品久久中文字幕有码 | 香蕉大黄香蕉在线观看 | 成人不卡视频 | 久久国产亚洲 | 日韩欧美国产高清 | 久久日本精品国产精品白 | 国产亚洲欧美日韩在线看片 | 中文字幕在线不卡视频 | 一区二区国产在线播放 | 中文字幕人成不卡一区 | 日韩欧美在线视频 | 国产高清天干天天视频 | 国模和精品嫩模私拍视频 | 在线看日本吃奶孕交 | 日韩久久一级毛片 | 亚洲艹逼 | 大学生一级毛片高清版 | 日韩免费黄色片 | 麻豆日韩 | 国产精品免费久久 |