浏览 5498 次
锁定老帖子 主题:关于ibatis的联表查询的映射
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-13
现在的问题是role_operation表中有一个appType的列,同时operation的表中也有一个appType的列。我想通过查询结果与Bean的映射,将role_operation中的appType的值映射给相应的operation中的appType。 现在sql大概是这样: <select id="selectRoleByRoleId" resultMap="RoleResult"> select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE, o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r, ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and r.ROLEID = ro.ROLEID and r.ROLEID= #value# </select> 将来的sqlMap文件中不知道怎么写,下面是试验过的写法会报错,不过里面的红色字体表明我想达到的效果: <resultMap class="com.tongcard.operation.web.model.Role" groupBy="roleId" id="abatorgenerated_RoleResult"> <!-- WARNING - This element is automatically generated by Abator for iBATIS, do not modify. This element was generated on Sun Apr 22 15:16:17 CST 2007. --> <result column="ROLEID" jdbcType="DECIMAL" property="roleId" /> <result column="ROLENAME" jdbcType="VARCHAR" property="roleName" /> <result column="APPTYPE" jdbcType="DECIMAL" property="appType" /> <result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" /> </resultMap> <resultMap class="com.tongcard.operation.web.model.Role" groupBy="roleId" id="RoleResult"> <result column="ROLEID" jdbcType="DECIMAL" property="roleId" /> <result column="ROLENAME" jdbcType="VARCHAR" property="roleName" /> <result column="APPTYPE" jdbcType="DECIMAL" property="appType" /> <result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" /> <result resultMap="DEVELOPER_ADMIN_ROLES.operationResult" property="opers" /> </resultMap> <resultMap class="com.tongcard.operation.web.model.Operation" id="operationResult"> <result column="OPCODE" jdbcType="VARCHAR" property="opCode" /> <result column="OPDETAIL" jdbcType="VARCHAR" property="opDetail" /> <result column="PARENTCODE" jdbcType="VARCHAR" property="parentCode" /> <result column="RO.APPTYPE" jdbcType="DECIMAL" property="appType" /> </resultMap> 不知道讲明白没有,谢谢大家。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-13
sql与sqlMap不知道哪里写错了。我对ibatis的底层映射原理不是太明白,怎么通过ResultSetMetaData就能将相应的列遇到到相应的bean属性上。难道是sql中a.b,将来就会自动的找到a这个对象,并赋给对象中的b属性吗?题外话,希望高手一并解答一下。
|
|
返回顶楼 | |
发表时间:2007-08-13
自已给自己解答吧。
只需要将sql变成: <select id="selectRoleByRoleId" resultMap="RoleResult"> select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE, o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r, ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and r.ROLEID = ro.ROLEID and r.ROLEID= #value# </select> 然后将配置文件变成: <select id="selectRoleByRoleId" resultMap="RoleResult"> select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE, o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r, ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and r.ROLEID = ro.ROLEID and r.ROLEID= #value# </select> 将来的sqlMap文件中不知道怎么写,下面是试验过的写法会报错,不过里面的红色字体表明我想达到的效果: <resultMap class="com.tongcard.operation.web.model.Role" groupBy="roleId" id="abatorgenerated_RoleResult"> <!-- WARNING - This element is automatically generated by Abator for iBATIS, do not modify. This element was generated on Sun Apr 22 15:16:17 CST 2007. --> <result column="ROLEID" jdbcType="DECIMAL" property="roleId" /> <result column="ROLENAME" jdbcType="VARCHAR" property="roleName" /> <result column="APPTYPE" jdbcType="DECIMAL" property="appType" /> <result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" /> </resultMap> <resultMap class="com.tongcard.operation.web.model.Role" groupBy="roleId" id="RoleResult"> <result column="ROLEID" jdbcType="DECIMAL" property="roleId" /> <result column="ROLENAME" jdbcType="VARCHAR" property="roleName" /> <result column="APPTYPE" jdbcType="DECIMAL" property="appType" /> <result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" /> <result resultMap="DEVELOPER_ADMIN_ROLES.operationResult" property="opers" /> </resultMap> <resultMap class="com.tongcard.operation.web.model.Operation" id="operationResult"> <result column="OPCODE" jdbcType="VARCHAR" property="opCode" /> <result column="OPDETAIL" jdbcType="VARCHAR" property="opDetail" /> <result column="PARENTCODE" jdbcType="VARCHAR" property="parentCode" /> <result column="ROAPPTYPE" jdbcType="DECIMAL" property="appType" /> </resultMap> 就可以啦。 |
|
返回顶楼 | |