1个回答
展开全部
可以通过关系映射查询出来 请看下面
在mybatis中,没有级联的概念,但是可以利用集合来实现类似的功能。
mybatis3.0添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多个相关实体类数据的级联保存和级联删除操作。因此在进行实体类多对多映射表设计时,需要专门建立一个关联对象类对相关实体类的关联关系进行描述。
插入关联表:
<insert id="insertWife" useGeneratedKeys="true" keyProperty="wid" parameterType="com.cssl.pojo.Wife">
insert into wife (name,h_id) values (#{name},#{husband.hid})
</insert>
关联映射:嵌入式、继承式 引入式等
先在数据库建立好主外键关系
在xml里面写一个resultMap作为返回类型,如果是多对一 用association 一对多用collection
例子
<!-- 多对一 -->
<resultMap id="wifeandhusband" type="wife">
<id property="wid" column="wid"></id>
<result property="wname" column="wname"></result>
<association property="husband" column="w_hid" javaType="com.cssl.pojo.Husband">
<id property="hid" column="hid"></id>
<result property="name" column="name"></result>
</association>
</resultMap>
<!-- 一对多 -->
<resultMap id="husbandandwife" type="com.cssl.pojo.Husband">
<id property="hid" column="hid"></id>
<result property="name" column="name"></result>
<collection property="wifes" ofType="wife"> --ofType集合中的类型
<id property="wid" column="wid"></id>
<result property="wname" column="wname"></result>
</collection>
</resultMap>
<select id="selectWife" resultMap="wifeandhusband">
select w.*,h.* from wife w left join husband h on w.h_id=h.hid
</select>
注意:
1、关联查询一定要带有关联对象的id(主外键),否则集合只会有一条记录存在(认为你查询的是一个对象)
如:
select h.name,h.age,w.wname from wife w left join husband h on h.hid=w.h_id
2、表连接中不同表有同名字段的时候:a和b都有name字段
<resultMap type="b" id="b">
<id property="bid" column="id"/>
<result property="name" column="name"/>
<association property="a" javaType="a">
<id property="aid" column="aid"/>
<result property="name" column="aname"/>
</association>
</resultMap>
<select id="select" resultMap="b">
select a.id aid,a.name aname,b.id,b.name from a,b where a.id=b.id
</select>
在mybatis中,没有级联的概念,但是可以利用集合来实现类似的功能。
mybatis3.0添加了association和collection标签专门用于对多个相关实体类数据进行级联查询,但仍不支持多个相关实体类数据的级联保存和级联删除操作。因此在进行实体类多对多映射表设计时,需要专门建立一个关联对象类对相关实体类的关联关系进行描述。
插入关联表:
<insert id="insertWife" useGeneratedKeys="true" keyProperty="wid" parameterType="com.cssl.pojo.Wife">
insert into wife (name,h_id) values (#{name},#{husband.hid})
</insert>
关联映射:嵌入式、继承式 引入式等
先在数据库建立好主外键关系
在xml里面写一个resultMap作为返回类型,如果是多对一 用association 一对多用collection
例子
<!-- 多对一 -->
<resultMap id="wifeandhusband" type="wife">
<id property="wid" column="wid"></id>
<result property="wname" column="wname"></result>
<association property="husband" column="w_hid" javaType="com.cssl.pojo.Husband">
<id property="hid" column="hid"></id>
<result property="name" column="name"></result>
</association>
</resultMap>
<!-- 一对多 -->
<resultMap id="husbandandwife" type="com.cssl.pojo.Husband">
<id property="hid" column="hid"></id>
<result property="name" column="name"></result>
<collection property="wifes" ofType="wife"> --ofType集合中的类型
<id property="wid" column="wid"></id>
<result property="wname" column="wname"></result>
</collection>
</resultMap>
<select id="selectWife" resultMap="wifeandhusband">
select w.*,h.* from wife w left join husband h on w.h_id=h.hid
</select>
注意:
1、关联查询一定要带有关联对象的id(主外键),否则集合只会有一条记录存在(认为你查询的是一个对象)
如:
select h.name,h.age,w.wname from wife w left join husband h on h.hid=w.h_id
2、表连接中不同表有同名字段的时候:a和b都有name字段
<resultMap type="b" id="b">
<id property="bid" column="id"/>
<result property="name" column="name"/>
<association property="a" javaType="a">
<id property="aid" column="aid"/>
<result property="name" column="aname"/>
</association>
</resultMap>
<select id="select" resultMap="b">
select a.id aid,a.name aname,b.id,b.name from a,b where a.id=b.id
</select>
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询