怎么使用MyBatis高级映射ResultMap解决属性问题


本篇内容介绍了“怎么使用MyBatis高级映射ResultMap解决属性问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!之前我们提到了用resultMap解决数据表中字段名与bean属性名不一致的问题,这是resultMap的一种简单实现。下面我们来看如何利用ResultMap来解决更复杂的属性问题场景:当我们需要联查两张表的时候,通常会在sql层面对两个表进行外键关联。那么设置了外键的从表对应的实体Bean中就需要定义一个对应主表的实例对象。示例:sql:打印日志:Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@79da8dc5]
==> Preparing: select * from student;
==> Parameters:
Student{id=1, name=’小子三’, teacher=null}
Student{id=2, name=’小子四’, teacher=null}
Student{id=3, name=’小子五’, teacher=null}
Student{id=4, name=’小子六’, teacher=null}
Student{id=5, name=’小子七’, teacher=null}
Student{id=6, name=’小子八’, teacher=null}可以很清晰的看出sql一共只执行了一条,而根据学生表tid字段查询教师信息的sql根本就没有运行下面我们对select * from teacher where id = #{tid}这句sql返回的结果配置,利用resultMap为其配置合理的结果集来接收查询到的结果resultMap及sql配置如下:最终打印结果如下:Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@79da8dc5]
// 执行sql1
==> Preparing: select * from student;
==> Parameters:
// 执行sql1
====> Preparing: select * from teacher where id = ?
====> Parameters: 1(Integer)
// 最终teacher也以对象的形式打印出来
Student{id=1, name=’小子三’, teacher=Teacher{id=1, name=’秦老师’}}
Student{id=2, name=’小子四’, teacher=Teacher{id=1, name=’秦老师’}}
Student{id=3, name=’小子五’, teacher=Teacher{id=1, name=’秦老师’}}
Student{id=4, name=’小子六’, teacher=Teacher{id=1, name=’秦老师’}}
Student{id=5, name=’小子七’, teacher=Teacher{id=1, name=’秦老师’}}
Student{id=6, name=’小子八’, teacher=Teacher{id=1, name=’秦老师’}}studentMapper.xml配置resultMap如下:如果采用结果嵌套配置,此时不论bean类属性是否是基本类型都需要用result进行映射,否则输出结果就会采用默认值一对多关系处理,依旧以上述老师和学生为例。但是实体类需要修改,如下:一个老师下对应多个学生,所以我们定义一个集合用于存储学生下面尝试获取指定老师下的所有学生信息及该老师信息程序:resultMap配置因为复杂属性的类型为集合,所以我们在配置resultMap结果集映射时不再使用association对象,换成collection集合。在配置collection与association不同的是将JavaType(Java类型)换成了OfType其他依旧不变TeacherMapper.xml配置resultMap“怎么使用MyBatis高级映射ResultMap解决属性免费云主机域名问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: Android中有什么屏幕元素

本篇内容主要讲解“Android中有什么屏幕元素”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android中有什么屏幕元素”吧!android.app.Activity对于一个Android应用来说,androi…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/14 17:50
下一篇 05/14 17:51

相关推荐