mybatis一对一,一对多 xml配置

项目中遇到联表查询,使用mybatis框架,拼写完sql后,执行查询结果为空,在sqlplus中执行不为空,于是查看配置文件,如下。

    <resultMap type="com.dtjc.agricultural.Agricultural" id="allocatinglandResult">
		<id column="GD_GUID" property="GD_GUID"/>
		<result property="ROWNUM" column="ROWNUM" />
		<result property="XZQ_DM" column="XZQ_DM" />
		<result property="XM_MC" column="XM_MC" />
		<result property="GD_GUID" column="GD_GUID" />
		<result property="PZ_WH" column="PZ_WH" />
		<result property="GD_ZMJ" column="GD_ZMJ" />
		<result property="GY_MJ" column="GY_MJ" />
		<result property="XM_ZT" column="XM_ZT" />
		<result property="PZ_RQ" column="PZ_RQ" />		
		<result property="ZD_GUID" column="ZD_GUID" />
		<result property="PZ_JG" column="PZ_JG" />
		<result property="GY_FS" column="GY_FS" />
		<result property="ZD_BH" column="ZD_BH" />
		<association property="allocatinglandTable"  column="GD_GUID" javaType="com.dtjc.agricultural.Allocatingland">
			<id column="GD_GUID" property="GD_GUID"/>
			<result column="SYQR" property="SYQR"/>
		</association>
	</resultMap>

这里涉及到多表关联查询,在sqlplu中执行如下sql

		SELECT
			A.XZQ_DM  AS XZQ_DM,
			A.XM_MC   AS XM_MC,
			A.GD_GUID AS GD_GUID,
			A.PZ_WH   AS PZ_WH,
			A.GD_ZMJ  AS GD_ZMJ,
			A.GY_MJ   AS GY_MJ,
			A.XM_ZT   AS XM_ZT,
			A.PZ_RQ   AS PZ_RQ,
			A.ZD_GUID AS ZD_GUID,
			A.PZ_JG   AS PZ_JG,
			A.GY_FS   AS GY_FS,
			A.ZD_BH   AS ZD_BH,
			B.SYQR    AS SYQR
		FROM T_GDXM A,T_HBGY_KZ B 
		WHERE A.GD_GUID=#{gdGuid} 
		      AND  A.GD_GUID = B.GD_GUID

执行返回结果集不为空。

排查后问题出在

		<association property="allocatinglandTable"  column="GD_GUID" javaType="com.dtjc.agricultural.Allocatingland">
			<id column="GD_GUID" property="GD_GUID"/>
			<result column="SYQR" property="SYQR"/>
		</association>

这里 一对一关联 用 association 关键字,property=“allocatinglandTable” 是实体类中的对应名字,column=“GD_GUID” 表关联的列名,关键点就是property 和 column 的值写对了。
实体类代码如下

package com.jefry;

public class Agricultural {
	public String getXM_MC() {
		return XM_MC;
	}
	public void setXM_MC(String xM_MC) {
		XM_MC = xM_MC;
	}
	public String getXZQ_DM() {
		return XZQ_DM;
	}
	public void setXZQ_DM(String xZQ_DM) {
		XZQ_DM = xZQ_DM;
	}
	public String getGD_GUID() {
		return GD_GUID;
	}
	public void setGD_GUID(String gD_GUID) {
		GD_GUID = gD_GUID;
	}
	public String getZD_GUID() {
		return ZD_GUID;
	}
	public void setZD_GUID(String zD_GUID) {
		ZD_GUID = zD_GUID;
	}
	public String getTD_JB() {
		return TD_JB;
	}
	public void setTD_JB(String tD_JB) {
		TD_JB = tD_JB;
	}
	public String getBH() {
		return BH;
	}
	public void setBH(String bH) {
		BH = bH;
	}
	public String getGD_ZMJ() {
		return GD_ZMJ;
	}
	public void setGD_ZMJ(String gD_ZMJ) {
		GD_ZMJ = gD_ZMJ;
	}
	public String getXM_ZT() {
		return XM_ZT;
	}
	public void setXM_ZT(String xM_ZT) {
		XM_ZT = xM_ZT;
	}
	public String getPZ_RQ() {
		return PZ_RQ;
	}
	public void setPZ_RQ(String pZ_RQ) {
		PZ_RQ = pZ_RQ;
	}
	public String getTD_ZL() {
		return TD_ZL;
	}
	public void setTD_ZL(String tD_ZL) {
		TD_ZL = tD_ZL;
	}

	private String 	XM_MC;

	private String 	XZQ_DM;
	private String 	GD_GUID;
	private String 	ZD_GUID;
	private String 	TD_JB;
	private String 	BH;
	private String 	GD_ZMJ; 
	private String 	XM_ZT;
	private String 	PZ_RQ; 
	private String 	TD_ZL; 
	private String 	ROWNUM;
	public String getPZ_WH() {
		return PZ_WH;
	}
	public void setPZ_WH(String pZ_WH) {
		PZ_WH = pZ_WH;
	}
	public String getGY_MJ() {
		return GY_MJ;
	}
	public void setGY_MJ(String gY_MJ) {
		GY_MJ = gY_MJ;
	}
	private String 	PZ_WH;
	private String 	GY_MJ;

	public String getROWNUM() {
		return ROWNUM;
	}
	public void setROWNUM(String rOWNUM) {
		ROWNUM = rOWNUM;
	}
	private String 	PZ_JG;
	public String getPZ_JG() {
		return PZ_JG;
	}
	public void setPZ_JG(String pZ_JG) {
		PZ_JG = pZ_JG;
	}
	private String 	GY_FS;
	public String getGY_FS() {
		return GY_FS;
	}
	public void setGY_FS(String gY_FS) {
		GY_FS = gY_FS;
	}
	private String 	ZD_BH;
	public String getZD_BH() {
		return ZD_BH;
	}
	public void setZD_BH(String zD_BH) {
		ZD_BH = zD_BH;
	}
	private Allocatingland allocatinglandTable;
	public Allocatingland getAllocatingland() {
		return allocatinglandTable;
	}
	public void setAllocatingland(Allocatingland allocatingland) {
		this.allocatinglandTable = allocatingland;
	}

	
}

实体类中的
private Allocatingland allocatinglandTable;
和 xml配置文件名字要对应

一对多的时候 xml这样写

		  <collection property="callrecordSet" column="mobile_noid" ofType="Callrecord">	
		  		  
		  		  <result property="callNoid" column="call_noid"/>   
			      <result property="callPasstive" column="call_passtive"/>
			      <result property="callDuration" column="call_duration"/>
			 
	    </collection>

参考 代码 链接

https://download.csdn.net/download/guoruijun_2012_4/10714065

https://github.com/knowledge0603/mybatis

猜你喜欢

转载自blog.csdn.net/guoruijun_2012_4/article/details/83000821