許哲瑋 智慧法师
我很含蓄, 什么也没有留下!

DAP后端应用写法-使用DWDataSet进行数据库的新增/修改

DAP技术平台2025-11-20 14:05 阅读 43 评论 0

场景
使用高代码后端要去数据库变更数据, 除了直接下SQL的方式外, 更可用java物件的方式, 使用DWDataSet来进行

优点
以最常见的多租户场景, 使用DWDataSet, DAP会自动将租户讯息带入, 如果直接下SQL, 如果没有自行将租户讯息(tenantsid)组进SQL中, DAP会报错

前置准备
要使用DWDataSet, 必须要用您的table, 建立table的MataData, 这部分可以使用微服务测试工具来帮助您
工具来源 : 询问与您对接的平台人员/开发顾问 拿取
版本 : 现在最常用的版本为1.6.3及1.6.4, 建议使用1.6.4 , 如您使用MySQL8.0 , 1.6.3登入时会报错(password), 这是因为MySQL8.0针对密码登入有做变更所导致
基本操作 : 在为服务平台测试工具中, 参考文件[测试中心使用说明文件.pptx]


产生MataData
STEP1.进入MataData工具, 填写数据库连线资讯后, 按[连线], 当下方出现连线成功即表示已连线


STEP2.选择要产生MataData的table, 按[产生]


STEP3.在页面最下方, 按下[产生SQL], 则可在下框看到产生的SQL, 将之复制到您的SQL Client执行即可


后端的撰写范例
private static final Logger LOGGER = LoggerFactory.getLogger(ProjectCenterTaskDao.class);
private final static String TABLE_NAME = "project_center_task";

@Autowired
@Qualifier("dw-dao")
private DWDao dao;

public void create(String serialNumber, String taskUid, String taskCode, String taskName){
DWDataSet dataSet = new DWDataSet();
DWDataTable mainTable = dataSet.newTable(TABLE_NAME);
DWDataRow dwDataRow = mainTable.newRow();
dwDataRow.set("serialNumber", serialNumber);
dwDataRow.set("taskUid", taskUid);
dwDataRow.set("taskCode", taskCode);
dwDataRow.set("taskName", taskName);
dwDataRow.set("firstOpeningTime", new Date());
dwDataRow.set("$state", "C");

dao.execute(dataSet,new DWDataSetOperationOption());
}

public void updateTime(String serialNumber, String taskUid, String column, String value){
DWDataSet dataSet = new DWDataSet();
DWDataTable mainTable = dataSet.newTable(TABLE_NAME);
DWDataRow dwDataRow = mainTable.newRow();
dwDataRow.set("serialNumber", serialNumber);
dwDataRow.set("taskUid", taskUid);
dwDataRow.set(column, value);
dwDataRow.set("$state", "U");


DWDataSetOperationOption option = new DWDataSetOperationOption();
DWSqlInfo parse = ((DWDaoImpl) this.dao).getDialect().parse(dwDataRow, option);
LOGGER.info("Update pcc_project_center_task SQL = " + parse.getSql() + ", Parameters:" + com.alibaba.fastjson.JSONObject.toJSONString(parse.getParametersAsList()));

dao.execute(dataSet, option);
}

额外说明
变动资料库资料, 重点在需要多只定$state , 新增是C, 更新是U


路过

雷人

握手

鲜花

评论

您需要登录后才可以发表言论 登录立即注册
facelist
  • 178帖子
  • 0关注
  • 0粉丝
  • 关注公众号
Copyright © 2025 鼎捷数智股份有限公司 版权所有 All Rights Reserved. Powered by Discuz! X5.0
关灯
即将开放
返回顶部
返回顶部