1. 程式人生 > >Mybatis一對多查詢resultMap示例

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: "中心"
}
]
}