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

@Override
 public 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">
  select
  bub.*,sc.CodeName  transactionTypeName,
  sc1.CodeName orderTypeName
    FROM
       bus_user_billserial bub
        LEFT JOIN sys_code sc ON sc.codeType = "merchantTransactionType"
     AND sc.CodeValue = bub.TransactionType
   LEFT JOIN sys_code sc1 ON sc1.codeType = "orderType"
     AND sc1.CodeValue = bub.OrderType
      where 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>

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值