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)均有內容  

 

 

猜想正確

 


 

 

 

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