mybatis是一个非常好用且灵活的持久层框架,但也正是因为太过灵活,导致有时候参数很难整理。我把我在项目中遇到的一个特殊情况列出来,希望下次再碰到时,也有个印象。

实体类如下:

  1. public class BatchManagerViewVo  implements Serializable{
  2. /**
  3. * @Description: serialVersionUID : TODO
  4. */
  5. private static final long serialVersionUID = 1L;
  6. private List<ResourcesItemDto> resourceItem;
  7. private List<PriceInfoDto> priceInfo;
  8. /**
  9. * 主键(PM200600001)
  10. */
  11. @Id
  12. @Column(name = "ID")
  13. private String id;
  14. public List<ResourcesItemDto> getResourceItem() {
  15. return resourceItem;
  16. }
  17. public void setResourceItem(List<ResourcesItemDto> resourceItem) {
  18. this.resourceItem = resourceItem;
  19. }
  20. public List<PriceInfoDto> getPriceInfo() {
  21. return priceInfo;
  22. }
  23. public void setPriceInfo(List<PriceInfoDto> priceInfo) {
  24. this.priceInfo = priceInfo;
  25. }
  26. /**
  27. * 场次名称
  28. */
  29. @Column(name = "BATCH_NAME")
  30. private String batchName;
  31. /**
  32. * 会员名称
  33. */
  34. @Column(name = "MEMBER_NAME")
  35. private String memberName;
  36. /**
  37. * 发起竞价的会员代码
  38. */
  39. @Column(name = "MEMBER_CODE")
  40. private String memberCode;
  41. /**
  42. * 委托状态:0-已生成,1-已发布,2.竞价中 3-已撤消,4--已作废,5-已完成
  43. */
  44. @Column(name = "BATCH_STATE")
  45. private String batchState;
  46. /**
  47. * 委托申请时间
  48. */
  49. @Column(name = "BATCH_DATE")
  50. private Date batchDate;
  51. /**
  52. * 结束时间
  53. */
  54. @Column(name = "END_TIME")
  55. private Date endTime;
  56. /**
  57. * 开始时间
  58. */
  59. @Column(name = "START_TIME")
  60. private Date startTime;
  61. /**
  62. * 履约保证金是否已经支付 1 - 已经支付 0 - 未支付(只有此状态为1才允许开始拍卖)
  63. */
  64. @Column(name = "BOND_PAYMENT_STATUS")
  65. private String bondPaymentStatus;
  66. /**
  67. * 结算方式:1-场外结算(默认) 2- 场内结算
  68. */
  69. @Column(name = "SETTLEMENT_MODE")
  70. private String settlementMode;
  71. /**
  72. * 作废时间
  73. */
  74. @Column(name = "INVALID_DATE")
  75. private Date invalidDate;
  76. /**
  77. * 审核操作员
  78. */
  79. @Column(name = "AUDIT_OPERATOR")
  80. private String auditOperator;
  81. /**
  82. * 终止操作员
  83. */
  84. @Column(name = "STOP_OPERATOR")
  85. private String stopOperator;
  86. /**
  87. * 作废操作员
  88. */
  89. @Column(name = "INVALID_OPERATOR")
  90. private String invalidOperator;
  91. /**
  92. * 申请操作员
  93. */
  94. @Column(name = "APPLY_OPERATOR")
  95. private String applyOperator;
  96. /**
  97. * 公告日
  98. */
  99. @Column(name = "ANNOUNCEMENT_DAY")
  100. private Date announcementDay;
  101. /**
  102. * 竞价日
  103. */
  104. @Column(name = "BID_DAY")
  105. private Date bidDay;
  106. /**
  107. * 买方保证金
  108. */
  109. @Column(name = "BUYER_DEPOSIT")
  110. private BigDecimal buyerDeposit;
  111. /**
  112. * 卖家保证金
  113. */
  114. @Column(name = "SELLER_BOND")
  115. private BigDecimal sellerBond;
  116. /**
  117. * 强制终止理由
  118. */
  119. @Column(name = "FORCED_TERMINATION_REASON")
  120. private String forcedTerminationReason;
  121. /**
  122. * 终止委托审核理由(待定)
  123. */
  124. @Column(name = "AUDIT_STOP_REASON")
  125. private String auditStopReason;
  126. /**
  127. * 终止委托审核时间(待定)
  128. */
  129. @Column(name = "AUDIT_STOP_DATE")
  130. private Date auditStopDate;
  131. /**
  132. * 终止委托申请理由(待定)
  133. */
  134. @Column(name = "APPLY_STOP_REASON")
  135. private String applyStopReason;
  136. /**
  137. * 终止委托申请时间(待定)
  138. */
  139. @Column(name = "APPLY_STOP_DATE")
  140. private Date applyStopDate;
  141. /**
  142. * 拒绝审核委托理由(待定)
  143. */
  144. @Column(name = "REFUSE_AUDIT_REASON")
  145. private String refuseAuditReason;
  146. /**
  147. * 委托审核时间(待定)
  148. */
  149. @Column(name = "AUDIT_TIME")
  150. private Date auditTime;
  151. /**
  152. * 定向竞价0否1是1
  153. */
  154. @Column(name = "IS_DIRECTIONAL_BID")
  155. private String isDirectionalBid;
  156. /**
  157. * 定向的原因,当场次定向时必须输入
  158. */
  159. @Column(name = "DIRECTIONAL_REASON")
  160. private String directionalReason;
  161. /**
  162. * 是否需要发送短信0不发送1发送
  163. */
  164. @Column(name = "IS_SEND_MESSAGE")
  165. private String isSendMessage;
  166. /**
  167. * 是否显示中标价格
  168. */
  169. @Column(name = "IS_SHOW_DEAL_PRICE")
  170. private String isShowDealPrice;
  171. /**
  172. * 是否显示定价
  173. */
  174. @Column(name = "IS_SHOW_ORDER_PRICE")
  175. private String isShowOrderPrice;
  176. /**
  177. * 是否显示中标会员
  178. */
  179. @Column(name = "IS_SHOW_DEAL_MEMBER")
  180. private String isShowDealMember;
  181. /**
  182. * 最少响应人数
  183. */
  184. @Column(name = "MINIMUM_RESPONSE")
  185. private String minimumResponse;
  186. /**
  187. * 是否显示成交结果
  188. */
  189. @Column(name = "ISSHOWDEALRESULT")
  190. private String isshowdealresult;
  191. /**
  192. * 竞价模式:1-公开增价,2自由报价,3-荷式竞价
  193. */
  194. @Column(name = "BIDDING_TYPE")
  195. private String biddingType;
  196. /**
  197. * 报盘方式:1-单价,2-总价
  198. */
  199. @Column(name = "OFFER_TYPE")
  200. private String offerType;
  201. /**
  202. * 是否显示起拍价 1显示(默认) 2不显示
  203. */
  204. @Column(name = "IS_SHOW_STARTING_PIRCE")
  205. private String isShowStartingPirce;
  206. /**
  207. * 域名
  208. */
  209. @Column(name = "DOAMIN")
  210. private String doamin;
  211. /**
  212. * 协议
  213. */
  214. @Column(name = "EDITMENT")
  215. private String editment;
  216. }

