1.数据库表中通过某字段1查询某字段2:可以先在实现中先通过某字段1查询一个对象,再从对象中获取某字段:如以下:
@Override public String approvalId(String name) { LambdaQueryWrapper<ActRuTask> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(ActRuTask::getAssignee, name); ActRuTask actRuTask = baseMapper.selectOne(lambdaQueryWrapper); return actRuTask.getId(); }
2.当查询baseMapper不存在的字段时,可以在对应的mapper中自己写出对应的mapper上面加上对应的数据库查询语句如:
@Select("SELECT ID_ FROM `act_re_procdef`") List<String> findAllId(); 或者换一种思路
@Override public List<String> findAllId() { List<ActReProcdef> actReProcdefs = baseMapper.selectList(null); List<String> collect = actReProcdefs.stream().map(actReProcdef -> actReProcdef.getId()).collect(Collectors.toList()); List<String> allId = baseMapper.findAllId(); return allId;
3.涉及微服务时,前端注意vite.config.ts配置文件,需要加上
proxy: {
"/api": {
// 这里填写后端地址
target: "http://localhost:9000",
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, "")
}
},
当然前端要调用对应的接口时,也要加上api/
4.在前端得到相应的返回值时,如果返回的是数组,可以直接赋值到对应的列表中。如,tasks.value = res.data.data;其中res是返回值,但是如果你要对返回的数组进行筛选,之后赋值给列表tasks.value.push(y);其中y是对res筛选后的值。
5.在调用某方法是,其返回值的使用可以用.then。如:
const agree = task => {
findId(userId).then(res => {
console.log(res);
completeTask(res);
});
// Handle showing task details
};
6.在规定挂载onMounted时候
先导入
import
再写,其中onMounted方法前面不用加入let,const等
onMounted(() => { dialogVisible.value = false; });
7.<!-- 只有当 row.taskStatus 不等于 '任务状态:未审批' 时,内容才会显示 --> <div v-if="row.taskStatus !== '任务状态:未审批'"> <!-- 内容 --> </div>
<!-- 只有当 row.taskStatus 等于 '任务状态:未审批' 时,内容才会显示 --> <div v-if="row.taskStatus === '任务状态:未审批'"> <!-- 内容 --> </div>
8.当前端执行的一个写入数据接口,后面写一个读数据
为了保证读数据,可以正确读到写的数据,在方法前面加入async,在写入数据前面加入await
9.注意!!!!
await findDisagreeId(taskId).then(res => {
reason.value = "拒绝";
reject(res, reason.value);
});
await和then可能会发生冲突,导致await失效。
可以这么该:
try {
const res = await findDisagreeId(taskId);
reason.value = "拒绝";
reject(res, reason.value);
} catch (error) {
console.error("Error:", error);
}