当前位置: 代码网 > it编程>编程语言>Java > springboot+mybatis一对多查询+懒加载实例

springboot+mybatis一对多查询+懒加载实例

2025年11月19日 Java 我要评论
springboot+mybatis一对多查询+懒加载​直接上图:父表子表parent相关代码entitypublic class parentmessage implements serializa

springboot+mybatis一对多查询+懒加载

​直接上图:

  • 父表

  • 子表

parent相关代码

entity

public class parentmessage implements serializable {

    private integer id;

    private string value;

    private list<childmessage> childmessages;

    get set ......
}

mapper

@repository
public interface parentmessagemapper {

     list<parentmessage> findall();

     parentmessage findbyid(integer id);
}

service

@service
public class parentmessageservice {

    @autowired
    parentmessagemapper parentmessagemapper;

    public list<parentmessage> findall(){

        return parentmessagemapper.findall();
    }
}

mapper.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.demo.mapper.parentmessagemapper">

    <resultmap id="parentmessagemap" type="parentmessage">
        <id column="id" property="id"/>
        <result column="value" property="value" javatype="string"/>
        <collection fetchtype="eager" property="childmessages" column="id" select="com.demo.mapper.childmessagemapper.findbyotherid" javatype="list" typehandler="com.demo.mybatistypehandler.listtypehandler"/>
    </resultmap>

    <select id="findall" resultmap="parentmessagemap">
        select id , value from mk_parentmessage
    </select>

    <select id="findbyid" resulttype="parentmessage">
        select * from mk_parentmessage;
    </select>
</mapper>

child 相关代码

entity

public class childmessage implements serializable {

    private integer id;

    private string value;

    private parentmessage parentmessage;

}

mapper

@repository
public interface childmessagemapper {

    list<childmessage> findbyotherid(integer id);

    list<childmessage> findall();
}

service

@service
public class childmessagservice {

    @autowired
    childmessagemapper childmessagemapper;

    public list<childmessage> findall(){

        return childmessagemapper.findall();
    }
}

mapper.xlm

<?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.demo.mapper.childmessagemapper">

    <resultmap id="childmessagemap" type="childmessage">
        <id column="id" property="id"/>
        <result column="value" property="value"/>
        <association property="parentmessage" column="parent_id" select="com.demo.mapper.parentmessagemapper.findbyid" javatype="parentmessage"/>
    </resultmap>

    <select id="findbyotherid" resulttype="childmessage">
        select id id, value value from mk_childmessage;
    </select>

    <select id="findall" resultmap="childmessagemap">
        select * from mk_childmessage;
    </select>
</mapper>

controller测试

@restcontroller
@requestmapping("message")
public class messagecontroller {

    @autowired
    parentmessageservice parentmessageservice;

    @autowired
    childmessagservice childmessagservice;

    @getmapping("findall")
    public responseentity getparentmessage(){

        return responseentity.ok(parentmessageservice.findall(););
    }

}

返回结果:

懒加载

配置属性

mybatis.configuration.lazy-loading-enabled=true
#false 为按需加载
mybatis.configuration.aggressive-lazy-loading=false

这样就实现了全局懒加载,若个别需要关闭,可用 fetchtype=“eager”

例如下图:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com