1.在controller层中不要将两个修改动作放在一个同一个方法中。
2.对数据库的修改动作(insert、update)应该放在同一个service方法里,因为他们牵扯到事务问题,而get、select等查询数据方法可以跟修改动作放在同一个controller方法里。
3.非空判断 xxxx != null && xxxx.length > 0。
4.在修改数据库记录时首先应当检查操作的那条记录是否存在,避免出现自己修改记录的同时别人也在修改。
如果修改记录要满足某字段不能在数据库中重复出现,应该通过设置数据库字段唯一性约束来捕获异常的方式,不应该再手动查询一遍是否有这条记录。
5.要慢慢培养写出来的代码性能优良,要从效率出发点考虑问题。
6.在做下拉框选中值后,将选中的值赋到另一个input框中的时候,由于下拉框的change事件需要改变才能触发,这里的需求需要连续选择也能触发,我在解决这个问题的时候出发点就错误了,导致绕了很大一个圈,我在想办法怎么能让下拉框同时选择也能触发change事件,百度了各种方法想通过JS手动触发事件,结果都失败了,最后经过询问,其实非常简单容易,就不要在select中绑定change事件了,直接在option中绑定click事件就可以了。
<el-select id="sel" v-model="sendForm.insertFunction" style="width: 100%" @change="onChange">
<el-option v-for="item in functionList" :key="item.value"
:label="item.label" :value="item.label"
@click.native="changeFunc(item.label)"> '
7.JS在声明对象的时候,为了避免原始指针地址修改值影响到原始值的话可以用 entry["object"] = JSON.parse(JSON.stringify(obj1)) 这种方法声明新的引用。
8.公式模块其中最核心的问题是如何拼接字符串,替换英文名(colName)和中文名(showName)的问题,
9.在JS中同样注意“封装”的概念,如果在一个页面里直接取得另一个页面的一个变量,那么就应该将这个变量封装成一个方法。
10.存在父子关系的页面可以通过window对象的opener和parent方法取得想要的对象。这两个方法的区别如下:
window.parent中parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面就是B页面的parent。B页面可以通过parent访问A页面。
window.opener中的opener表示谁打开我的,比如一个A页面利用window.open弹出了B页面,那么A页面就是B页面的opener。B页面可以通过opener访问A页面。
11.mysql 在函数体中可以自动识别列名进行真实值的替换,例如:
insert into t2 values('asdfgh',left(c1,2));
网友评论