mybatis配置对象包含对象以及List的方式

mybatis配置对象包含对象及List

这里隐藏get set方法

public class BatchManagerViewVo  implements Serializable{

	/**
	* @Description: serialVersionUID : TODO
	*/
	private static final long serialVersionUID = 1L;

	private List<ResourcesItemDto> resourceItem;

	private List<PriceInfoDto> priceInfo;

	/**
     * 主键(PM200600001)
     */
    @Id
    @Column(name = "ID")
    private String id;

    public List<ResourcesItemDto> getResourceItem() {
		return resourceItem;
	}
	public void setResourceItem(List<ResourcesItemDto> resourceItem) {
		this.resourceItem = resourceItem;
	}
	public List<PriceInfoDto> getPriceInfo() {
		return priceInfo;
	}
	public void setPriceInfo(List<PriceInfoDto> priceInfo) {
		this.priceInfo = priceInfo;
	}

	/**
     * 场次名称
     */
    @Column(name = "BATCH_NAME")
    private String batchName;

    /**
     * 会员名称
     */
    @Column(name = "MEMBER_NAME")
    private String memberName;

    /**
     * 发起竞价的会员代码
     */
    @Column(name = "MEMBER_CODE")
    private String memberCode;

    /**
     * 委托状态:0-已生成,1-已发布,2.竞价中 3-已撤消,4--已作废,5-已完成
     */
    @Column(name = "BATCH_STATE")
    private String batchState;

    /**
     * 委托申请时间
     */
    @Column(name = "BATCH_DATE")
    private Date batchDate;

    /**
     * 结束时间
     */
    @Column(name = "END_TIME")
    private Date endTime;

    /**
     * 开始时间
     */
    @Column(name = "START_TIME")
    private Date startTime;

    /**
     * 履约保证金是否已经支付 1 - 已经支付 0 - 未支付(只有此状态为1才允许开始拍卖)
     */
    @Column(name = "BOND_PAYMENT_STATUS")
    private String bondPaymentStatus;

    /**
     * 结算方式:1-场外结算(默认) 2- 场内结算
     */
    @Column(name = "SETTLEMENT_MODE")
    private String settlementMode;

    /**
     * 作废时间
     */
    @Column(name = "INVALID_DATE")
    private Date invalidDate;

    /**
     * 审核操作员
     */
    @Column(name = "AUDIT_OPERATOR")
    private String auditOperator;

    /**
     * 终止操作员
     */
    @Column(name = "STOP_OPERATOR")
    private String stopOperator;

    /**
     * 作废操作员
     */
    @Column(name = "INVALID_OPERATOR")
    private String invalidOperator;

    /**
     * 申请操作员
     */
    @Column(name = "APPLY_OPERATOR")
    private String applyOperator;

    /**
     * 公告日
     */
    @Column(name = "ANNOUNCEMENT_DAY")
    private Date announcementDay;

    /**
     * 竞价日
     */
    @Column(name = "BID_DAY")
    private Date bidDay;

    /**
     * 买方保证金
     */
    @Column(name = "BUYER_DEPOSIT")
    private BigDecimal buyerDeposit;

    /**
     * 卖家保证金
     */
    @Column(name = "SELLER_BOND")
    private BigDecimal sellerBond;

    /**
     * 强制终止理由
     */
    @Column(name = "FORCED_TERMINATION_REASON")
    private String forcedTerminationReason;

    /**
     * 终止委托审核理由(待定)
     */
    @Column(name = "AUDIT_STOP_REASON")
    private String auditStopReason;

    /**
     * 终止委托审核时间(待定)
     */
    @Column(name = "AUDIT_STOP_DATE")
    private Date auditStopDate;

    /**
     * 终止委托申请理由(待定)
     */
    @Column(name = "APPLY_STOP_REASON")
    private String applyStopReason;

    /**
     * 终止委托申请时间(待定)
     */
    @Column(name = "APPLY_STOP_DATE")
    private Date applyStopDate;

    /**
     * 拒绝审核委托理由(待定)
     */
    @Column(name = "REFUSE_AUDIT_REASON")
    private String refuseAuditReason;

    /**
     * 委托审核时间(待定)
     */
    @Column(name = "AUDIT_TIME")
    private Date auditTime;

    /**
     * 定向竞价0否1是1
     */
    @Column(name = "IS_DIRECTIONAL_BID")
    private String isDirectionalBid;

    /**
     * 定向的原因,当场次定向时必须输入
     */
    @Column(name = "DIRECTIONAL_REASON")
    private String directionalReason;

