我使用的是mysql数据库,映射2个实体对象:Account ,BankWater
mybaits调用的时候需要使用resultMap属性
由于mysql数据库支持存储过程使用select返回结果集,所以这里没有写out传入参数
<resultMap type="com.kay.entity.Account" id="account">
<id column="account_id" property="accountId"/>
<result column="account_name" property="accountName" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result column="currency" property="currency" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result column="balance" property="balance" javaType="java.math.BigDecimal" jdbcType="DECIMAL"/>
<result column="open_date" property="openTime" javaType="java.util.Date" jdbcType="DATE"/>
<result column="open_place" property="openPlace" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result column="account_state" property="accountState" javaType="java.lang.String" jdbcType="VARCHAR"/>
</resultMap>
<resultMap type="com.kay.entity.BankWater" id="bankwater">
<id column="record_id" property="recordId"/>
<result column="in_account" property="inAccount" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result column="out_account" property="outAccount" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result column="change_count" property="changeCount" javaType="java.math.BigDecimal" jdbcType="DECIMAL"/>
<result column="change_time" property="changeTime" javaType="java.util.Date" jdbcType="DATE"/>
<result column="state" property="changeState" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result column="detail" property="detail" javaType="java.lang.String" jdbcType="VARCHAR"/>
</resultMap>
<select id="getAllInfo" statementType="CALLABLE" resultMap="account,bankwater" >
{call pro_getinfo()
}
</select>
java调用时:
//查询所有记录的存储过程
String s1="com.kay.dao.GetMapper.getAllInfo";
List<List<?>> list1=session.selectList(s1);
//对应第一个表
System.out.println((List<Account>)list1.get(0));
//对应第二个表
System.out.println((List<Account>)list1.get(1));