项目中遇到联表查询,使用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