    /**
     * 是否需要发送短信0不发送1发送
     */
    @Column(name = "IS_SEND_MESSAGE")
    private String isSendMessage;

    /**
     * 是否显示中标价格
     */
    @Column(name = "IS_SHOW_DEAL_PRICE")
    private String isShowDealPrice;

    /**
     * 是否显示定价
     */
    @Column(name = "IS_SHOW_ORDER_PRICE")
    private String isShowOrderPrice;

    /**
     * 是否显示中标会员
     */
    @Column(name = "IS_SHOW_DEAL_MEMBER")
    private String isShowDealMember;

    /**
     * 最少响应人数
     */
    @Column(name = "MINIMUM_RESPONSE")
    private String minimumResponse;

    /**
     * 是否显示成交结果
     */
    @Column(name = "ISSHOWDEALRESULT")
    private String isshowdealresult;

    /**
     * 竞价模式:1-公开增价,2自由报价,3-荷式竞价
     */
    @Column(name = "BIDDING_TYPE")
    private String biddingType;

    /**
     * 报盘方式:1-单价,2-总价
     */
    @Column(name = "OFFER_TYPE")
    private String offerType;

    /**
     * 是否显示起拍价 1显示(默认) 2不显示
     */
    @Column(name = "IS_SHOW_STARTING_PIRCE")
    private String isShowStartingPirce;

    /**
     * 域名
     */
    @Column(name = "DOAMIN")
    private String doamin;

    /**
     * 协议
     */
    @Column(name = "EDITMENT")
    private String editment;
} 
 <select id="findSellerBatchInfo" parameterType="com.ouyeel.chem.bdt.search.BatchManagerSerachModel" resultMap="batchInfoMap">
  	select
	  	batch.ID,
	  	batch.BATCH_NAME,
	  	batch.BATCH_STATE batch_state,
	  	batch.START_TIME batch_start_time,
	  	batch.END_TIME batch_end_time,
	  	batch.IS_DIRECTIONAL_BID batch_is_direc,
	  	batch.BUYER_DEPOSIT batch_buyer_deposit,
	  	batch.BIDDING_TYPE batch_bidding_type,
	  	batch.OFFER_TYPE batch_offer_type,
	  	batch.BATCH_DATE batch_date,
	  	batch.ANNOUNCEMENT_DAY batch_announ,
	  	batch.BID_DAY batch_bid_day,
	  	price.id price_id,
	  	price.STARTING_PIRCE price_starting_price,
	  	price.BIDDING_GRADIENT price_bidding_gradient,
	  	price.TAX_RATE price_tax_rate,
	  	price.TAX_FREE_PRICE price_tax_free_price,
	  	price.RESERVE_PRICE price_reserve_price,
	  	item.PRODUCT_NAME item_product_name,
	  	item.PRODUCT_NO item_product_no,
	  	item.PACKAGES item_packages,
	  	item.ORIGIN_PLACE item_origin_place,
	  	item.WAREHOUSE_NAME item_warehouse,
	  	item.PIECE_UNIT item_piece_unit,
	  	item.TRADING_WEIGHT item_trading_weight
  	from bdt_batch batch
  	left join bdt_resources_item item on item.batch_id = batch.id
	left join bdt_price_info price on price.batch_id = batch.id and item.id = price.item_id
	where batch.member_code = #{memberCode,jdbcType=VARCHAR}<!--  and batch.id = 'P170508005' -->
	  	<if test="id != null and id != '' ">
	  	and batch.id like '%${id}%'
	  	</if>
	  	<if test="startTime != null and startTime != '' ">
	  	and batch.batch_date >= #{startTime,jdbcType=TIMESTAMP}
	  	</if>
	  	<if test="endTime != null and endTime != '' ">
	  	and batch.batch_date <= #{endTime,jdbcType=TIMESTAMP}
	  	</if>
	  	<if test="batchState != null and batchState != '' ">
	  	and batch.batch_state = #{batchState,jdbcType=VARCHAR}
	  	</if>
		<if test="sidx != null and sidx != '' ">
	  	order by batch.${sidx} ${sord}
	  	</if>
	  	<if test="sidx == null or sidx ==''">
	  	order by batch.id desc
	  	</if>
  </select>
