SSM查看详情功能逻辑代码以及关联码表显示
場景
在后臺管理中,有些報表要顯示的字段很多,當進入報表的主頁面時,往往只顯示部分重要的內容,然后在每一條記錄的后面添加一個查看詳情按鈕,通過點擊詳情按鈕,跳轉到顯示所有信息的頁面。
有時一張報表中存取的字段為數字,比如1就代表“是”;0就代表“否”,而我們在查看詳情時,往往要關聯碼表來顯示數字所對應的中文。
實現邏輯
1.在報表主頁面添加詳情按鈕,點擊詳情按鈕,跳轉到action,并將當前數據的ID傳給action。
2.在action中,在對應的方法中,參數接受傳過來的ID,然后調用service的getUserBillDetailsById(id)。
3.在service的實現中調用dao的getUserBillDetailsById(id)。
4.對應的mapper文件中與dao中同名的select中,進行關聯碼表的sql的書寫。
5.在mapper包下寫一個mapper的擴展的包,與用代碼生成工具生成的mapper文件同名。
6.在擴展的mapper文件中,編寫關聯碼表的sql語句,并新增結果集resultmap,繼承自動生成的mapper文件中的resultmap。
7.在Model包下,新建擴展的Model包,以及對應的擴展的Model類,使其繼承原來的單表的Model類。
8.在擴展的Model類中,新增關聯碼表后要顯示的字段,以及相應的set和get方法。
9.在action中將獲取到的擴展的Model傳給詳情頁面,進行顯示即可。
代碼實現
1.報表主頁面
<td>?<button type="button" class="btn btn-default" data-toggle="dialog"data-options="{id:'userOrderDetailDialog',url:'${ctx}/bus/userBillSerailAction/toDetails',type:'post',data:{id:${u.id}}}"data-width="900" data-height="600" data-id="dialog-user-role"data-title="訂單詳情">詳情</button> </td>這是EasyUI的代碼,效果是跳轉到action,并將當前的記錄的id傳過去。
2.查看詳情action
@RequestMapping(value="/toDetails")public ModelAndView toHandle(Integer id){ModelAndView mv=null;try{mv=new ModelAndView();BusUserBillserialExt billserial = billService.getUserBillDetailsById(id);??mv = new ModelAndView();mv.addObject("billserial", billserial);mv.setViewName(ModelAndViewConstants.USERBILL_EDIT_VIEW);LogService.getInstance(this).debug("加載詳情成功:"+ModelAndViewConstants.SERVETYPE_MAIN_VIEW);}catch(Exception ex){LogService.getInstance(this).error("加載詳情失敗:" + ex.getMessage(), ex);mv = new ModelAndView(ModelAndViewConstants.ERROR_VIEW);}return mv;}3.service
public BusUserBillserialExt getUserBillDetailsById(int id);4.serviceImpl
@Overridepublic BusUserBillserialExt getUserBillDetailsById(int id) {return dao.getUserBillDetailsById(id);}5.dao
?public BusUserBillserialExt getUserBillDetailsById(int id);6.mapper
<resultMap id="BaseResultMapExt" type="**.model.ext.BusUserBillserialExt" extends="BaseResultMap"><result column="transactionTypeName" property="transactionTypeName" jdbcType="VARCHAR" /><result column="orderTypeName" property="orderTypeName" jdbcType="VARCHAR" /><result column="isUseRedPackageName" property="isUseRedPackageName" jdbcType="VARCHAR" /></resultMap><select id="getUserBillDetailsById" parameterType="java.util.Map" resultMap="BaseResultMapExt">selectbub.*,sc.CodeName? transactionTypeName,sc1.CodeName orderTypeNameFROMbus_user_billserial bubLEFT JOIN sys_code sc ON sc.codeType = "merchantTransactionType"AND sc.CodeValue = bub.TransactionTypeLEFT JOIN sys_code sc1 ON sc1.codeType = "orderType"AND sc1.CodeValue = bub.OrderTypewhere bub.Id = #{id}</select>具體sql的寫法參照:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/82896608
7.擴展Model
public class BusUserBillserialExt extends BusUserBillserial implements java.io.Serializable{private static final long serialVersionUID = 1L;//碼表字段private String transactionTypeName;private String orderTypeName;private String isUseRedPackageName;//格式化日期private String transactionTimeChanged;public String getOrderTypeName() {return orderTypeName;}public void setOrderTypeName(String orderTypeName) {this.orderTypeName = orderTypeName;}public String getTransactionTypeName() {return transactionTypeName;}public void setTransactionTypeName(String transactionTypeName) {this.transactionTypeName = transactionTypeName;}public String getIsUseRedPackageName() {return isUseRedPackageName;}public void setIsUseRedPackageName(String isUseRedPackageName) {this.isUseRedPackageName = isUseRedPackageName;}public String getTransactionTimeChanged() {if(getTransactionTime()!=null) {transactionTimeChanged=DateUtil.formatDate(getTransactionTime(),"yyyy-MM-dd HH:mm:ss");}return transactionTimeChanged;}public void setTransactionTimeChanged(String transactionTimeChanged) {this.transactionTimeChanged = transactionTimeChanged;}}8.詳情頁jsp
<td class="pass_width_ave_7_column">${billserial.orderTypeName}</td><td class="pass_width_ave_7_column">${billserial.transactionTypeName}</td>?
總結
以上是生活随笔為你收集整理的SSM查看详情功能逻辑代码以及关联码表显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse文档注释快捷键以及自定义文
- 下一篇: SSM实现导出报表为Excel