级联(关联)查询,mybatis已经有了很好的支持,配置也相当简单,示例:
一种是一对一的,一种是一结多的, association用于前者,collection用于后者。下面都有相应配置。
当然一对一的,可以直接配置在一起,就不用两次查询了。
<resultMap id="usersResult" type="com.zlwh.member.model.Users">
<result property="id" column="id"/>
<result property="loginName" column="login_name"/>
<result property="userName" column="user_name"/>
<result property="password" column="password"/>
<result property="email" column="email"/>
<result property="status" column="status"/>
<result property="userType" column="user_type"/>
<result property="memberType" column="member_type"/>
<result property="imgPath" column="img_path"/>
<result property="imgStatus" column="img_status"/>
<result property="identification" column="identification"/>
<result property="certificateCode" column="certificate_code"/>
<result property="countyCode" column="county_code"/>
<result property="schoolId" column="school_id"/>
<result property="classId" column="class_id"/>
<result property="grade" column="grade"/>
<result property="sex" column="sex"/>
<result property="birthday" column="birthday"/>
<result property="mobile" column="mobile"/>
<result property="inviteCode" column="invite_code"/>
<result property="subjectId" column="subject_id"/>
<result property="certificationStatus" column="Certification_status"/>
<result property="createTime" column="create_time"/>
<result property="validTime" column="valid_time"/>
<result property="institutionId" column="institution_id"/>
<result property="depName" column="dep_name"/>
<result property="jobName" column="job_name"/>
<association column="school_id" property="school"
javaType="com.zlwh.member.model.School" select="getSchoolById" />
</resultMap>
<resultMap id="schoolResult" type="com.zlwh.member.model.School">
<result property="id" column="id"/>
<result property="schoolName" column="school_name"/>
<result property="schoolCode" column="school_code"/>
<result property="county" column="county"/>
<result property="address" column="address"/>
<result property="phase" column="phase"/>
</resultMap>
<select id="getSchoolById" resultMap="schoolResult">
SELECT * FROM school WHERE id = #{id}
</select>
<resultMap id="usersResultForT" type="com.zlwh.member.model.Users">
<result property="id" column="id"/>
<result property="loginName" column="login_name"/>
<result property="userName" column="user_name"/>
<result property="inviteCode" column="invite_code"/>
<collection property="userSubscriptions" column="id" select="getUserSubscriptionsByUserId" ></collection>
</resultMap>
<resultMap id="userSubscriptionResult" type="com.zlwh.member.model.UserSubscription">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="subscriptionId" column="subscription_id"/>
<result property="beginDate" column="begin_date"/>
<result property="endDate" column="end_date"/>
<result property="status" column="status"/>
<result property="createTime" column="create_time"/>
<result property="orderId" column="order_id"/>
<result property="orderPrice" column="order_price"/>
<result property="payTime" column="pay_time"/>
</resultMap>
<select id="getStudentsByInviteCode" resultMap="usersResultForT">
<![CDATA[SELECT id,login_name,user_name,invite_code FROM users WHERE invite_code = #{inviteCode} and member_type=1]]>
</select>
<select id="getById" resultMap="usersResult">
SELECT <include refid="commonColumns" />
<![CDATA[
FROM users
WHERE
id = #{id}
]]>
</select>
<!-- 查所有已支付的订阅 -->
<select id="getUserSubscriptionsByUserId" resultMap="userSubscriptionResult">
SELECT * FROM user_subscription WHERE (status=1 or status=3) and user_id = #{userId} order by subscription_id asc
</select>
<!-- 用于select查询公用抽取的列 -->
<sql id="commonColumns">
<![CDATA[
id ,
login_name ,
user_name ,
password ,
email ,
status ,
user_type ,
member_type ,
img_path ,
img_status ,
identification ,
certificate_code ,
county_code ,
school_id ,
class_id ,
grade ,
sex ,
birthday ,
mobile ,
invite_code ,
subject_id ,
Certification_status ,
create_time ,
valid_time ,
institution_id ,
dep_name ,
job_name
]]>
</sql>
相关推荐
在关联和级联查询以及动态SQL方面,MyBatis提供了强大的功能,使得开发人员能够更加灵活地处理数据库交互。 首先,我们来探讨MyBatis中的关联(Association)和级联(Cascading)。关联通常用于描述一个实体对象与...
在本文中,我们将深入探讨如何使用Spring Boot整合Mybatis实现级联一对多的CRUD(创建、读取、更新、删除)操作。首先,我们需要理解什么是级联操作和一对多的关系。在关系型数据库中,级联操作涉及到一个表中的记录...
在这个"Mybatis级联映射(一对一,一对多)例子"中,我们将深入探讨Mybatis如何处理一对一和一对多的关系映射。 在数据库设计中,一对一和一对多关系是很常见的。一对一关系指的是两个表中的一条记录最多只能与另一...
本示例将探讨如何在Spring环境中实现MyBatis的关联查询,包括一对多、一对一和多对多关系的处理。理解这些关联关系对于构建复杂的业务逻辑至关重要。 首先,我们需要配置Spring与MyBatis的整合。这通常涉及以下几个...
级联查询允许我们在一次数据库访问中获取关联对象的数据,而无需多次单独查询。例如,假设我们有一个`User`类和一个`Address`类,用户可以有多个地址,那么在查询用户时,如果希望同时获取用户的地址信息,就可以...
这次我们将深入探讨 MyBatis 如何实现这种高级关联查询,并通过源码分析来理解其工作原理。 “一对多”关联通常指的是一个实体(如用户)可以拥有多个关联实体(如订单)。在 MyBatis 中,我们可以使用 `...
3. **嵌套查询与嵌套结果**:MyBatis支持在关联映射中使用嵌套查询,通过`select`属性指定一个单独的SQL查询来获取关联数据。这有助于减少数据库交互次数,提高性能。 4. **延迟加载**:MyBatis提供了延迟加载功能...
- **nested selects**:在查询时,可以使用嵌套的SQL查询来获取关联数据。 - **nested results**:在结果映射中,可以嵌套结果集来处理复杂的数据结构。 3. **动态SQL** MyBatis的动态SQL功能非常强大,可以在...
"MyBatis多参数子查询使用association或collection" MyBatis是一款流行的Java持久层框架,提供了多种方式来实现复杂的数据库查询操作。其中,使用association或collection来传递多参数子查询是一种常用的方法。本文...
在处理复杂的数据关系时,比如多对多关联查询,MyBatis提供了强大的支持。本文将深入探讨MyBatis如何实现多对多关联查询。 一、多对多关系的理解 在数据库设计中,多对多(Many-to-Many)关系表示两个实体之间存在...
总结,MyBatis的级联1对1关联通过`<association>`标签实现,可以方便地在一个查询中获取关联对象的信息。自定义TypeHandler则解决了枚举类型与数据库字段之间的映射问题,使得枚举类能够与数据库中的字段无缝对接。...
4. 关联表(province_city_district):这张表用于快速查找特定省市区的组合,可能包含了省份、城市、区县的唯一标识,以提高查询效率,尤其是在实现联动效果时。 在MySQL中,我们可以使用InnoDB引擎来支持外键约束...
本专题将深入探讨MyBatis的一对多关联查询,以"mybatis061 多表查询"为例,旨在帮助你理解和掌握如何在实际项目中实现多表数据的联合检索。 首先,了解一对多关系:在数据库设计中,一对多关系是指一个表中的记录...
在开发过程中,要注意合理设计数据库表结构,避免过度依赖关联查询,因为这可能导致复杂的SQL语句和性能瓶颈。通过合理的缓存策略和优化的SQL语句,可以进一步提升MyBatis应用的性能。 总之,理解和掌握MyBatis的一...
Mybatis支持级联插入、更新和删除,这意味着在操作主要实体时,可以同时处理关联的多对多关系。通过`cascade`属性,我们可以指定哪些操作需要级联。 7. **性能优化** 为了提高性能,可以考虑使用`<resultMap>`的`...
4. **关联查询的配置**: 在XML映射文件中,可以通过`<select>`标签定义复杂的SQL查询,包括JOIN操作,以便在一次查询中获取关联数据。同时,Mybatis还支持延迟加载(Lazy Loading),在默认情况下,关联的对象只有在...
在处理复杂的数据关系时,如多对多关联查询,MyBatis提供了高效且易用的解决方案。本篇文章将深入探讨MyBatis在处理多对多查询时的高级映射技巧。 首先,理解多对多关系。在数据库设计中,多对多关系意味着一个表中...
在SSM框架中,级联查询通常涉及到MyBatis的映射文件(Mapper XML)和实体类之间的关联关系。通过在实体类中定义一对多或多对一的关系,MyBatis可以在一次查询中获取到关联的数据,避免了多次数据库访问,提高了性能...
MyBatis支持一对多、多对多的复杂关联映射,通过`association`和`collection`标签,可以实现级联查询和更新。 10. **缓存机制** MyBatis提供了本地缓存和二级缓存,可以提高数据访问效率。开发者可以通过配置开启...