圆通项目 知识点

(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"

 

 

你可能感兴趣的:(项目知识,实际项目知识点大全)