<resultMap type="com.ouyeel.chem.bdt.entity.vo.BatchManagerViewVo" id="batchInfoMap">
        <!-- association字面意思关联,这里只专门做一对一关联; property表示是com.mybatis.bean.StudentTemp中的属性名称;
            javaType表示该属性是什么类型对象 -->
        <!-- property 表示com.mybatis.bean.Class中的属性; column 表示表中的列名 -->
        <id property="id" column="id"/>
	    <result property="batchName" column="batch_name"/>
	    <result property="startTime" column="batch_start_time"/>
	    <result property="endTime" column="batch_end_time"/>
	    <result property="isDirectionalBid" column="batch_is_direc"/>
	    <result property="batchState" column="batch_state"/>
	    <result property="buyerDeposit" column="batch_buyer_deposit"/>
	    <result property="biddingType" column="batch_bidding_type"/>
	    <result property="offerType" column="batch_offer_type"/>
	    <result property="batchDate" column="batch_date"/>
	    <result property="announcementDay" column="batch_announ"/>
	    <result property="bidDay" column="batch_bid_day"/>
        <!-- property表示集合类型属性名称,ofType表示集合中的对象是什么类型 -->
        <collection property="priceInfo" ofType="com.ouyeel.chem.bdt.entity.PriceInfoDto">
            <id property="id" column="price_id"/>
       		<result property="startingPirce" column="price_starting_price"/>
       		<result property="biddingGradient" column="price_bidding_gradient"/>
       		<result property="taxRate" column="price_tax_rate"/>
       		<result property="taxFreePrice" column="price_tax_free_price"/>
       		<result property="reservePrice" column="price_reserve_price"/>
        </collection>
       <!--  property表示集合类型属性名称,ofType表示集合中的对象是什么类型 -->
        <collection property="resourceItem" ofType="com.ouyeel.chem.bdt.entity.ResourcesItemDto">
       		<result property="productName" column="item_product_name"/>
       		<result property="productNo" column="item_product_no"/>
       		<result property="packages" column="item_packages"/>
       		<result property="originPlace" column="item_origin_place"/>
       		<result property="warehouseName" column="item_warehouse"/>
       		<result property="pieceUnit" column="item_piece_unit"/>
       		<result property="tradingWeight" column="item_trading_weight"/>
        </collection>
  </resultMap>

mybatis参数为对象中包含list情况处理

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

实体类如下:

package com.kxlive.erp.sc.stock.vo;

import java.util.Date;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;

import com.kxlive.erp.sc.stock.po.PurchaseDeliver;

public class QueryPurchaseDeliverVo extends PurchaseDeliver{

	private Long merchantId;

	private Long stockId;
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date startTime;//发货开始时间
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date endTime;//发货结束时间

	private Integer page;//当前页

	private Integer rows;//每页记录数

	private String stockName;//仓库名

	private String supplierName;//供应商名称

	private List<Long> condSupplierIds;//供应商IDs

