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)均有內容
猜想正確