今天遇到了一个问题,害我排查了半天错误,更加意识到编码规范的严重性。
我要从数据库中多表查询,将数据展示在前端页面,首先是sql语句:
<select id="queryByCondition" parameterType="map" resultType="com.wit.bm.entity.ClassDetail">
select
e.project_name as ProjectName,
c.content as Content,
b.evaluation ,
b.standard ,
b.mainPoints,
d.deviceName as DeviceName ,
d.type as Type,
a.evaluatorCode as Phone,
a.analyzation as Score
FROM evaluation_scheme a
LEFT JOIN kg_class_detail b on a.detail_code = b.evaluationCode
LEFT JOIN kg_class_assess c on c.code = b.assessCode
LEFT JOIN equipmentbasis d on d.code = b.level
LEFT JOIN project_management e on e.project_no = a.projectNo
</select>
然后在实体类中声明Transient临时变量:
@Data
@Table(name = "kg_class_detail")
public class ClassDetail extends BaseUuidModel {
private static final long serialVersionUID = 1L;
@Column
private String evaluation;//测评项
@Column("standard")
private String standard; //标准 //测评方法及步骤
@Column("mainPoints")
private String mainPoints; //评估要点 //预期结果
@Column("assessCode")
private String assessCode; //考核规则编号
@Transient
private String ProjectName;
@Transient
private String Content;
@Transient
private String DeviceName;
@Transient
private String Type;
@Transient
private String Phone;
@Transient
private String Score;
}
前端填充表格的Jqery:
"columns": [
{
"data": null, "render": function (data, type, row, mete) {
tablerows[row.id] = row;
return '<input type="checkbox" name="tablecheckbox" value="' + row.id + '"/>';
}, orderable: false, className: "oemp-checkbox"
},
// TODO 添加列表数据对应字段
{"data": "ProjectName"},
{"data": "Content"},
{"data": "evaluation"}, //
{"data": "standard"}, //
{"data": "mainPoints"}, //
{"data": "DeviceName"},
{"data": "Type"},
{"data": "Phone"},
{"data": "Score"},
],
结果发现,前端只取到了首字母小写的三个对象字段,我开始郁闷,sql语句单独运行没问题、打断点list集合也有值、字段也匹配到底错在哪?尝试着把js中ProjectName变量首字母改小写,发现页面竟然取到值了。。难道大写的被js自动转成小写的了吗?
这个问题暂留以后有时间深入考虑把。。
其实正常来说实体类中的临时变量按java规范来命名是不会有这个问题的,java声明变量首字母小写,前端使用时就不存在问题了;注意sql语句字段别名命名也尽量首字母小写,与之对应;
---------------------------------------------------------------------------------------------------------
忽略的命名规范:
java变量的命名规则 是首字母小写,随后的单词首字母大写(驼峰写法);
类名则是一开始就按 驼峰写法来;
包名项目名全小写;