package cn.labelnet.pojo;
/**
* 经营信息扩展类,满足查询语句 : select
* fo.*,fc.username,fc.born_date,fc.family_register_address from f_operation
* fo,f_client fc where fo.client_id=fc.id; 经营信息的所有信息和客户的姓名,生日,家庭住址 描述:
* 使用resultmap进行映射,扩展经营信息类 作者 :原明卓 时间 :2015年12月23日 上午10:36:04 版本 :1.0
*/
public class OperationCustionMap extends Operation {
// 直接将客户信息映射到Client属性中
private Client client;
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
}
public List findOPerationClientMap() throws Exception;
@Test
public void findOPerationClientMap() throws Exception {
SqlSession session=sqlFactory.openSession();
OperationMapper om = session.getMapper(OperationMapper.class);
List list = om.findOPerationClientMap();
for (OperationCustionMap oper : list) {
System.out.print(oper.getLegal_person_name()+" | ");
System.out.println(oper.getClient());
}
}
使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加对应列名,来完成映射;建议使用resultType ; resultMap有些麻烦,如果有对查询结果有特殊要求,使用resultMap可以完成将关联查询映射到pojo属性中;其中resultMap可以实现延迟加载,而resultType无法实现;
import java.util.List;
/**
* 查询经营场所及其客户信息和客户资产信息
* 描述:经营信息拓展类,查询经营信息,客户信息,资产信息
* 作者 :原明卓
* 时间 :2015年12月23日 下午4:35:53
* 版本 :1.0
*/
public class OperationCustionAssetMap extends Operation {
// 直接将客户信息映射到Client属性中
private Client client;
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
//资产信息
private List assets;
public List getAssets() {
return assets;
}
public void setAssets(List assets) {
this.assets = assets;
}
}
public List findOPerationClientAsset() throws Exception;
@Test
public void findOPerationClientAsset() throws Exception {
SqlSession session=sqlFactory.openSession();
OperationMapper om = session.getMapper(OperationMapper.class);
List list = om.findOPerationClientAsset();
for (OperationCustionAssetMap oper : list) {
System.out.println("---------------------------------------");
System.out.println(oper.getId()+" | ");
System.out.println(oper.getAssets().size()+" | ");
System.out.println(oper.getClient());
}
}
mybatis使用resultMap的collection对关联查询的多条记录映射到一个list集合属性中;
/**
*客户信息实体拓展类
* cn.labelnet.pojo
* 描述 :TODO
*
*
作者:原明卓
* 时间:2015年12月23日 下午8:24:35
*/
public class ClientCustom extends Client{
//一个客户有包含多条经营信息
private List operationCustom;
public List getOperationCustom() {
return operationCustom;
}
public void setOperationCustom(List operationCustom) {
this.operationCustom = operationCustom;
}
}
package cn.labelnet.pojo;
import java.util.List;
/**
* 经营信息拓展实体类
* cn.labelnet.pojo
* 描述 :TODO
*
*
作者:原明卓
* 时间:2015年12月23日 下午8:25:46
*/
public class OperationCustionCreditMap extends Operation{
//一条经营信息有多条资产信息
private List assetCustoms;
public List getAssetCustoms() {
return assetCustoms;
}
public void setAssetCustoms(List assetCustoms) {
this.assetCustoms = assetCustoms;
}
}
/**
* 资产拓展类
* cn.labelnet.pojo
* 描述 :包含一条资产认证信息
*
*
作者:原明卓
* 时间:2015年12月23日 下午8:26:38
*/
public class AssetCustom extends Asset{
//一条资产信息,对应一条授权信息
private Credit credit;
public Credit getCredit() {
return credit;
}
public void setCredit(Credit credit) {
this.credit = credit;
}
}
/**
* 店面资产授权认证实体类
* cn.labelnet.pojo
* 描述 :TODO
*
*
作者:原明卓
* 时间:2015年12月23日 下午7:15:25
*/
public class Credit {
private int id;
private int assetId;
private int nowCreditLimit;
private int frozenLimit;
private Date updateTime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAssetId() {
return assetId;
}
public void setAssetId(int assetId) {
this.assetId = assetId;
}
public int getNowCreditLimit() {
return nowCreditLimit;
}
public void setNowCreditLimit(int nowCreditLimit) {
this.nowCreditLimit = nowCreditLimit;
}
public int getFrozenLimit() {
return frozenLimit;
}
public void setFrozenLimit(int frozenLimit) {
this.frozenLimit = frozenLimit;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "Credit [id=" + id + ", assetId=" + assetId
+ ", nowCreditLimit=" + nowCreditLimit + ", frozenLimit="
+ frozenLimit + ", updateTime=" + updateTime + "]";
}
}
//多对多查询
public List findClientCredit() throws Exception;
@Test
public void findClientCredit() throws Exception {
SqlSession session=sqlFactory.openSession();
OperationMapper om = session.getMapper(OperationMapper.class);
List list = om.findClientCredit();
for (ClientCustom cc : list) {
System.out.println("--------------------------");
System.out.println("姓名:" + cc.getUsername());
List oc = cc.getOperationCustom();
for (OperationCustionCreditMap occ : oc) {
System.out.println("经营信息:"+occ);
List acs = occ.getAssetCustoms();
for (AssetCustom ac : acs) {
System.out.println("资产信息:"+ac+" | 资产授权信息 : "+ac.getCredit());
}
}
}
}
//延迟加载
OperationCustionClientMap lazyLoadingOperation(int id) throws Exception;
@Test
public void testTazyLoadingOperation() throws Exception {
SqlSession session=sqlFactory.openSession();
OperationMapper om = session.getMapper(OperationMapper.class);
OperationCustionClientMap occm = om.lazyLoadingOperation(1);
System.out.println("经营信息 :"+occm);
System.out.println("经营的客户信息:"+occm.getClient());
}
配置延迟加载:SqlMapConfig.xml
//打开延迟加载的开关
//将积极加载改为消极加载及按需加载
http://download.csdn.net/detail/lablenet/9374675