(1)
直接在对应路径上输入cmd,即可直接跳转到对应路径的命令行
(2)
如果团队开发,自己单独出现问题,很可能是自己的配置出现问题,着重检查jdk是否还有多余的包
(3)el里的item只是需要用到插件才用
(4)
table里自带slot插槽,里面会带上column,row,$index等属性,可以用来控制行号或者合并单元格的操作
举个例子
:data="tableData" tooltip-effect="dark" style="width: 100%" header-align="center">
(5)
查询实体内的方法对应快捷键 ctrl+F12
(6)
嵌套查询和连接查询的区别:嵌套查询是查询的字段还需要其他条件约束,而连接查询是关联两个表的关系
(7)
spring-data-jpa通过在实体注明是什么关系,会自动进行连接查询
(8)
单价*:
v-model="form.city" placeholder="" >
elementUI布局划分了24个列,通过控制列的大小来整合布局
(9)
v-if指令可以动态监测数据,如果成立,就立马显示否则不显示
(10)
总结JSON字符串:一般遵循key-value的样式,一组的话用花括号和逗号隔开,必须是英文逗号
例子如下
[{ "name":"45-" , "value":"1" },
{"name":"45+" , "value":"2"},
{"name":"100+" , "value":"3"},
{"name":"300+" , "value":"4"},
{"name":"500+" , "value":"5"},
{"name":"800+" , "value":"6"},
{"name":"1000+" , "value":"7"}
]
(11)
有些字段也可以用JSON格式来进行保存
(12)
多注意组件复用,例如import进来的东西,肯定要用到
(13)
遍历Json格式,先需要转为对象,然后数组遍历即可
this.items = JSON.parse(this.form.costslevel);
重量等级:
v-model="item.level" >
费率:
v-model="item.rate" >
(14)
如果需要交互的,需要带上async关键字
(15)
返回的后台值可以在调用方法处进行赋值
(16)
如果是简单sql可以直接利用springDataJpa直接调用
,难的可以自己写,例子如下
@Query(value="select two_letter_designator from itran_airline_company",nativeQuery=true)
List findTwoLetterDesignator();
不加value则是hql语句
(17)
如果方法有async修饰,那么请求后台的方法必须要有axios修饰
(18)
AirportRepo里面可以加底层没有的方法,springDataJpa会自动解析成sql语句
(19)
如果调用当前界面的变量,需要this指定才不报错
(20)
Json字符串变Json对象
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
(21)
前端搜索实体一定要对应才能搜索
(22)
定义完的组件要绑定才能生效
:is="componetName" @close="close" :row="row" >
(23)
前端一经搜索,将把对象赋值给Param.row参数,可以在方法处任意调用
async disable(row) {
if(row.status == 1){
let res = await disableRentCabin(row.id);
this.$refs.TableList.getData();
this.$message({ message: "停用成功!", type: "success" });
}else{
this.$message({message: "已经是停用状态,请勿重复点击", type: "warning"});
}
(24)
created()方法起到预加载的作用,可以加载一些数据库的信息
(25)
对于select下拉框的数据库赋值,可以将查询后的数据保存在数组里面,可以查出一个字段
作为一个元素,也可以是一个对象是一个元素(推荐后者),取值的时候,label和value根据实际情况
对应取值,如果是对象就item.对象的一个属性,如果是有一个字段作为一个元素,就直接Item即可
例子如下:
查询的时候是一个字段作为返回元素
v-for="item in companyList" :key="item.id" :label="item" :value="item" > 查询的时候是一个对象作为返回元素 v-for="item in goodsCate" :key="item.id" :label="item.goodsName" :value="item.goodsName" > (26) vue里的props参数可以作为父子组件传值的关键字,只需要子组件规定好传值的方式, 那么里面的值可以实现共用,就不需要重复的在created方法中重复执行一些加载数据库的信息 例子如下: props: { show: { type: Boolean, default: false }, row: { type: Object, default: function() { return {}; } }, type: { type: Array, default: function() { return []; } }, goodsCate: { type: Array, default: function() { return []; } }, 前提是需要在index.vue放入该组件 :is="componetName" @close="close" :row="row" :companyList="companyList" :type="type" > (27) created方法是放在method外面的,因为同等重要 (28) 单选框中的label属性,是和传过来的值相对应,value属性是传到后台才需要用到 (29) 单选框必须在created方法转为字符串的格式才能使用 created() { if (this.row.id) { this.form = keysAssign(this.form, this.row); this.form.id = this.row.id; this.form.countType=this.form.countType+""; this.form.tollUnit=this.form.tollUnit+""; } (30) 空指针异常有可能是调用者为空,也有可能查询不到数据 (31) 强制循环,相当于右边的值挨个遍历,给左边传入 (32) 枚举的作用就是可以去除设置状态时使用魔鬼数字 使用方式:创建枚举类然后实体顶个注解即可,然后会自动转换 public class ResourceEnum { public enum isExport implements BaseEnum{ in(1,"进港"), out(2,"出港"); private Integer value; private String name; isExport(Integer value, String name) { this.value = value; this.name = name; } public Integer getValue() { return value; } public String getName() { return name; } } public enum isValid implements BaseEnum{ valid(1,"启用"), invalid(2,"禁用"), obsolete(3,"作废"); private Integer value; private String name; isValid(Integer value, String name) { this.value = value; this.name = name; } @Override public Integer getValue() { return value; } @Override public String getName() { return name; } } public enum isFare implements BaseEnum{ maozhong(1,"毛重收费"), nomaozhong(2,"不是毛重收费"); private Integer value; private String name; isFare(Integer value, String name) { this.value = value; this.name = name; } public Integer getValue() { return value; } public String getName() { return name; } } } (33) 双引号里面只能包括单引号 (34) 一对多的关系,在Mysql设计好字段后,SSM是通过mapper.xml配置来告知关系;springDataJpa通过注解来告知关系 (35) 前端vue转时间格式是 { title: "经停降落时间", key: "arriveLandTime", width: 140, align: "center", render: (h, params) => { return {timeFormat(params.row.arriveLandTime,"yyyy/MM/dd")}; } }, (36) 如果遇到首页访问不了,很可能是前后台端口不一致 (37) 前端项目发布步骤:打成Build,右键项目Show in Explorer,把html的代码复制即可 后端项目发布步骤,打成War,右键项目Show in Explorer,把Root里面的内容复制即可 (38) 前端created()不是放在Method方法里面的,这点一定要注意 (39) v-model="search.airLine" filterable placeholder="请选择" > :label="item.threeCode" :value="item.threeCode" :key="item.id" v-for="item of startList" > 总结:这里面的key="item.id"用的很精髓,可以大大加速下拉框查找速度 (40) vue中:是对属性绑定,@是对事件绑定 (41) async getCity(val){ let item = this.airportAndCityList.find(item => { return item.threeCode==val }); if(item == undefined){ this.form.startCity = ''; }else{ this.form.startCity = item.name; } }, 对于下拉框给予change事件绑定后,可以获取点击后的值 ES6新增语法,遍历this.airportAndCityList,如果item.threeCode==val,则返回item (42) 前端查找实体和后台返回个前端的实体要分别创建,做到需要什么拿什么 (43) 一般不考虑显示的外键关联,在业务处理好一对多的关系即可。因为删除表的时候必须 去除外键关联 (44) 总结sql的if方式,sql是用case来判断条件的 ( SELECT CASE a.ticketStatus WHEN '1' THEN '0' ELSE ( SELECT SUM(ticketMoney) FROM si_sale_report_ticket WHERE reportid = a.id AND STATUS = '1' ) END AS s ) AS "ticketMoney"