`

mybatis学习demo4之集合和关联类的查询

 
阅读更多
也不想弄很多!代码都是demo1和demo2的差不多的,就只贴出有集合的mapper的配置,其余代码上传了,要看的自己下了就可以用了!


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.study.dao.UserMapper">
	<resultMap type="User" id="userResMap">
		<id property="id" column="id" />
		<result property="loginName" column="login_name" />
		<result property="password" column="password" />
		<result property="name" column="name" />
		<result property="email" column="email" />
		
		 <!-- 配置一对一的对象,association标签要放到collection
		                的上面-->
		 <association property="group" javaType="Group">
		 	<id property="id" column="group_id"/>
		 	<result property="name" column="group_name"/>
		 </association>
		
		<!-- 配置一对多的集合的两种方式 -->
		<!-- 第一种是在collection中直接配置集合 ,注意其中的是ofType-->
		
		<!-- 
		<collection property="groupList" ofType="Group">
			<id property="id" column="group_id" />
			<result property="name" column="group_name" />
		</collection> 
		 -->
		 
		<!-- 第二种就是直接连接到GroupMapper中的resultMap,
		            名字为namespace+resultName,这里面填写ofType="Group"
		            和javaType="List"都OK,单是上面那一种填javaType="List"不行,
		            只能填ofType="Group" -->
		 <collection property="groupList" javaType="List" resultMap="com.study.dao.GroupMapper.groupResMap"></collection>
	     		 
	</resultMap>
	<!-- 值的注意的地方是,因为user表和group表中都是有id和name的,所以查出来的
	             时候要其中一个表的ID和name要用别名,且上面的resultMap配置colum也要用
	             对应的别名,不然的话查询出来的结果不正确,会造成group表的id和name也是
	            存放的user的id和name -->
	<select id="findAll" resultMap="userResMap">
		select u.id, u.name, u.email, u.login_name, u.password, g.id as group_id, g.name as group_name
  	    from t_user u left join t_user_group u_g on u.id = u_g.user_id
  		left join t_group g on g.id = u_g.group_id
	</select>
	
	<select id="findById" resultMap="userResMap" parameterType="java.lang.Long">
		select u.id, u.name, u.email, u.login_name, u.password, g.id as group_id, g.name as group_name
  	    from t_user u left join t_user_group u_g on u.id = u_g.user_id
  		left join t_group g on g.id = u_g.group_id
  		where u.id = #{value}
	</select>
</mapper>

分享到:
评论

相关推荐

    Mybatis关联映射Demo

    在这个"Mybatis关联映射Demo"中,我们将深入探讨如何在Mybatis框架中实现这些关系映射,以便更好地理解和应用到实际项目中。 Mybatis是一个轻量级的持久层框架,它简化了Java开发中的数据访问。它通过提供XML或注解...

    Mybatis3Demo

    在实体类和XML文件中配置好关联关系后,Mybatis可以在查询主表时,以集合的形式返回所有的子表记录。 5. **多对多关系映射**(mybatis05_many2many.zip) 多对多关系通常需要中间表来关联,mybatis05_many2many....

    一个简单的mybatis查询数据库demo源码

    这个"一个简单的mybatis查询数据库demo源码"是用于演示如何在实际项目中使用MyBatis来执行数据库查询的实例。 首先,MyBatis的核心组件包括XML配置文件、SqlSessionFactory和Mapper接口。XML配置文件定义了数据源、...

    MyBatisDemo0225thinglin

    【MyBatisDemo0225thinglin】是一个关于MyBatis框架的示例项目,主要涉及Java编程语言。在本项目中,我们将探讨MyBatis的基本概念、配置以及如何在实际开发中运用它来实现数据库操作。 MyBatis是一个优秀的持久层...

    mybatis一对多性能优化demo

    在MyBatis中,一对多关系映射是常见的数据关联方式,它允许我们在查询一个实体对象时,同时加载与之相关联的多个子对象。然而,如果不进行优化,这种关联查询可能会导致性能问题,比如数据量大时的内存消耗、多次...

    Mybatis专栏代码

    【Mybatis专栏代码】主要包含了三个项目实例:mybatis-springboot-demo、mybatis-spring-demo和mybatis-demo,这些都是为了深入理解Mybatis框架而设计的。Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程...

    mybatis多对多配置

    10. **数据库设计**:`mybatisDemo001数据库`文件可能包含了实现多对多关系所需的数据库表结构,包括主表、从表和中间关联表。分析这些表可以帮助理解MyBatis是如何根据数据库设计来处理多对多关系的。 理解并正确...

    MyBatis的项目。实现增删改查,以及多表联查和对标签的使用。批量删除。

    5. **mybatisDemo4项目**: 这个项目的源代码可能包括了XML配置文件(mybatis-config.xml)、Mapper接口、Mapper XML文件、实体类、Service层和DAO层实现。通过这个项目,你可以学习到如何组织MyBatis项目结构,...

    ORM框架-Mybatis(二)(7)

    在本篇中,我们将深入探讨ORM(Object-Relational Mapping)框架中的Mybatis,这是一个流行的Java持久层框架,用于简化数据库操作...通过对提供的资源进行学习和实践,你可以更深入地理解Mybatis的工作原理和使用技巧。

    Maven 、Redis、SpringMVC 、Mybatis整合

    3. **配置Spring**: 配置Spring的bean,包括数据源、SqlSessionFactoryBean、Mybatis的Mapper接口和Service类等。 4. **集成Mybatis**: 编写Mapper接口和对应的XML文件,定义SQL语句,实现数据访问。 5. **整合Redis...

    Mybaties2Demo

    在MyBatis2Demo项目中,你可以看到具体的XML配置文件、Mapper接口和实体类,这些都是实现上述功能的关键部分。通过学习这个项目,你可以掌握MyBatis高级映射的实战技巧,提升你在实际开发中的能力。同时,这个项目也...

    mybatis 多对多

    总结来说,MyBatis 在处理多对多关系时,主要通过 XML 映射文件配置集合映射,配合 SQL 查询和 Java 代码实现,通过中间表来存储关联关系。理解并熟练运用这些机制,可以有效地管理和维护数据库中的多对多关联。

    ssm 一对一 一对多demo

    在这个"ssm 一对一 一对多demo"项目中,我们将探讨如何在SSM环境中实现MyBatis的一对一和一对多关联映射,以及如何通过Map来接收和处理查询结果。 首先,MyBatis的一对一映射通常用于一个实体类对应另一个实体类的...

    Spring+SpringMVC+Mybatis(开发必备技能)02、完整DML&DQL语句demo示例配套编码

    而DQL则是用于查询数据,包括SELECT语句以及关联的聚合函数和分组操作。 在Spring框架中,Mybatis作为持久层框架,负责与数据库的交互。Mybatis通过XML配置文件或注解方式定义SQL语句,将Java对象映射到数据库记录...

    java SSM 框架

    Mybatis允许开发者编写SQL语句,并将它们与Java代码直接关联,支持动态SQL,可以更灵活地处理复杂查询。Mybatis通过XML或注解方式配置和映射SQL,使得数据访问更加直观高效。 在`SSM使用.txt`和未列出完全的`SSM`...

    springmvc写一个购物车demo

    通过这个“springmvc写一个购物车demo”,开发者不仅可以学习Spring MVC的基本用法,还能了解到如何在实际项目中整合数据库操作、会话管理、视图渲染等多个环节,对整个Web开发流程有更深入的理解。这个小型项目是一...

    ibatisDEMO

    对于复杂的数据结构,Ibatis提供了集合映射、关联映射等机制,使得数据处理更加便捷。 此外,Ibatis还支持事务管理。在SqlSession中,可以通过`beginTransaction`开启事务,`commit`提交事务,`rollback`回滚事务。...

    java用户角色权限

    在Java开发中,用户角色权限管理是构建任何大型或复杂应用程序不可或缺的一...通过学习和扩展这个示例,开发者可以更好地掌握如何在Java应用程序中实现安全、灵活的权限控制,从而保护系统资源,防止未经授权的访问。

    spring boot权限系统

    在项目“demo-boot”中,我们可以预期找到以下关键组件和配置文件: - `User`、`Role`和`Permission`实体类,用于数据模型。 - 数据库配置,如`application.properties`或`application.yml`中的数据库连接信息。 - ...

Global site tag (gtag.js) - Google Analytics