当前位置:首页 » 存储配置 » mybatis怎么配置一对多

mybatis怎么配置一对多

发布时间: 2023-05-10 03:18:35

⑴ spring boot + MyBatisPlus 一对多、多对一、多对多的解决方案

在学习MyBatisPlus 时念穗,简单的查询非常简单,只需继承了相关类,就能够进行增删改。但是在实旅高冲际运用时,对象之间的关系非常复杂,一对多、多对一、多对多。网上查询了大量资料都无法解决此问题。

难道要把所有的用Mybatis的重写一次?

重写一次Plus的方法还能不能用?

实在没办只能查看官网https://mp.baomidou.com/guide/在注解处找到了可能的解决拆歼方案

@TableName注解可以设置对应的resultMap 看到这里我想是不是,在Mapper中设置好resultMap,map中使用association、或者collection就能解决了。结果是可以的,上图:

实体类

mapper

rest效果

完美解决!!!

⑵ MyBatis一对多和一对一xml文件的配置

在使用mybatis的时候我们经常要用到联合查询,现在就对一表对多表和一对一表的xml文件配置进行说明
Student.xml

StudentBean

一对一在Bean中我们可以将其对象作为自身实体类的一个成员变量,一对多返回的结果是一个集合所以将其集合作为成员变量。
CourseBean

TeacherBean

Course.xml

teacher.xml

association标签是用来配置一对一表判局查询的,collection是配置一对多表查询的。
一对一查询中mybatis会将查询结哪冲慎果封装到相应的对象中,如teacher对象,李敬而一对多将返回一个List集合如List<courseList>.

⑶ mybatis一对多分页查询

例如 一个门店  对应多张图片   可正常使用PageHelper分页

PageHelper.startPage(page, size);

select

*

from cms_store 

limit 10,10  //正常单表查分页即可

</select>

<resultMap id="BaseResultMap" type="com.bear.sh.cloud.service.somhec.domain.CmsStore">

<result column="id" jdbcType="INTEGER" property="id" />

<result column="enable_status" jdbcType="INTEGER" property="enableStatus" />

<result column="delete_flag" jdbcType="INTEGER" property="deleteFlag" />

<select id="queryImagesList" resultType="com.bear.sh.cloud.service.somhec.domain.CmsStoreImage">

    select<include refid="Base_Image_Column_List">

    from cms_store_image csi

where csi.store_id = #{id}

</select>

即1条主表记录 然后封装resultMap 里的cmsStoreImages属性时,会拿这条记录的id(不限于id y要拿什么值 输什么column)(所以column的值很重要!!) 来到select里去查对应的多条记录  

如果使用left join 一对多查询  则会产生多条记录  例如一个门店有3条图片记录

则本来要查的门物裤档店应该是一条不重复记录 结果统计数据的时候罩乱却统计了3条 虽然最后mybatis会封装到1条主表数据里

这会造成纯并两个问题: 1:总条数不准 2查询10条主表数据 mybatis组合封装后只返回了 三四条主表数据

解决:先对主表进行分页查询 然后left join 从表

select * from

(select * from cms_store  limit 10) cs

left join cms_store_image csi on cs.id = csi.store_id  即可查询一对多且 一的条数为10条

总记录数需要另外统计

⑷ mybatis怎么配置一对多的映射关系

MyBatis详解 与配置MyBatis+Spring+MysqlMyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包)。MyBatis简介 MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包)。

⑸ MyBatis一对多查询及延迟加载

查询所有订单信息,关联查询下单用户信息。

主信息段核:订单信息
从信息:用户信息

使用resultMap进行结果映射,雹中定义专门的resultMap用于映射一对一查源燃山询结果。

property:Order对象的user属性。
javaType:user属性对应 的类型。
association:表示进行一对一关联查询映射。

使用resultMap进行结果映射时,具体是使用association完成关联查询的映射,将关联查询信息映射到pojo对象中。

查询所有用户信息及用户关联的订单信息。

主信息:用户信息
从信息:订单信息

在一对多的使用中,只能使用resultMap进行结果映射

Collection标签:定义了一对多关联的结果映射。
property="orders":关联查询的结果集存储在User对象的上哪个属性。
ofType="com.demo.mybatis.po.Order":指定关联查询的结果集中的对象类型即List中的对象类型。此处可以使用别名,也可以使用全限定名。

MyBatis根据关联对象查询的select的语句的执行时机,分为三种类型: 直接加载、侵入式加载和深度延迟加载

延迟加载策略需要在Mybatis的全局配置文件中,通过标签进行设置。

执行完对主加载对象的select语句,马上执行对关联对象的select查询。

执行对主加载对象的select查询时,不会执行对关联对象的查询。但当要访问主加载对象的某个属性(该属性不是关联对象的属性)时,就会马上执行关联对象的select查询。

执行对主加载对象的select查询时,不会执行对关联对象的查询。当要访问主加载对象的详情时也不会执行对关联对象的查询。当访问到关联对象的详情时才执行对关联对象的查询。

⑹ mybatis一对多查询怎么配置两个表没有建立外键关系

用这个设置外键试猛御樱试
<association property="" column="枝丛" javaType="" resultMap=""/拆宴>

⑺ mybatis中怎么实现一对多

可以使用rapid-generator生成吵轿链模板 写个baseVO 包括你需要的插入的属性帆链 直接把base当变量升孙传给sqlmap

⑻ mybatis中一对多怎么设置

id和result的唯一不同是id表示的结果将是当比较对象实例时用到的标识属性。这帮助来改进整体表现,特别是缓存和嵌拍坦念入结果映射。所以不同数据的id应该唯一区别,不然导致数据结果集只有一条数据。顾客和订单的信宽例子做说明:一个顾客可以有多个订单, 一个订单只对应一个顾客


1、代码结构图:


热点内容
七牛存储待遇 发布:2025-05-14 12:27:20 浏览:420
C语言a35a4a5 发布:2025-05-14 11:53:48 浏览:812
android隐藏item 发布:2025-05-14 11:43:56 浏览:327
javawebeclipse编译 发布:2025-05-14 11:35:24 浏览:937
可编程控制器试题 发布:2025-05-14 11:25:32 浏览:121
dsp混合编程 发布:2025-05-14 11:23:10 浏览:250
mysql添加存储过程 发布:2025-05-14 11:23:01 浏览:882
房车旅游自媒体有脚本吗 发布:2025-05-14 11:18:18 浏览:127
android输入法键盘 发布:2025-05-14 11:15:48 浏览:660
谷歌商店安卓手机在哪里 发布:2025-05-14 11:13:46 浏览:537