首页 > 学院 > 开发设计 > 正文

mybatis一对一,一对多,多对多的关联查询

2019-11-08 03:25:06
字体:
来源:转载
供稿:网友
mybatis中一对一,一对多,多对多的处理:http://www.cnblogs.com/yaobolove/p/5444046.htmlhttp://www.360doc.com/content/14/0205/21/834950_350059484.shtmlhttp://www.cnblogs.com/junge/p/5145881.html一对一: 使用association<association PRoperty="teacher" javaType="Teacher">   一对多和多对多:collection  <collection property="orders" ofType="com.yc.m.Orders">  注意:相同字段要设置别名如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。级联查询的时候,主表和从表有一样的字段名的时候,在MySQL上命令查询是没问题的。

但在mybatis中主从表需要为相同字段名设置别名。设置了别名就OK了。

一对多关联查询示例:一个角色对应多个权限

<resultMap id="rolePowerMap" type="com.lakala.creditloan.manager.model.Role">	    <id column="roleId" property="roleId" jdbcType="INTEGER" />		<result column="ROLE_NAME" property="roleName" jdbcType="VARCHAR" />		<result column="rdescri" property="describe" jdbcType="VARCHAR" />		<collection property="powerlist"  ofType="com.lakala.creditloan.manager.model.Power">		    <id column="powerid" property="id" jdbcType="INTEGER" />		    <result column="POWER_NAME" property="powerName" jdbcType="VARCHAR" />		    <result column="ACTION_URL" property="actionUrl" jdbcType="VARCHAR" />		    <result column="PID" property="pid" jdbcType="INTEGER" />		    <result column="LV" property="lv" jdbcType="INTEGER" />		    <result column="ACTION_TYPE" property="actionType" jdbcType="INTEGER" />		    <result column="pdescri" property="descri" jdbcType="VARCHAR" />        </collection>	</resultMap>

<select id="selectByRoleId" parameterType="java.lang.Integer" resultMap="rolePowerMap">		  select r.ID roleId,r.ROLE_NAME,r.DESCRI rdescri,			     p.ID powerid,p.POWER_NAME,p.ACTION_URL,p.ACTION_URL,p.PID,p.LV,p.ACTION_TYPE,p.DESCRI pdescri			from rcs_role  r 			     left  join rcs_role_power rp on r.id=rp.ROLE_ID 			     left  join rcs_power p on p.ID=rp.POWER_ID  			where r.ID=#{roleId,jdbcType=INTEGER}	</select>


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表