Mybatis—— 多对一,一对多,动态sql

一、多对一

多对一,顾名思义就在一张数据表里有多个记录,他们有个字段对应对是另一个数据的数据,比如多个学生对应一个老师,直接使用select是不能够把另一个数据表的数据查询出来,这时就要用到多对一的查询方法。
在Mybatis里面,结果映射(resultMap)里的一个子元素association就可以实现多对一

association – 一个复杂类型的关联;许多结果将包装成这种类型 嵌套结果映射 – 关联本身可以是一个 resultMap元素,或者从别处引用一个

相关属性:

property:映射到列结果的字段或属性。如果用来匹配的 JavaBean 存在给定名字的属性,那么它将会被使用。否则 MyBatis 将会寻找给定名称的字段。 无论是哪一种情形,你都可以使用通常的点式分隔形式进行复杂属性导航。 比如,你可以这样映射一些简单的东西:“username”,或者映射到一些复杂的东西上:“address.street.number”。

javaType :一个 Java 类的完全限定名,或一个类型别名(关于内置的类型别名,可以参考上面的表格)。 如果你映射到一个 JavaBean,MyBatis 通常可以推断类型。然而,如果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证行为与期望的相一致。

column :数据库中的列名,或者是列的别名。一般情况下,这和传递给 resultSet.getString(columnName) 方法的参数一样。 注意:在使用复合主键的时候,你可以使用 column="{prop1=col1,prop2=col2}" 这样的语法来指定多个传递给嵌套 Select 查询语句的列名。这会使得 prop1 和 prop2 作为参数对象,被设置为对应嵌套 Select 语句的参数。

select :用于加载复杂类型属性的映射语句的 ID,它会从 column 属性指定的列中检索数据,作为参数传递给目标 select 语句。 具体请参考下面的例子。注意:在使用复合主键的时候,你可以使用 column="{prop1=col1,prop2=col2}" 这样的语法来指定多个传递给嵌套 Select 查询语句的列名。这会使得 prop1 和 prop2 作为参数对象,被设置为对应嵌套 Select 语句的参数。

1.建立数据表

在这里插入图片描述
在这里插入图片描述
这里我就建立了一个peo和teacher两个数据表,peo对应的是学生,teacher对应了教师,其中peo中的tid字段对应的就是teacher的id字段,查询时主要就是用到tid来查询teacher数据表的数据

2.编写实体类

在工程里创建一个Peo类和Teacher类,分别对应peo和teacher数据表,注意要在Peo类里创建一个Teacher类来存放查询到的teacher信息

3.编写XML映射文件

我这里是分开了两个xml文件,分别对应的是peo和teacher

peo.mapper.xml

<select id="getPeoTeacher" resultMap="PeoTeacher">
		select * from peo
</select>
<resultMap id="PeoTeacher" type="Peo">
		<association property="teacher" column="tid" javaType="Teacher" select="entity.TeacherMapper.getTeacher">
		</association>
</resultMap>

teacher.mapper.xml

<select id="getTeacher" resultType="Teacher" >
        select 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 该项目是个人毕设项目源码,综合评分达到95分,经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现类似其他功能。 ## 前台框架: Bootstrap(一个HTML5响应式框架) ## 开发环境:myEclipse8.5以上或者Eclipse或者Idea + mysql数据库 ## 后台框架: SSM(SpringMVC + Spring + Mybatis) ## 用户功能: 实现注册、登录; 实现在留言板里留言; 公告区; 习题模块:不做练习,每种语法————只有5道例题,每道有解析即可 视频播放模块:对视频进行分类,可以按照视频分类和关键字进行查询,对该视频可以进行评论; ## 管理员功能: 对用户添加、修改、删除; 回答留言板里的问题; 对公告区信息进行管理; 对习题模块例题的添加、修改、删除操作。 对视频播放模块进行管理; ## 实体ER属性如下: 用户: 用户名,登录密码,姓名,性别,出生日期,用户照片,联系电话,邮箱,家庭地址,注册时间 知识分类: 视频分类id,视频分类名称,视频分类说明 英语视频: 视频id,知识分类,视频标题,视频图片,视频介绍,视频文件,点击率,发布时间 视频评论: 评论id,被评视频,评论内容,评论用户,评论时间 习题: 习题id,知识分类,习题标题,分值,习题内容,习题解析,发布时间 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复时间 新闻公告: 公告id,标题,新闻公告图片,公告内容,发布时间

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值