开发者社区> 问答> 正文

如何向resultMap中的collection中配置的select传递条件 : 配置报错 

Mybatis 3.2.7 +Mysql 做一个小项目

现在需求是图书和作者多对多关系,配置了一个中间表 图书的resultMap中有一个作者的collection,现在有条件查询,需要根据作者查书,又涉及到分页。。

直接多表联合查询,因为图书和作者是多对多关系,有重复数据,分页做不好,就考虑用嵌套查询。嵌套查询作者的id不知道怎么传递给collection了,各位帮帮忙,看看有什么办法结局~谢谢。
附上源码:

 <resultMap id="BaseResultMap" type="cn.edu.bjut.zj.tims.entity.BookExtend" >     <id column="BOOKID" property="bookid" jdbcType="INTEGER" />

    <result column="TYPEID" property="typeid" jdbcType="INTEGER" />

    <result column="PUBLISHERID" property="publisherid" jdbcType="INTEGER" />

    <result column="BOOKNAME" property="bookname" jdbcType="VARCHAR" />

    <result column="NUM" property="num" jdbcType="INTEGER" />

    <result column="ISBN" property="isbn" jdbcType="VARCHAR" />

    <result column="PRICE" property="price" jdbcType="INTEGER" />

    <result column="PUBLISHERNAME" property="publishername" javaType="string" />

    <result column="TYPENAME" property="typename" javaType="string" />

    <result column="PRICE" property="price" jdbcType="INTEGER" />

    <collection property="alist" ofType="cn.edu.bjut.zj.tims.entity.Author" column={bookid=book_id,authorid=authorid}" select="queryAuthorByBookid"/>

  </resultMap>
<select id="queryAuthorByBookid" parameterType="java.util.HashMap" resultType="cn.edu.bjut.zj.tims.entity.Author">         SELECT t_abref.BOOKID,
            t_author.AUTHORID,
            t_author.AUTHORNAME         FROM t_author INNER JOIN t_abref ON t_author.AUTHORID = t_abref.AUTHORID         Where bookid=#{bookid} and t_author.AUTHORID, =#{authorid}   </select>
<select id="queryAllBook" parameterType="cn.edu.bjut.zj.tims.entity.BookVo" resultMap="BaseResultMap">   SELECT t.TYPENAME,
    p.PUBLISHERNAME,
    b.BOOKID book_id,
    b.TYPEID,
    b.PUBLISHERID,
    b.BOOKNAME,
    b.NUM,
    b.ISBN,
    b.PRICE FROM t_publisher p INNER JOIN t_book b ON p.PUBLISHERID = b.PUBLISHERID      INNER JOIN t_type t ON t.TYPEID = b.TYPEID          <where>                          <if test="typeid!=0">                 and b.TYPEID=#{typeid}             </if>             <if test="bookname!=null and bookname !=''">                 and bookname like #{bookname}             </if>                       </where>         <!--  Limit #{page.firstResult},#{page.maxResults} -->   </select>

展开
收起
kun坤 2020-06-03 14:43:34 1034 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载