	private List<Integer> condStatuss;//状态s
	public Date getStartTime() {
		return startTime;
	}

	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}

	public Date getEndTime() {
		return endTime;
	}

	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}

	public Integer getPage() {
		return page;
	}

	public void setPage(Integer page) {
		this.page = page;
	}

	public Integer getRows() {
		return rows;
	}

	public void setRows(Integer rows) {
		this.rows = rows;
	}

	public String getStockName() {
		return stockName;
	}

	public void setStockName(String stockName) {
		this.stockName = stockName;
	}

	public String getSupplierName() {
		return supplierName;
	}

	public void setSupplierName(String supplierName) {
		this.supplierName = supplierName;
	}

	public List<Long> getCondSupplierIds() {
		return condSupplierIds;
	}

	public void setCondSupplierIds(List<Long> condSupplierIds) {
		this.condSupplierIds = condSupplierIds;
	}

	public List<Integer> getCondStatuss() {
		return condStatuss;
	}

	public void setCondStatuss(List<Integer> condStatuss) {
		this.condStatuss = condStatuss;
	}

	public Long getMerchantId() {
		return merchantId;
	}

	public void setMerchantId(Long merchantId) {
		this.merchantId = merchantId;
	}

	public Long getStockId() {
		return stockId;
	}

	public void setStockId(Long stockId) {
		this.stockId = stockId;
	}

}

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

  <select id="selectPurchaseDeliverByPrimaryKeySelective" resultMap="purchaseResultMap">
    select
	t2. name stock_name,
	t3. supplier_name, t1.*
		from
			T_SC_PURCHASE_DELIVER t1
		left join T_SC_STOCK t2 on t1.purchase_stock_id = t2.id
		left join T_SC_SUPPLIER t3 on t1.supplier_id = t3.id
    <where>
    	<if test="queryCondition.ifDel != null">
    		and t1.if_del=#{queryCondition.ifDel,jdbcType=INTEGER}
    	</if>

    	<if test="queryCondition.condSupplierIds != null">
    	and t1.supplier_id in
    	<foreach collection="queryCondition.condSupplierIds" item="supplierId" index="index" separator="," open="(" close=")">
    		#{queryCondition.condSupplierIds[${index}],jdbcType=BIGINT}
    	</foreach>
    	</if>
    	<if test="queryCondition.condStatuss != null">
    	and t1.status in
    	<span style="color:#ff0000;"><foreach collection="queryCondition.condStatuss" item="status"  separator=","  index="index" open="(" close=")">
    		#{queryCondition.condStatuss[${index}],jdbcType=INTEGER}
    	</foreach></span>
    	</if>
    	<if test="queryCondition.merchantId != null">
    		and t1.merchant_id=#{queryCondition.merchantId,jdbcType=BIGINT}
    	</if>
    	    	<if test="queryCondition.stockId != null">
    		and t1.purchase_stock_id=#{queryCondition.stockId,jdbcType=BIGINT}
    	</if>
    	<if test="queryCondition.startTime != null">
    		 <![CDATA[ and DATE_FORMAT(t1.create_time, '%Y-%m-%d') >=  DATE_FORMAT(#{queryCondition.startTime}, '%Y-%m-%d')]]>
    	</if>
    	<if test="queryCondition.endTime != null">
    		 <![CDATA[ and DATE_FORMAT(t1.create_time, '%Y-%m-%d') <=  DATE_FORMAT(#{queryCondition.endTime}, '%Y-%m-%d')]]>
    	</if>
    	<if test="queryCondition.name != null and queryCondition.name != '' ">
    		and t1.name like CONCAT('%', #{queryCondition.name, jdbcType=VARCHAR}, '%')
    	</if>
    	<if test="queryCondition.deliverNo != null">
    		and t1.deliver_no like CONCAT('%', #{queryCondition.deliverNo, jdbcType=VARCHAR}, '%')
    	</if>
    </where>
    order by t1.create_time desc
  </select>

标红的地方,即为应用。在foreach循环中,引用index作为list的下标,这样即可将对象中的所有数据取出。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Mybatis查询多条记录并返回List集合的方法

    实体对象如下: /** 使用lobmok插件 */ @Getter @Setter @NoArgsConstructor @ToString @EqualsAndHashCode public class Vendor { private String vend_id; private String vend_name; private String vend_address; private String vend_city; private String vend_state; privat

  • MyBatis传入参数为List对象的实现

    SSM框架是JavaWeb必学的框架,虽说基本的增删改查很简单,但是当面临一些特殊情况时,有时还是会显得手足无措,此篇用来记录一些特殊场景下Mybatis框架的应用. 传入参数为List对象 1. 场景复现 首先有如下一张表: MySQL [test]> select * from t_entry_resource; +----+-------------+------+----------+--------+--------+---------------------+ | id | reso

  • mybatis动态插入list传入List参数的实例代码

    mybatis动态插入list的实例代码如下所述: <insert id="savePrpcitemkindList" parameterType="java.util.List"> insert into prpcitemkind (RISKCODE, ITEMKINDNO, FAMILYNO, FAMILYNAME, PROJECTCODE, CLAUSECODE, CLAUSENAME, KINDCODE, KINDNAME, ITEMNO, IT

  • Mybatis返回单个实体或者返回List的实现

    Mybatis 的强大之处之一体现在映射语句上,让我们可以使用简单的配置,就可以实现对参数和返回结果的映射. 实体 package com.test.User public class User{ private String userId; private String userName; private String userPassword; private Date createTime; ... setter getter.... } DAO public interface User

  • mybatis 批量将list数据插入到数据库的实现

    随着业务需要,有时我们需要将数据批量添加到数据库,mybatis提供了将list集合循环添加到数据库的方法.具体实现代码如下: 1.mapper层中创建 insertForeach(List < Fund > list) 方法,返回值是批量添加的数据条数 package com.center.manager.mapper; import java.util.List; import org.apache.ibatis.annotations.Mapper; import com.center.

  • 详解Mybatis 传递参数类型为List的取值问题

    问题描述: 参数传递为List时: 当传递一个 List 实例或者数组作为参数对象传给 Mybatis.此时,Mybatis 会自动将它包装在一个 Map 中,用名称在作为键.List 实例将会以"list" 作为键,而数组实例将会以"array"作为键.所以,当我们传递的是一个List集合时,mybatis会自动把我们的list集合包装成以list为Key值的map. DAO 层: List<User> selectUserByIDs( List ID

  • mybatis查询实现返回List<Map>类型数据操作

    如下所示: **只要设定resultType而不设定resultMap就可以了**: < select id = "selectByPage" parameterType = "java.util.Map" resultType="java.util.Map" > select rs.*, rssetting.*, cp.STOCK_CODE, cp.UNAME from RS rs left join T_COMPANY cp on

  • Mybatis传入List实现批量更新的示例代码

    Dao层写法 /** * 批量更新新库存 * @param list * @return */ int updateNewStock(@Param(value = "list") List<GreenBeanMsg> list); xml具体实现代码 <update id="updateNewStock" parameterType="java.util.List"> <foreach collection=&quo

  • mybatis配置对象包含对象以及List的方式

    mybatis配置对象包含对象及List 这里隐藏get set方法 public class BatchManagerViewVo implements Serializable{ /** * @Description: serialVersionUID : TODO */ private static final long serialVersionUID = 1L; private List<ResourcesItemDto> resourceItem; private List<

  • Mybatis配置返回为修改影响条数方式

    目录 Mybatis配置返回为修改影响条数 使用xml配置update语句返回影响的记录行数 解决办法 Mybatis配置返回为修改影响条数 mybatis执行update()方法默认返回为匹配的更新记录条数,现在需要将update()方法修改为与mysql执行一致返回影响条数,修改jdbc连接如下即可:添加useAffectedRows=true配置. jdbc:mysql://jdbc.host/{jdbc.db}?useAffectedRows=true 使用xml配置update语句返回

  • 基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)

    表单序列化类型的数据是指url传递的数据的格式,形如"key=value&key=value&key=value"这样的key/value的键值对.一般来说使用jQuery的$.fn.serialize函数能达到这样的效果.如何将这样的格式转化为对象? 我们知道使用jQuery的$.fn.serializeArray函数得到的是一个如下结构的对象 [ { name: "startTime" value: "2015-12-02 00:00:

  • 浅谈mybatis返回单一对象或对象列表的问题

    目录 mybatis返回单一对象或对象列表 一.说明 二.代码测试 UserMap.xml映射文件 dao文件UserMap.java 测试代码和结果文件 mybatis 返回的对象包含集合 mybatis返回单一对象或对象列表 一.说明 返回数据类型由dao中的接口和map.xml文件共同决定.另外,不论是返回单一对象还是对象列表,***map.xml中的配置都是一样的,都是resultMap="***Map"或resultType="* .* .*"类型. 每一

  • 使用MyBatis返回其它类对象的字段处理

    目录 MyBatis返回其它类对象的字段处理 需求 此时两种处理方式 MyBatis返回自定义字段接收 1.有时候需要查询的返回的结果不是javaBean的属性 2.DAO接口 3.后台取值 MyBatis返回其它类对象的字段处理 需求 在A.xml中联合查询A表所有字段及B表中的nikename字段,B表和A表没有关系但是和C表有关联,C表和A表有关联,其处理方式如下 1.sql先写好,比如当前只做A表所有符合条件的查询 SELECT * FROM sce_salegoods 2.取sce_u

  • mybatis实现表与对象的关联关系_动力节点Java学院整理

    所需要用到的其他工具或技术: 项目管理工具 : Maven 测试运行工具 : Junit 数据库 : Derby Maven Dependencies: <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.7</version> </dependen

  • Mybatis查询语句返回对象和泛型集合的操作

    Mybatis查询语句返回对象和泛型集合 EmpMapper映射接口: package cn.et.mybatis.lesson03; import java.util.List; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; public interface EmpMap

  • Mybatis 批量更新实体对象方式

    目录 Mybatis批量更新实体对象 (1)Dao层接口 (2)Mapper.xml 文件 Mybatis批量更新数据三种方法效率对比 探讨批量更新数据三种写法的效率问题 Mybatis批量更新实体对象 (1)Dao层接口 /** * 根据更新采购计划(批量) * @param plans */ void batchUpdatePlan(List<PubPurchasePlan> plans); (2)Mapper.xml 文件 <sql id="batchUpdatePlan

  • Spring通过配置文件管理Bean对象

    目录 一.Bean对象 二.存储Bean对象 1. 添加配置xml文件 2. 创建上下文 三.获取Bean对象 提示:以下是本篇文章正文内容,Java系列学习将会持续更新 一.Bean对象 Bean是Spring框架在运行时管理的对象, 是需要放置在Spring容器中进行管理的. Spring容器: BeanFactory接口(bean工厂)——> ApplicationContext接口(应用上下文)实现Spring容器的方法:基于xml文件.基于注解,我们接下来演示通过修改xml配置文件的方

  • 如何将mybatis配置到springmvc中

    MyBatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. 为了更方便的连接数据库,将mybatis配置到springMVC中 1).  首先是jar包    多了3个jar  dr

随机推荐