MyBatis中association的基本使用方法

 更新时间:2022年09月21日 11:32:49   作者:李不卷  
在项目中某些实体类之间肯定有关键关系,比如一对一,一对多等,在hibernate中用one to one和one to many,而mybatis中就用association和collection,下面这篇文章主要给大家介绍了关于MyBatis中association基本使用方法的相关资料,需要的朋友可以参考下

通过association对两表进行联表查询

student表属性如下

teacher表属性如下

按照查询嵌套处理

  • 关于需求的SQL稍微有点复杂时,可以打开右侧查询框进行语句的编写执行。

当使用以下时,查询出来存在问题

<select id="getStudentTeacher" resultType="Student" >
    select s.id,s.name,t.id, t.name from student s, teacher t where s.tid = t.id
</select>

思路:

  • 查询所有的学生信息
  • 根据查询出来的学生tid,寻找对应的老师

利用结果集映射,联系起来

编写接口

//    查询所有的学生信息以及对应的老师信息
List<Student> getStudent();

编写mapper配置文件

<select id="getStudent" resultMap = "StudentTeacher" >
    select * from student
</select>

<resultMap id="StudentTeacher" type="Student">
    <result property="id" column="id" />
    <result property="name" column="name" />
    <!--        复杂的属性需要单独处理
            对象:association
            集合:collection
-->
    <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>

</resultMap>

<select id="getTeacher" resultType="Teacher">
    select * from teacher where id = #{nid}
</select>

测试得到结果

结果中嵌套了结果

一些注意问题:

  • teacher中的id的传递是根据student中得到的tid,将tid传给id,因此#{}中取什么名字都可以。
  • association将实体类的teacher属性对应上一个结果,这个结果是将tid作为参数参与下一条sql语句产生的。

按照结果嵌套处理

  • 个人认为这种方法更直观
  • 正确的查询
<!--按照结果嵌套处理-->
<select id="getStudent2" resultMap="StudentTeacher2" >
    select s.id sid,s.name sname,t.id tid, t.name tname
    from student s, teacher t
    where s.tid = t.id
</select>

<resultMap id="StudentTeacher2" type="Student">
    <result property="id" column="sid" />
    <result property="name" column="sname" />
    <association property="teacher" javaType="Teacher" >
        <result property="id" column="tid" />
        <result property="name" column="tname" />
    </association>
</resultMap>

查询出来的需要展现的结果都应该在resultMap中进行定义,否则会以默认值进行展示如下,在resultMap中注释掉tid和sname后,执行的结果

总结

到此这篇关于MyBatis中association基本使用的文章就介绍到这了,更多相关MyBatis association使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现简单的贪吃蛇小游戏

    Java实现简单的贪吃蛇小游戏

    这篇文章主要为大家详细介绍了Java实现简单的贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 浅析JAVA_HOME,CLASSPATH和PATH的作用

    浅析JAVA_HOME,CLASSPATH和PATH的作用

    以下是对JAVA_HOME,CLASSPATH和PATH的作用进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-07-07
  • Spring 注入静态对象使用三种方式示例

    Spring 注入静态对象使用三种方式示例

    这篇文章主要为大家介绍了Spring注入静态对象使用的三种方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java实现宠物商店管理

    Java实现宠物商店管理

    这篇文章主要为大家详细介绍了Java实现宠物商店管理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • Maven 错误找不到符号的解决方法

    Maven 错误找不到符号的解决方法

    这篇文章主要介绍了Maven 错误找不到符号的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • SpringCloud网关组件zuul实例解析

    SpringCloud网关组件zuul实例解析

    这篇文章主要介绍了SpringCloud网关组件zuul实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 一个简单的java学生寝室查询系统

    一个简单的java学生寝室查询系统

    这篇文章主要为大家详细介绍了一个简单的java学生寝室查询系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • SpringBoot静态资源css,js,img配置方案

    SpringBoot静态资源css,js,img配置方案

    这篇文章主要介绍了SpringBoot静态资源css,js,img配置方案,下文给大家分享了三种解决方案,需要的朋友可以参考下
    2017-07-07
  • WebSocket实现Web聊天室功能

    WebSocket实现Web聊天室功能

    这篇文章主要为大家详细介绍了WebSocket实现Web聊天室功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • IntelliJ IDEA报错Error:java: Compilation failed: internal java compiler error的解决办法

    IntelliJ IDEA报错Error:java: Compilation failed: internal java

    今天小编就为大家分享一篇关于IntelliJ IDEA报错Error:java: Compilation failed: internal java compiler error的解决办法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10

最新评论