这里的实体类中,包含了2个List对象,所以在写xml文件的时候多少对我这种菜鸟有点难度。

  1. <select id="findSellerBatchInfo" parameterType="com.ouyeel.chem.bdt.search.BatchManagerSerachModel" resultMap="batchInfoMap">
  2. select
  3. batch.ID,
  4. batch.BATCH_NAME,
  5. batch.BATCH_STATE batch_state,
  6. batch.START_TIME batch_start_time,
  7. batch.END_TIME batch_end_time,
  8. batch.IS_DIRECTIONAL_BID batch_is_direc,
  9. batch.BUYER_DEPOSIT batch_buyer_deposit,
  10. batch.BIDDING_TYPE batch_bidding_type,
  11. batch.OFFER_TYPE batch_offer_type,
  12. batch.BATCH_DATE batch_date,
  13. batch.ANNOUNCEMENT_DAY batch_announ,
  14. batch.BID_DAY batch_bid_day,
  15. price.id price_id,
  16. price.STARTING_PIRCE price_starting_price,
  17. price.BIDDING_GRADIENT price_bidding_gradient,
  18. price.TAX_RATE price_tax_rate,
  19. price.TAX_FREE_PRICE price_tax_free_price,
  20. price.RESERVE_PRICE price_reserve_price,
  21. item.PRODUCT_NAME item_product_name,
  22. item.PRODUCT_NO item_product_no,
  23. item.PACKAGES item_packages,
  24. item.ORIGIN_PLACE item_origin_place,
  25. item.WAREHOUSE_NAME item_warehouse,
  26. item.PIECE_UNIT item_piece_unit,
  27. item.TRADING_WEIGHT item_trading_weight
  28. from bdt_batch batch
  29. left join bdt_resources_item item on item.batch_id = batch.id
  30. left join bdt_price_info price on price.batch_id = batch.id and item.id = price.item_id
  31. where batch.member_code = #{memberCode,jdbcType=VARCHAR}<!--  and batch.id = 'P170508005' -->
  32. <if test="id != null and id != '' ">
  33. and batch.id like '%${id}%'
  34. </if>
  35. <if test="startTime != null and startTime != '' ">
  36. and batch.batch_date >= #{startTime,jdbcType=TIMESTAMP}
  37. </if>
  38. <if test="endTime != null and endTime != '' ">
  39. and batch.batch_date <= #{endTime,jdbcType=TIMESTAMP}
  40. </if>
  41. <if test="batchState != null and batchState != '' ">
  42. and batch.batch_state = #{batchState,jdbcType=VARCHAR}
  43. </if>
  44. <if test="sidx != null and sidx != '' ">
  45. order by batch.${sidx} ${sord}
  46. </if>
  47. <if test="sidx == null or sidx ==''">
  48. order by batch.id desc
  49. </if>
  50. </select>
  1. <resultMap type="com.ouyeel.chem.bdt.entity.vo.BatchManagerViewVo" id="batchInfoMap">
  2. <!-- association字面意思关联,这里只专门做一对一关联; property表示是com.mybatis.bean.StudentTemp中的属性名称;
  3. javaType表示该属性是什么类型对象 -->
  4. <!-- property 表示com.mybatis.bean.Class中的属性; column 表示表中的列名 -->
  5. <id property="id" column="id"/>
  6. <result property="batchName" column="batch_name"/>
  7. <result property="startTime" column="batch_start_time"/>
  8. <result property="endTime" column="batch_end_time"/>
  9. <result property="isDirectionalBid" column="batch_is_direc"/>
  10. <result property="batchState" column="batch_state"/>
  11. <result property="buyerDeposit" column="batch_buyer_deposit"/>
  12. <result property="biddingType" column="batch_bidding_type"/>
  13. <result property="offerType" column="batch_offer_type"/>
  14. <result property="batchDate" column="batch_date"/>
  15. <result property="announcementDay" column="batch_announ"/>
  16. <result property="bidDay" column="batch_bid_day"/>
  17. <!-- property表示集合类型属性名称,ofType表示集合中的对象是什么类型 -->
  18. <collection property="priceInfo" ofType="com.ouyeel.chem.bdt.entity.PriceInfoDto">
  19. <id property="id" column="price_id"/>
  20. <result property="startingPirce" column="price_starting_price"/>
  21. <result property="biddingGradient" column="price_bidding_gradient"/>
  22. <result property="taxRate" column="price_tax_rate"/>
  23. <result property="taxFreePrice" column="price_tax_free_price"/>
  24. <result property="reservePrice" column="price_reserve_price"/>
  25. </collection>
  26. <!--  property表示集合类型属性名称,ofType表示集合中的对象是什么类型 -->
  27. <collection property="resourceItem" ofType="com.ouyeel.chem.bdt.entity.ResourcesItemDto">
  28. <result property="productName" column="item_product_name"/>
  29. <result property="productNo" column="item_product_no"/>
  30. <result property="packages" column="item_packages"/>
  31. <result property="originPlace" column="item_origin_place"/>
  32. <result property="warehouseName" column="item_warehouse"/>
  33. <result property="pieceUnit" column="item_piece_unit"/>
  34. <result property="tradingWeight" column="item_trading_weight"/>
  35. </collection>
  36. </resultMap>

