mybatis怎么实现延迟加载

mybatis怎么实现延迟加载?针对这个问题,今天小编总结这篇有关mybatis实现延迟加载的文章,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。

成都创新互联专注于尼泸西网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供尼泸西营销型网站建设,尼泸西网站制作、尼泸西网页设计、尼泸西网站官网定制、微信小程序服务,打造尼泸西网络公司原创品牌,更为您提供尼泸西网站排名全网营销落地服务。

mybatis的延迟加载就是按需查询,在需要的时候进行查询。

有两张表:

图书表(book):

mybatis怎么实现延迟加载

图书类型表(category):

mybatis怎么实现延迟加载

他们之间通过类型id进行关联,现在我要显示图书类型名,点击类型名再显示该类型下的所有图书。

我们可以这样做在类型实体类里面添加一个属性存放该类型下的图书

public class Category {
    private int cid;
    private String cname;
    private List<Book> books;

//省略get set
}

一次性的把图书类型和图书查询出来,Sql语句如下:

   SELECT book.*,cname FROM book,category WHERE book.cid = category.cid

这样做可以完成功能,但是我们只是需要显示图书类型,点击的时候才显示该类型的图书,如果能做到开始只查询类型,点击类型的时候再查询该类型的图书,就不需要进行两表联查了,可以提高查询的效率,也比较节省内存,这就是延迟加载。

延迟加载如何实现?

mybatis怎么实现延迟加载

1.  Category实体类同上

2.  UserDao.xml:

<mapper namespace="cn.xh.dao.UserDao">
    <select id="findCategoryWithLazingload" resultMap="categoryMap">
        select * from category
    </select>
    <resultMap id="categoryMap" type="cn.xh.pojo.Category">
        <id column="cid" property="cid"></id>
        <result column="cname" property="cname"></result>

        <collection property="books" column="cid" select="findBookWithLazy"></collection>
    </resultMap>

    <select id="findBookWithLazy" parameterType="int" resultType="cn.xh.pojo.Book">
        select * from book where cid = #{cid}
    </select>
</mapper>

只有我们点击类型的时候才需要查询该类型下的图书,所以这里我们没有用两表联查,而是将类型表的查询语句和图书表的查询语句分开。

重点来看下这个配置:

<collection property="books" column="cid" select="findBookWithLazy"></collection>


collection,association是支持延迟加载的,这里的select属性表示要执行的sql语句,column表示执行sql语句要传的参数,该参数为select from category查询出来的字段cid,property=”books”表示查询出来的结果给到books属性。

关于mybatis实现延迟加载的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

新闻名称:mybatis怎么实现延迟加载
URL链接:https://www.cdcxhl.com/article14/gcdpde.html

成都网站建设公司_创新互联,为您提供移动网站建设品牌网站制作商城网站电子商务域名注册企业网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司