mybatis多对多查询

BookCustom.java

public class BookCustom extends BookEntity {

    @Transient
    private List<VolumeCustom> volumeCustomList;
    @Transient
    private List<BookTypeEntity> bookTypeEntityList;
    @Transient
    private UserEntity userEntity;

    public List<VolumeCustom> getVolumeCustomList() {
        return volumeCustomList;
    }

    public void setVolumeCustomList(List<VolumeCustom> volumeCustomList) {
        this.volumeCustomList = volumeCustomList;
    }

    public List<BookTypeEntity> getBookTypeEntityList() {
        return bookTypeEntityList;
    }

    public void setBookTypeEntityList(List<BookTypeEntity> bookTypeEntityList) {
        this.bookTypeEntityList = bookTypeEntityList;
    }


    public UserEntity getUserEntity() {
        return userEntity;
    }

    public void setUserEntity(UserEntity userEntity) {
        this.userEntity = userEntity;
    }
}
BookCustomMapper.java

public interface BookCustomMapper {
    public BookCustom queryBook(Long bookId);
}
BookCustomMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qcacg.mapper.BookCustomMapper">

    <resultMap id="ContentResultMap" type="com.qcacg.entity.ContentEntity">
        <id column="contentId" property="contentId"/>
        <result column="volumeId" property="volumeId"/>
        <result column="contentTitle" property="contentTitle"/>
        <result column="content" property="content"/>
        <result column="contentWordCount" property="contentWordCount"/>
        <result column="contentUpdate" property="contentUpdate"/>
        <result column="contentStatus" property="contentStatus"/>
        <result column="contentUrl" property="contentUrl"/>
    </resultMap>

    <resultMap id="VolumeResultMap" type="com.qcacg.entity.volume.VolumeCustom">
        <id column="volumeId" property="volumeId"/>
        <result column="bookId" property="bookId"/>
        <result column="volumeName" property="volumeName"/>
        <result column="volumeWordCount" property="volumeWordCount"/>
        <collection property="contentEntityList" ofType="com.qcacg.entity.ContentEntity" resultMap="ContentResultMap"/>
    </resultMap>

    <resultMap id="BookTypeResultMap" type="com.qcacg.entity.BookTypeEntity">
        <id column="bookTypeId" property="bookTypeId"/>
        <result column="bookTypeName" property="bookTypeName"/>
    </resultMap>

    <resultMap id="BookResultMap" type="com.qcacg.entity.book.BookCustom">
        <id column="bookId" property="bookId"/>
        <result column="bookName" property="bookName"/>
        <result column="sort" property="sort"/>
        <result column="bookIntroduction" property="bookIntroduction"/>
        <result column="bookUpdate" property="bookUpdate"/>
        <result column="bookCoverImage" property="bookCoverImage"/>
        <result column="bookWordCount" property="bookWordCount"/>
        <result column="bookStatus" property="bookStatus"/>
        <result column="bookHit" property="bookHit"/>
        <result column="bookCollect" property="bookCollect"/>
        <result column="bookCopperCoins" property="bookCopperCoins"/>
        <association property="userEntity" javaType="com.qcacg.entity.UserEntity">
            <id column="userId" property="userId"/>
            <result column="userName" property="userName"/>
            <result column="information" property="information"/>
        </association>
        <collection property="bookTypeEntityList" ofType="com.qcacg.entity.BookTypeEntity" resultMap="BookTypeResultMap"/>
        <collection property="volumeCustomList" ofType="com.qcacg.entity.volume.VolumeCustom" resultMap="VolumeResultMap"/>
    </resultMap>




    <select id="queryBook" resultMap="BookResultMap" parameterType="java.lang.Long">
        SELECT
        wor_book.BookId AS bookId,
        wor_book.BookName AS bookName,
        wor_book.Sort AS sort,
        wor_book.BookIntroduction AS bookIntroduction,
        wor_book.BookUpdate AS bookUpdate,
        wor_book.BookCoverImage AS bookCoverImage,
        wor_book.BookWordCount AS bookWordCount,
        wor_book.BookStatus AS bookStatus,
        wor_book.BookHit AS bookHit,
        wor_book.BookCollect AS bookCollect,
        wor_book.BookCopperCoins AS bookCopperCoins,
        wor_book.BookSilverCoins AS bookSilverCoins,
        wor_booktype.BookTypeId AS bookTypeId,
        wor_booktype.BookTypeName AS bookTypeName,
        wor_volume.VolumeId AS volumeId,
        wor_volume.BookId AS bookId,
        wor_volume.VolumeName AS volumeName,
        wor_volume.VolumeWordCount AS volumeWordCount,
        wor_content.ContentId AS contentId,
        wor_content.VolumeId AS volumeId,
        wor_content.ContentTitle AS contentTitle,
        wor_content.Content AS content,
        wor_content.ContentWordCount AS contentWordCount,
        wor_content.ContentUpdate AS contentUpdate,
        wor_content.ContentStatus AS contentStatus,
        wor_content.ContentUrl AS contentUrl,
        sys_user.UserId AS userId,
        sys_user.UserName AS userName,
        sys_user.Information AS information
        FROM
        wor_book ,
        sys_user ,
        wor_booktype ,
        wor_book_booktype,
        wor_content,
        wor_volume
        WHERE
        wor_book.UserId = sys_user.UserId AND
        wor_booktype.BookTypeId IN (SELECT wor_book_booktype.BookTypeId FROM wor_book_booktype WHERE wor_book_booktype.BookId = #{wor_book.BookId}) AND
        wor_volume.BookId = wor_book.BookId AND
        wor_volume.VolumeId = wor_content.VolumeId AND
        wor_book.BookId = #{wor_book.BookId}
    </select>

    <select id="findBookTypeByBookId" resultMap="BookTypeResultMap" parameterType="java.lang.Long">
        SELECT
        wor_booktype.BookTypeId AS bookTypeId,
        wor_booktype.BookTypeName AS bookTypeName
        FROM
        wor_booktype
        WHERE
        wor_booktype.BookTypeId IN (SELECT wor_book_booktype.BookTypeId FROM wor_book_booktype WHERE wor_book_booktype.BookId = #{wor_book.BookId})
    </select>

    <select id="findVolumeAndContentByBookId" resultMap="VolumeResultMap" parameterType="java.lang.Long">
        SELECT
        wor_volume.VolumeId AS volumeId,
        wor_volume.BookId AS bookId,
        wor_volume.VolumeName AS volumeName,
        wor_volume.VolumeWordCount AS volumeWordCount,
        wor_content.ContentId AS contentId,
        wor_content.VolumeId AS volumeId,
        wor_content.ContentTitle AS contentTitle,
        wor_content.Content AS content,
        wor_content.ContentWordCount AS contentWordCount,
        wor_content.ContentUpdate AS contentUpdate,
        wor_content.ContentStatus AS contentStatus,
        wor_content.ContentUrl AS contentUrl
        FROM
        wor_content,
        wor_volume
        WHERE
        wor_volume.VolumeId = wor_content.VolumeId
        AND
        wor_volume.BookId = #{wor_volume.BookId}
        ORDER BY
        wor_volume.VolumeId

    </select>

    <select id="findContentByVolumeIdAndBookId" resultMap="ContentResultMap" parameterType="java.lang.Long">
        SELECT
        wor_content.ContentId AS contentId,
        wor_content.VolumeId AS volumeId,
        wor_content.ContentTitle AS contentTitle,
        wor_content.Content AS content,
        wor_content.ContentWordCount AS contentWordCount,
        wor_content.ContentUpdate AS contentUpdate,
        wor_content.ContentStatus AS contentStatus,
        wor_content.ContentUrl AS contentUrl
        FROM
        wor_content
        WHERE wor_content.VolumeId IN
        (SELECT wor_volume.VolumeId FROM wor_volume
        WHERE wor_volume.BookId = #{wor_volume.BookId})
        AND
        wor_content.ContentStatus = '0'
        ORDER BY
        wor_content.ContentId
    </select>
</mapper>
BookController.java
@RequestMapping("queryBook/{bookId}")
    @ResponseBody
    public BookCustom queryBook(@PathVariable("bookId")Long bookId)
    {

        return this.bookCustomService.queryBook(bookId);
    }
spring-shiro.xml

<bean id="chainDefinitionSectionMetaSource" class="com.qcacg.shiro.ChainDefinitionSectionMetaSource">
		<property name="filterChainDefinitions">
			<value>
/book/queryBook/**.shtml = anon
</value>
		</property>
	</bean>





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值