sql语句执行结果对返回值的影响

java程序通过ibatis框架与数据库通信时,dao层代码片段如下:

public List<Branch> branchsSelect(){
		List<Branch> list = null;
		SqlSession session = this.sessionFactory.openSession();
		list = session.selectList("gc.branchs");
		return list;
	}

方法返回值是一个存储内容为Branch的List型数据,这里Branch类代码片段如下:

public class Branch implements Serializable{
	private String area_code;//地区代号
	private String bank_code;//银行代码
	private String business_org;//营业机构号
	private String card_org_code;//发卡机构代码
	private String fabrication_center_code;//制卡中心代码
	private String out_tube_code;//外管代码
	private String org_manage_lev;//机构管理级别
	private String org_business_lev;//机构营业级别
	private String org_vcher_lev;//机构凭证级别
	private String acct_cycle;//出帐周期
	private String manage_higher;//管理上级	
	private String acct_higher;//帐务上级
	private String vcher_higher;//凭证上级
	private String province_code;//省区代号
	private String money_higher;//现金上级
	private String check_org_flag;//稽核机构标志
	private String org_type;//机构类型
	private String alone_acct_flag;//独立核算标志
	private String org_china_name;//机构中文名称


ibatis框架的配置文件片段如下:

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="gc">

...

<select id="branchs" resultType="Branch">
		SELECT B.BUSINESS_ORG,B.ORG_CHINA_NAME
		FROM BMC_BRANCH B
		WHERE B.ORG_MANAGE_LEV = 1
	</select>
</mapper>


这里的sql语句执行结果,只取了 B.BUSINESS_ORG和B.ORG_CHINA_NAME两列,resultType属性是定义返回值的,这里定义的返回值类型是Branch, 我的猜想结果是:由于sql只取了两列,所以返回的List<Branch>中,Branch只有相对应的两个属性有数据(busniess_org   和  org_china_name)而其他属性的结果为空。

 

 

在前端显示页可以验证猜想结果:

s2的action中应用了RequestAware接口,我们把对数据库的操作结果put到request中:

public class GCSubplateAction extends ActionSupport implements SessionAware,
		RequestAware {

...

Map<String,Object> request;

...

@Override
public void setRequest(Map<String, Object> arg0) {
		// TODO Auto-generated method stub
		request = arg0;
	}

...


request.put("branchs",XXX.branchsSelect());


在前段页面中, 应用s2标签显示request中内容:

<s:property value="#request.branchs[0].business_org"/>    (1)

<s:property value="#request.branchs[0].org_china_name"/>  (2)

<s:property value="#request.branchs[0].bank_code"/>  (3)


(1)(2)有内容   (3)为空

把sql修改一下:

 

<select id="branchs" resultType="Branch">
		SELECT *		
		FROM BMC_BRANCH B
		WHERE B.ORG_MANAGE_LEV = 1
</select>

猜想:由于select * 所以每一个属性都会有值,在前端运行结果如下:

(1)(2)(3)均有内容  

 

 

猜想正确

 


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章