resultMap标签中里的association标签
association(一对一):映射到JavaBean的某个“复杂类型”属性,比如JavaBean类,即JavaBean,即JavaBean内部嵌套一个复杂数据类型(JavaBean)属性,这种情况就属于复杂类型的关联。但是需要注意:association仅处理一对一的关联关系。
下面通过一个示例来演示association具体的应用,示例需求:查询学生表的全部数据信息。
首先修改Student,增加Grade (Grade实体类只有gid和gname两个属性) 年级属性,并增加响应的getter和setter方法,示例代码如下:
public class Student {private int stuid;private String stuname;private String stupwd;private String stusex;private int stuage;private Grade grade;//省略getter和setter方法 toString和构造器等方法
}
我们的JavaBean:Student对象内部嵌套了一个复杂数据类型的属性:grade。然后在对应的Dao接口中增加获取全部信息的方法:
List<Student> findAll();
修改对应的Mapper映射文件。由于Student对象内嵌JavaBean对象(Grade),因此需要使用association来实现结果映射。代码如下:
<resultMap type="student" id="stumap"><id column="stuid" property="stuid"/><result column="stuname" property="stuname"/><result column="stupwd" property="stupwd"/><result column="stuage" property="stuage"/><result column="stusex" property="stusex"/><!-- 外键列如何表示 --><!-- association描述关系 --><association property="grade" javaType="grade"><id column="gid" property="gid"/><result column="gname" property="gname"/></association>
</resultMap><select id="findAll" resultMap="stumap">select stuid,stuname,stupwd,stuage,grade.gid,gnamefrom grade,studentwhere student.gid=grade.gid
</select>
从上述代码中,简单分析association的属性。
javaType:完整Java类名或别名。
property:映射数据库列的实体对象的属性。
id。设置该项可以有效地提升MyBatis的性能。
result。property:映射数据库列的实体类对象的属性。 column:数据库列名或别名
最后进行测试即可:
@org.junit.Testpublic void selectInfo() {SqlSession session=null;try {session = MyBatisUtils.getSqlSession();StudentDao sd = session.getMapper(StudentDao.class);List<Student> list = sd.findAll();list.forEach(System.out::println);} catch (Exception e) {e.printStackTrace();}finally {MyBatisUtils.closeSqlSession(session);}}
测试结果如下:
虽然我们成功查询到了信息,但是association是没有办法达到复用的,那么它是否可复用?
答案是肯定的,association提供了另一个属性:resultMap。通过这个属性可以扩展一个resultMap来进行联合映射。只需将刚刚的映射文件修改如下即可:
<resultMap type="student" id="stumap"><id column="stuid" property="stuid"/><result column="stuname" property="stuname"/><result column="stupwd" property="stupwd"/><result column="stuage" property="stuage"/><result column="stusex" property="stusex"/><!-- 外键列如何表示 --><!-- association描述关系 --><association property="grade" javaType="grade" resultMap="grademap"></association>
</resultMap><resultMap type="grade" id="grademap"><id column="gid" property="gid"/><result column="gname" property="gname"/>
</resultMap><select id="findAll" resultMap="stumap">select stuid,stuname,stupwd,stuage,grade.gid,gnamefrom grade,studentwhere student.gid=grade.gid
</select>
以上就可以使association达到复用的效果。
resultMap标签中里的association标签相关推荐
- 持久层框架Mybatis Plus的ResultMap标签里的association标签的用法
加入公司差不多快四个月了,对目前手头上的工作内容基本已经熟悉了,现在要对我手头上的后台管理系统进行一个技术升级,后台管理系统前后端不分离,前端使用的是EXTJS框架,后端使用的事Struts2+spr ...
- dede中list标签php,dedecms标签中什么表示列表标签
dedecms标签中什么表示列表标签? dedecms标签中list表示列表标签: 标签名称:list 功能说明:表示列表模板里的分页内容列表 适用范围:仅列表模板 list_*.htm 基本语法:{ ...
- html svg标签中插入img image标签不显示的问题
svg标签中插入img image标签(图片)不显示的问题 1 问题: 在使用svg画图中想要使用img标签插入图片,可以图片不显示 <!--S svg外框 --> <div cla ...
- 织梦php页面中调用标签,织梦dede:php标签中调用其他普通标签和页面相关变量及全局配...
这篇文章主要为大家详细介绍了织梦dede:php标签中调用其他普通标签和页面相关变量及全局配,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 织梦dedecms{ ...
- vue 中v-if和v-for一起使用;p标签中可以放p标签吗?
记录一下今天项目中踩的两个坑. 数据是从后台取的,然后通过v-for循环展现出来,由于一些原因,获取到后台返回的值是一个空对象,导致报错.想着直接v-if判断一下对象,如果是空就不编译就不会导致循环空 ...
- img标签和p标签是行内元素还是块级元素?以及p标签中可以放img标签吗?
img标签:行内块元素.类似于 inline-block 可以被p标签包裹.<p><img src="1.jpg"></p> 比如p是居中,图片 ...
- python xpath定位 嵌套标签_python爬虫中使用Xpath方法定位a标签中所有的子标签的方法...
老板扔给了我一个陈年语料,让我通过文章标题回原网址爬取一下对应的doi号,文章很好定位,但是在解析标题的时候遇到了问题,a标签中混合了i.sub.sup标签,在使用xpath时不能直接使用text方法 ...
- a标签中可以放其他标签吗?
参考:在HTML中标签的嵌套规则 1.HTML标签: 块级元素(block): 常用:div.p.ul.ol.li.dl.dt.dd.fieldset.form.h1~h6.hr.table 不常用: ...
- struts s标签中的s:select标签用法
一.常用结构:<s:select id="" name="" value="" list="" lis ...
最新文章
- java 基础算法教程ppt,基础排序算法(附加java实现)
- python中各操作符的优先级_在Python中实现操作符优先级的一般方法是什么
- nginx配置文件说明
- 谈谈秒杀系统的落地方案
- 使用ML.NET + Azure DevOps + Azure Container Instances打造机器学习生产化
- python包管理_Python包管理整理:setuptoo
- python关系运算符和逻辑运算符的优先级_python中逻辑运算符的优先级问题
- M​y​E​c​l​i​p​s​e​下​反​编​译​插​件​安​装​使​用​方​法
- 基于JAVA+SpringMVC+Mybatis+MYSQL的教材管理系统
- 使用requests通过代码实现接口测试自动化
- 李宏毅机器学习笔记——Transformer
- SAS入门 新手必看
- 删库遭 GitHub 封号,开发者欲夺回发行权:“我只是犯了个编程错误”
- 利用laravel框架创建todos
- 如何理解新技术带来的新资产类别?
- 网络版的知乎点赞问题~
- [博应用软件]如何正确安装路由器?
- 小括号在c语言的作用,C语言的小括号----其实是逗号运算符
- JS的3种加密方式:base64编码、md5加密及sha加密
- Bug:eventlet ImportError cannot import name ‘ALREADY HANDLED