ssm框架多表查询多对多的方法

多表查询多对多的查询方法和一对多的查询方法相同!!!

注意事项;

  1. 不用纠结中间表,但是中间表中不能有除了外键列的其他数据,因为写了也没用,查询不到,把需要展示的字段都写在实体双方;
  2. 新增的集合属性需要设置get set 方法,要不然前台获取不到对方的值
  3. 在多对多的查询中,尽量不要使用连接查询,改为使用子查询,避免出现分页条数不对的问题;
  4. 可以选择双方的任一方写查询语句,得到的结果是相同的,所以不用纠结怎么糅合到一个查询方法里

1.连接查询

 
<select id="getAllWithDrugs" resultMap="JoinDrug">
        SELECT l.liveid,l.livename,d.drugName,l.totalNeed,l.alreadyGive,l.stillNeed
         FROM liveh l INNER JOIN drugpeoplemiddle m ON l.liveid=m.peopleid INNER JOIN drugh d ON m.drugid=d.drugid

</select>
<!--连接查询-->
  <resultMap id="JoinDrug" type="com.zhao.pojo.Liveh" extends="BaseResultMap">
    <collection property="drugs" resultMap="com.zhao.mapper.DrughMapper.BaseResultMap"></collection>
  </resultMap>

 2.子查询

<select id="getAllWithDrugs" resultMap="JoinDrug">
        SELECT l.liveid,l.livename,d.drugName,l.totalNeed,l.alreadyGive,l.stillNeed
         FROM liveh l INNER JOIN drugpeoplemiddle m ON l.liveid=m.peopleid INNER JOIN drugh d ON m.drugid=d.drugid

</select>
  <!--<resultMap id="JoinDrug" type="com.zhao.pojo.Liveh" extends="BaseResultMap">
    <collection property="drugs" resultMap="com.zhao.mapper.DrughMapper.BaseResultMap"></collection>
  </resultMap>-->
//子查询
  <resultMap id="JoinDrug" type="liveh" extends="BaseResultMap">
    <collection property="drugs" ofType="drugh" select="com.zhao.mapper.DrughMapper.selectByPrimaryKey" column="liveid"></collection>
  </resultMap>

关于如何使用子查询的方法我放到另一篇博客里,目的是为了帮助那些查询条数不对的朋友更快的找到答案

给点个赞哦

猜你喜欢

转载自blog.csdn.net/love_yr/article/details/121367560