SSM关联码表的多个字段显示中文流程以及sql写法
生活随笔
收集整理的這篇文章主要介紹了
SSM关联码表的多个字段显示中文流程以及sql写法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景描述:
實體Model中存放的是數字,
與數字對應的中文狀態存放在碼表中,
要關聯碼表在jsp頁面來顯示對應的中文狀態。
碼表字段:
要顯示的效果:
代碼思路:
1.編寫Model類的擴展類,此擴展類要繼承原來的Model類
public class BusUserDemandRefundAlterExt extends BusUserDemandRefundAlter {?
2.在擴展Model中增加String類型的對應要關聯碼表顯示的字段。
private String operationTypeName;private String auditStatusName;以及相應的set和get方法。3.修改對應的action以及service的方法相應的返回類型為擴展的Model類。
?PageResult<BusUserDemandRefundAlterExt> pageResult = PageUtil.pageSet(this.getClass(), pageSize, pageCurrent, orderField, orderDirection);pageResult=this.alterService.getPageResultInBackstage(pageResult);4.編寫mapper文件
除了用代碼生成工具自動生成的mapper之外,在新增mapper的擴展包,在下面新建同名mapper文件.
在mapper文件中
resultMap要繼承自動生成的mapper文件中的resultMap
<resultMap id="BaseExtResultMap"type="com.wongoing.bus.model.ext.BusUserDemandRefundAlterExt" extends="BaseResultMap"><result column="OperationTypeName" property="operationTypeName"jdbcType="VARCHAR" /><result column="AuditStatusName" property="auditStatusName"jdbcType="VARCHAR" />要添加result映射,column要對應sql語句中關聯查詢的別名,property要對應擴展類的添加的屬性名。
sql寫法:
<select id="getRefundExtInBackstage" parameterType="java.util.Map"resultMap="BaseExtResultMap">select dra.*,buds.PassengerName ,sc.CodeName OperationTypeName,sc1.CodeName AuditStatusNamefrom bus_user_demand_refund_alter draleft join bus_user_demand_suborder buds on buds.id = dra.OriginalSubOrderIdleft join sys_code scon sc.CodeType="operationType"and sc.CodeValue = dra.OperationTypeleft join sys_code sc1on sc1.CodeType="auditStatus"and sc1.CodeValue = dra.auditStatuswhere dra.Auditor = 1如果要關聯一個表中的兩個字段作為別名,可以left join? 這個表兩次 取兩個別名,這個別名要和result中的column對應。
?
如果要關聯的字段很多,還可以用這種寫法:
SELECTo.*,bmg.MerchantName,bmg.startCityName,bmg.endCityName,buo.*,buo.DepositPrice AS OneDepositPrice,buo.OrderUserName SonOrderUserName,buo.OrderUserPhoneNum SonOrderUserName,(select sc.codeName from sys_code sc where o.GoodsType=sc.codeValue and codeType="goodsType") AS GoodsTypeName,(select sc.codeName from sys_code sc where o.FlightType=sc.codeValue and codeType="flightType") AS FlightTypeName,?(select sc.codeName from sys_code sc where buo.OrderSonStatusId=sc.codeValue and codeType="orderSonStatus") AS OrderSonStatusName,(select sc.codeName from sys_code sc where o.OrderStatusId=sc.codeValue and codeType="orderMainStatus") AS OrderMainStatusName,(select sc.codeName from sys_code sc where o.DepositPayWay=sc.codeValue and codeType="payType") AS DepositPayWayName,(select sc.codeName from sys_code sc where o.TailMoneyPayWay=sc.codeValue and codeType="payType") AS TailMoneyPayWayName???FROM bus_user_goodsorder oLEFT JOIN bus_merchant_goods bmg ON o.GoodsId = bmg.IdLEFT JOIN bus_user_goodsorderdetail buo ON buo.OrderId = o.IdWHERE 1=1?
總結
以上是生活随笔為你收集整理的SSM关联码表的多个字段显示中文流程以及sql写法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ElementUI数据联动计算并实现数据
- 下一篇: zipaligin不是内部或外部命令,也