Mybatis对象中含有list对象相关推荐

  1. 如何将一个对象中的List对象添加为子集,且父结构不存在重复数据

    如何将一个对象中的List对象添加为子集,且父结构不存在重复数据 有这样一个需求,把一个客户名下的联系人构建成下拉树结构.如 : A公司 ----联系人:张三 ----联系人:李四 B公司 ----联 ...

  2. java的BeanUtils.copyProperties会把为数据源对象中数字包装对象为null的值改成0赋值给操作对象的属性

    如果使用java自带BeanUtils.copyProperties,它会把为数据源对象的数字包装对象为null的值改成0赋值给操作对象的属性!!!

  3. 【Java代码】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写【去除外层循环:可用于Map对象中的key全部转化为大写或者小写】

    why 事情的缘由是这样的,我们有两个平台,一个使用Oracle,另一个使用GreenPlum,查询结果封装成Map对象,如果使用相同的查询语句,Oracle的key是大写的,GreenPlum的ke ...

  4. mybatis返回值多个对象

    SpringBoot+mysql+Mybatis返回值对象中含有对象集合 1.对象personalHistoryInfo ​ public class PersonalHistoryInfo {/** ...

  5. vue 往对象中添加键值对_【Vue】Vue学习之混入

    今天学习了Vue中的"混入"知识点,写篇文章用自己的语言来向自己解释它,如有不足还望指点. 混入(mixins): 混入提供了一种非常灵活的方式,来分发Vue组件中的可复用功能 - ...

  6. JavaScript中本地对象、内置对象和宿主对象

    http://www.jianshu.com/p/a52e6e183427 http://blog.csdn.net/weiyastory/article/details/52837466 http: ...

  7. PHP 中的类, 对象之间的关系

    最近,看了一篇介绍关于PHP中类与对象关系的文章,感觉对类和对象的理解又加深了一层,这里总结一下: (1):创建一个新的类 class Test{public $class_name = " ...

  8. JavaScript如何声明对象、函数以及对象中的函数(即方法)

    目录 声明对象的2种最常见方法 声明函数的2种最常见方法 在对象中声明函数 声明对象的2种最常见方法 1) var Zhihuijun = {name:'彭志辉',age:28,upName:'稚晖君 ...

  9. python里面的类和对象_Python中类和对象在内存中是如何保存?

    类以及类中的方法在内存中只有一份,而根据类创建的每一个对象都在内存中需要存一份,大致如下图: 如上图所示,根据类创建对象时,对象中除了封装 name 和 age 的值之外,还会保存一个类对象指针,该值 ...

  10. 数据库-ADONET-在数据集DataSet中使用关系对象DataRelation处理关系

    处理关系数据 数据库中,表很少是独立结构的,大部分数据库都包含相互关联的表. 在构建应用程序时,会遇到--显示或者通过程序设计访问数据库中相关表的数据的情况. 用户会希望,能通过在不同的表之间定位,来 ...

最新文章

  1. 2021高校毕业生薪酬Top100出炉!清华指数TOP,薪酬却排名第二
  2. ​网页图表Highcharts实践教程标之添加题副标题版权信息
  3. linux shell 产生随机数
  4. windows下mysql安装配置启动
  5. 日常打卡:平淡无奇的一天
  6. ruby mysql 占位符_ruby操作常用数据库
  7. 身为开发人员,这些数据库合知识不掌握不合适!
  8. [原创]FOCUS处理系统流程之:大文本文件极速合并(sps文件合并)
  9. ehcache 实现缓存共享
  10. php日志,记录日志
  11. php中面向对象静态调用,php面向对象中static静态属性和静态方法的调用_PHP
  12. [转]通过秘钥实现scp不输入密码传送文件
  13. CS231n Assiganment#1解析(一)——KNN
  14. java 拉姆达表达式_Java8中foreach与拉姆达表达式的组合使用
  15. 锂电池电量百分比计算_锂电池的电量、电压与放电时间的计算
  16. Android 显示软键盘输入法和强制隐藏软键盘输入法
  17. Excel转PDF如何解决显示不全的问题?
  18. DDoS攻击流量检测方法
  19. 计算机三级网络技术最全知识点总结【2】
  20. Java 程序基本结构

热门文章

  1. 【Transformers】第 1 章:从Bag-of-Words到Transformer
  2. WPF 框架prism代码笔记
  3. java如何实现英文翻译中文,22年最新
  4. html5 摇杆,分享一个虚拟摇杆,比较粗糙,没做优化
  5. GTRD:最全面的人和小鼠转录因子chip_seq数据库
  6. [Render] Unity SRP 概述:可编写脚本的渲染管道
  7. php 富文本编辑器,曾经用过的十大富文本编辑器
  8. 国内各大免费邮箱的smtp
  9. 机器学习算法——神经网络4(RBF神经网络)
  10. LED用DMX512协议整个系统怎么连接?