实体类作为另一个实体类的属性向前台传数据的问题
最近在二次开发一个springMVC项目,遇到了一个数据展示问题:因为后台实体类在编写的时候,使用另一个实体类作为一个实体类的属性,但是在前台要展示的数据在两个实体类中都有涉及,如下于是就犯了难,难道非要在返回数据的时候再封装一个传参数的对象出来吗?但是其他地方都不会用到的这个对象,我不想这么做。经过debug 代码分析各个参数之后,解决了这个问题。代码如下:
实体类:请关注其中 QRCodeEntity 这个对象类型的属性
@Entity
@Table(name = "legalpublish_book")
public class LegalPublishBookEntity extends IdEntity {
private Integer bookyear;//书籍年份
private String bookname;//书籍名称
private Integer bookorder;//书籍排序
private String bookchapter;//宪法/经济法~ 之类的
private Integer sectionnumber;//节编号
private String booksection;//反分裂国家法(宪法的细分)
private Integer qrcodeitem;//二维码对应部分 1书籍 2章 3节
private String parentid;//书籍无父id 章对应书的id 节对应章的id
private String accountid;
private Integer bindablequantity;//可绑定的用户数
private Set<GzUserInfo> userlist;//已绑定用户
private QRCodeEntity qrcode;//对应二维码
private List<StripEntity> striplist;//对应的节内容
前端使用的bootstrap框架,使用如下方法调取数据:请关注二维码字段
//获取表格数据
function loadTableData(){
$("#tableGridData").bootstrapTable({
method: "post", //使用get请求到服务器获取数据
contentType : "application/x-www-form-urlencoded",
url: "stripBookQrcodeController.do?datagrid&field=id,bookyear,bookname,bookchapter,sectionnumber,booksection,qrcodeitem,parentid,accountid,isbind,bindablequantity,qrcode_codeticket,userlist", //获取数据的Servlet地址
striped: true, //表格显示条纹
queryParams: function queryParams(params) { //设置查询参数
var param = {
page: params.offset/params.limit+1,
rows: params.limit,
sort: params.sort,
order:params.order,
isbind:$("#isbindsearch").val(),
bookname:$("#booknamesearch").val(),
};
return param;
},
pagination: true, //启动分页
pageSize: 10, //每页显示的记录数
pageNumber:1, //当前第几页
pageList: [5, 10, 20, 100, 1000], //记录数可选列表
search: false, //是否启用查询
sortable: true, //是否启用排序
showColumns: true, //显示下拉框勾选要显示的列
showRefresh: true, //显示刷新按钮
sidePagination: "server", //表示服务端请求
locale:'zh-CN',
clickToSelect: true, //是否启用点击选中行
columns: [{
checkbox: true
}, {
field:'id',
visible: false,
},{
field:'bookyear',
title: '书籍年份',
sortable : true,
},{
field:'isbind',
title: '二维码类型',//真题二维码 普通二维码
sortable : true,
},{
field:'bindablequantity',
title: '可绑定用户数',
sortable : true,
},{
field:'qrcode_codeticket',
title: '二维码',
sortable : true,
formatter: qrcodeFormatter,
}],
toolbar:"#dicToolbar",
responseHandler: function(res) {
return {
"total": res.total,//总页数
"rows": res.rows //数据
};
},
});
function qrcodeFormatter(value, row){
var div = "<img src=\"https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket="+value+"\" width=\"60px\" heigth=\"30px\"></img>";
return div;
}
}
与此同时,后台controller代码如下:
@RequestMapping(params = "datagrid")
@ResponseBody
public void datagrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,LegalPublishBookEntity legalPublishBook) {
CriteriaQuery cq = new CriteriaQuery(legalPublishBook.getClass(), dataGrid);
if(StringUtil.isNotEmpty(legalPublishBook.getBookname())){
cq.like("bookname", legalPublishBook.getBookname());
legalPublishBook.setBookname("");
}
cq.add();
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, legalPublishBook);
this.systemService.getDataGridReturn(cq, true);
TagUtil.datagridstr(response, dataGrid);
}
需求是前台在请求获取LegalPublishBookEntity 这个实体类的数据库数据的时候还需要获取 QRCodeEntity 其中的一个属性,而QRCodeEntity 在编写实体类的时候是 LegalPublishBookEntity 的一个属性当时这么写是为了使用hql语句进行多表联查方便,但同时也造成了现在的麻烦。
我记得 hibernate在查询数据库时候,一般会将对象和属性使用下划线 “_” 连接起来,但是我在这种情况下使用下划线直接来调用QRCodeEntity的属性可不可以呢? 在前台上如上代码写上 qrcode_codeticket 试了一下,竟然能将数据调出来!不知道这是我的误打误撞还是hibernate 为了方便开发人员的调用就是如此设计的,虽然解决了问题,但是还是有一些不太明白的地方,写的不好,有各位大牛看见了还希望顺便指教一下这个问题~
上一篇: 使用lombok包可以将实类的get/set方法省略
下一篇: java基础九(继承)