Mybatis一对多查询resultMap示例

几个实体说明,get set方法省略

1.最终返回list<CustomersTable>

private static final long serialVersionUID = 8405954804351004292L;

	private String customerId;
	
	private String customerName;
	
	private List<CustomerTel> customerTels;
	
	private Integer source;
	
	private PurchaseIntention purchaseIntention;
	
	private List<Transcations> transcations;
	
	private String serverName;
	
	private String serverOrg;
	
	private String sourceName;
	
	private String sourcePhone;
	
	private String userID;


CustomerTel实体:

        private Integer customerTelId;
	
	private String customerTel;
	
	private String phone;
PurchaseIntention实体:

        private Integer purposeId;
	
	private String totalPrice;
	
	private String counties;
	
	private String houseType;
Transcations实体

private static final long serialVersionUID = 8993887463088848093L;

	private Integer transcationId;
	
	private Integer buildingHousingId;
	
	private String buildingHousingName;
	
	private Integer isTeam;
	
	private Integer status;
	
	private String type;
	
	private List<LogJsonEntity> logJsons;
	
	private String sourceName;
	
	private String sourcePhone;

实现:

mybatis配置文件+mapper中的resultmap配置

<resultMap type="CustomersTable" id="ResultList">
<!--     	<constructor>   -->
<!-- 	    </constructor> -->
	    
    	<id property="userID" column="userID"></id>
    	
        <result property="customerId" column="customerId" />
        <result property="customerName" column="customerName" />
        <result property="source" column="source" />
        
        <association property="purchaseIntention" column="purchaseIntention" javaType="com.bean.pojo.PurchaseIntention">
        	<id property="purposeId" column="purposeId"/>  
	        <result property="totalPrice" column="totalPrice"/>  
	        <result property="counties" column="counties"/> 
        </association>
        
        <collection property="customerTels" ofType="com.bean.pojoCustomerTel">  
	        <id property="customerTelId" column="customerTelId"/>  
	        <result property="customerTel" column="customerTel"/>  
	        <result property="phone" column="phone"/>  
    	</collection>
    	
        <collection property="transcations" ofType="Transcations">
        	<id property="transcationId" column="transcationId"/>  
	        <result property="buildingHousingId" column="buildingHousingId"/>
	        <result property="buildingHousingName" column="buildingHousingName"/>
	        <result property="isTeam" column="totalPrice"/>
	        <result property="status" column="status"/>  
	        <result property="type" column="type"/>
	        <collection property="logJsons" ofType="LogJson">
	        	<id property="logId" column="logId"></id>
	        	<result property="logJson" column="logJson"></result>
	        </collection>
        </collection>
<!--         <discriminator javaType="LogJsonEntity"> -->
<!--         	<case value=""></case> -->
<!--         </discriminator> -->
        
    </resultMap>


注意:The content of element type "resultMap" must match "(constructor?,id*,result*,association*,collection*,discriminator?)".
必须按照
constructor-->id-->result--->association。。。顺序写入


SQL:

     <select id="queryList" resultMap="<span style="font-family: Arial, Helvetica, sans-serif;">ResultList</span><span style="font-family: Arial, Helvetica, sans-serif;">" ></span>
		SELECT 
			....		
    </select>

结果:

{
code: "0",
msg: "success",
data: [
{
customerId: "00000870",
customerName: "HYS1321516t83",
userID: "HYS001491",
customerTels: [
{
id: 859,
phone: "13215151515"
}
],
purchaseIntention: "",
transcations: [
{
transcationId: "2374",
buildingHousingId: "104",
buildingHousingName: "(巫)",
isTeam: "0",
status: "140",
type: "new",
logJsons: [
{
time: "1445932243435",
status: "140"
},
{
time: "1445932116275",
status: "101"
},
{
time: "1445932116290",
status: "130"
}
]
},
{
transcationId: "2373",
buildingHousingId: "104",
buildingHousingName: "(巫)",
isTeam: "0",
status: "130",
type: "new",
logJsons: [
{
time: "1445931966483",
status: "101"
},
{
time: "1445931966521",
status: "130"
}
]
}
],
source: "5",
serverName: "AP",
serverOrg: "中心"
}
]
}





假设有两个表,一个是订单表(order),一个是订单详情表(order_item),一个订单可以对应多个订单详情,可以用 MyBatis一对多查询来实现。 首先需要创建两个实体类 Order 和 OrderItem,分别对应数据库的两个表。 Order 实体类: ```java public class Order { private Integer id; private String orderNo; private Date createTime; private List<OrderItem> orderItems; // getter,setter 略 } ``` OrderItem 实体类: ```java public class OrderItem { private Integer id; private Integer orderId; private String productName; private Integer productCount; // getter,setter 略 } ``` 然后在 OrderMapper.xml 中定义一对多查询的 SQL 语句: ```xml <select id="getOrderWithItems" resultMap="orderWithItems"> SELECT o.id, o.order_no, o.create_time, i.id AS item_id, i.order_id, i.product_name, i.product_count FROM `order` o LEFT JOIN order_item i ON o.id = i.order_id WHERE o.id = #{id} </select> <resultMap id="orderWithItems" type="Order"> <id property="id" column="id" /> <result property="orderNo" column="order_no" /> <result property="createTime" column="create_time" /> <collection property="orderItems" ofType="OrderItem" resultMap="orderItemResult" /> </resultMap> <resultMap id="orderItemResult" type="OrderItem"> <id property="id" column="item_id" /> <result property="orderId" column="order_id" /> <result property="productName" column="product_name" /> <result property="productCount" column="product_count" /> </resultMap> ``` 在上面的 SQL 语句中,使用了左连接来查询订单以及对应的订单详情,其中 o 表示订单表,i 表示订单详情表。通过在 Order 实体类中添加一个 List 类型的属性 orderItems,来保存一对多查询的结果。 最后,在 OrderMapper 接口中定义 getOrderWithItems 方法: ```java public interface OrderMapper { Order getOrderWithItems(Integer id); } ``` 通过调用 getOrderWithItems 方法,就能够得到一个订单以及它对应的多个订单详情的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值