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)均有内容
猜想正确