myBatis处理表与表之间的关系

(Java)通过案例讲解项目中表与表之间关联的处理步骤 这里通过一个用户表和角色表关联的案例,向大家展示,项目中对于表与表之间关系的处理步骤 文章目录一、案例介绍二、用户与角色关联 一、案例介绍 (1)user 用户表: (2)role 角色表: (3)用户与角色关联的关系: 用户与角色之间是多对多关系,我们通过 users_role 表来描述其关联,在实体类中 User 中存在 List,在Role中有 List. 二、用户与角色关联 用户与角色是多对多的关系,我们要建立它们之间的关系,只需要在中间表 user_role 插入数据即可 (1)查询该用户可以 阅读详情

 比如要在帖子回复表里显示其它两张相关联表的信息。

1)主要的数据实体类是Reply,相关联的实体表的数据是Theme,UserInfo。

   那么首先创建的是ReplyView的实体对象。

//要关联的哪些数据,就直接把该数据加入到继承类的字段里。

package com.model;


public class ReplyView extends Reply{
private String userName;
private String themeName;//帖子名称
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getThemeName() {
return themeName;
}
public void setThemeName(String themeName) {
this.themeName = themeName;
}




}


2)编写相应的处理接口(Mapper接口):


package com.dao.imp;


import com.dao.IDaoBBS;
import com.model.Reply;


public interface ReplyMapper extends IDaoBBS<Reply> {


}


3)编写相应的SQL配置文件(ReplyMapper.xml)。


<?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.dao.imp.ReplyMapper">
 <select id="getModel" resultType="com.model.ReplyView">
    select r.*,u.*,t.*
    from reply r inner join userInfo u on r.userId=u.userId
    inner join theme t on r.themeId=t.themeId
    where r.replyId=#{id}
  </select>
  
</mapper>


4)将刚编写的mapper映射文件加入到mybatis-config.xml中:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <properties resource="config.properties">
  </properties>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${jdbc.driverClass}"/>
        <property name="url" value="${jdbc.jdbcUrl}"/>
        <property name="username" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/model/UserInfoMapper.xml"/>
    <mapper resource="com/model/ReplyMapper.xml"/>
  </mappers>
</configuration>

5)编写测试类:

public static void main(String[] args) {
// TODO Auto-generated method stub
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
ReplyMapper replyMapper = sqlSession.getMapper(ReplyMapper.class);
ReplyView rv = (ReplyView) replyMapper.getModel("123");
System.out.println("帖子内容:"+rv.getReplycontent());
System.out.println("用户名:"+rv.getUserName());

【MyBatis】映射一对多和多对多关系配置(看完这篇不吃亏) resultMap 允许我们定义复杂的映射规则,将结果集中的多个字段映射到一个对象中。因为我们是一对多的所以我们再编写vo类的时候,里面是使用list集合。建立我们给的sql文件,运行它用这里面的表,让我们更好的示例操作。在我们的配置文件里面配置我们需要的几个表,自动生成所需文件。当然我们要先建立这个包里面的类才能更好的下一步。在原本的基础的sql上我们增加一个一对多的sql。在上面我们已经写好了sql,我们生成对应的。在我们的里面添加一个sql的方法编写。在生成的接口类里面编写对应的接口方法。 阅读详情

相关推荐

vue + video.js 加载多种视频流(HLS、FLV、RTMP、RTSP)

由于需要在一个项目内接入多种常用的视频流,所以接触到video.js,这里就做个记录。vue安装就不讲了,直接从项目开始了。RTSP格式已测试,无法成功播放,浏览器就识别不了STSP协议(提供两个解决方案:第一个是通过后端去转格式。第二个方案就是安装插件/中间件。目前想用浏览器直接播放RTSP格式流,没有其他更好的解决方法。

qq_17627195的博客 1万+

学习MyBatis过程中的记录之实体类与表的对应关系

之前在网上看到的一个MyBatis做的开源项目,在学习过程中,一直对它的表与实体类之间的对应关系比较困惑。之前一直的印象是数据库中的表与实体类间的关系都是一一对应的,但是这个开源项目中,与表对应的实体包下面,有很多实体类,在动手做了一些修改之后,对此有了一点新的认识,在此记录下来,有不对的地方欢迎大家指正。 在数据库中添加一个培训表sys_train,表中有如下字段 train

gx1058742912的博客 3750

通达信量化打板选股指标公式源码副图

X_2:=3*LOW;X_13:=4;X_14:=3;X_15:=2;X_16:=1;

gpzb7的博客 4492

mybatis处理表与表之间的关系

比如要在帖子回复表里显示其它两张相关联表的信息。  处理的第一种方式:  1)主要的数据实体类是ReplyInfo,相关联的实体表的数据是TitleInfo,UserInfo。    那么首先创建的是ReplyInfoView的实体对象。为    packagecom.gxa.bj.model;   public class ReplyInfoView extendsReplyInfo

qq_27752831的博客 694

Vivado工程芯片型号更换全流程:从IP更新到生成新bit文件(避坑指南)

本文详细介绍了Vivado工程中更换芯片型号的全流程,包括IP更新、约束文件适配和生成新bit文件的关键步骤。特别针对FPGA开发中常见的兼容性问题提供避坑指南,帮助开发者高效完成芯片迁移,确保设计稳定性和性能优化。

weixin_42549451的博客 300

黑科技已上线|Lazada数据分析软件,一键式搞定你的店铺!

工欲利其事,必先利其器。在lazada跨境电商的整个流程中,适当的使用一些工具,不仅能大大的简化工作流程,而且可以提高实施效率。Mengla专为lazada电商卖家行业精细化分析lazada数据分析软件都有哪些强大功能! 一、两大优势: 1.海量数据: 数据覆盖面积大;数据分析维度逛;精确算法抓取海量数据;亿万数据秒级响应多种数据来源; 2.技术成熟: 深耕SaaS大数据挖掘;提供一站式数据分析服务;拥有领先的采集技术和运算模型架构; 二、Lazada数据分析软件的功能: 1.各国站点一键分析: 马来西亚

Menglakeji的博客 1147

Mybatis之表之间映射关系总结

1.什么是表之间映射关系

sunpy 8149

XCP实战系列介绍09-基于Vehicle Spy进行XCP测量步骤详解

详细介绍如何使用Vehicle Spy进行XCP测量

initiallizer的博客 1393

Mybatis中表之间的关联关系

表之间的的关系

m0_56336875的博客 482

【AUTOSAR-COM】-10.5-APP CAN Frame/PDU“发送周期不准“的影响因素

一个Tx PDU在COM模块中的数据流; Tx APP CAN Frame/PDU"发送周期不准"的影响因素;

「汽车电子助手」的博客 2388

【沃顿商学院学习笔记】商业基础——Financing:05 名义利率和实际利率 APR& EAR

商业基础——名义利率和实际利率 本章主要是从名义利率和实际利率的相关概念和计算方法进行学习。 名义利率和实际利率 APR&amp;amp; EAR 根据下图可以直到: APR,QUOTED RATE在精算中又叫名义利率,比如一个房产贷款quoted rate or APR是12%,且按月复利,那么说明它的月实际利率是12%/12=1% EAR是effecive annual rate,在精算中叫实际利率,...

ECNU乐扣老师——区块链、可计算情感 1万+

MyBatis处理表与表之间的关系

列子: 比如要在帖子回复表里显示其它两张相关联表的信息 处理的第一种方式:  1)主要的数据实体类是ReplyInfo,相关联的实体表的数据是PostInfo,UserInfo。    那么首先创建的是ReplyInfoView的实体对象。 package com.gxa.bj.modle package com.gxa.bj.modle; public class Repl

Future_IT_Daniel的博客 1051

【一看就会】Autoware.universe中静态绕障路线的生成逻辑

在路径行为规划中,前期根据地图和起点终点,生成了一组连续可行的路径段序列(lanelets),然后后续路径行为规划,又会进行起始点,终止点,避障绕障路径的路径规划,并且会调用route_handler中的函数,进行中心线生成,最后生成路径,后续再给速度行为规划进行速度规划。在autoware.universe的规划中,是基于规则的规划,而其中的规则又是为了解决不同场景的。而这些场景,大部分是为了解决路上障碍物(静态、动态、行人、车辆等等)。

weixin_48386130的博客 321

【Mybatis】常见面试题:处理表与表之间的关系:多对一,一对多

Mybatis处理表与表之前一对多,多对一关系的方式

唯有努力,方可自信! 677

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mybatis的多表操作

mybatis的多表操作 mybatis表之间的关系 mybatis表之间的关系有: 一对多 多对一 一对一 多对多 举例: 多对一 一个用户可以有多个订单 多个订单属于一个用户 一对一 一个人对应一个身份证号 多对多 老师与学生之间的关系 一个学生可以被多个老师教 一个老师可以同时交多个学生 用户与角色 一个用户可以有多个角色 一个角色可以对应多个用户 特例 如果拿出每一..

小JAVA千的博客 327

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MyBatis-Plus 学习 : 注解(三)

我们的愿景是成为 MyBatis 最好的搭档,就像中的 魂斗罗 1P、2P,基友搭配,效率翻倍。

weixin_42188778的博客 288

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

多对一映射处理&延迟加载

表和表有关系,所映射的实体类也要有关系表对应实体类,字段对应属性表里面一条数据对应一个实体类对象所以:对一对应一个对象,对多对应一个集合。 lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载 aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。

zjw_rp的博客 198

Mybatis框架进行多表操作处理表关系从建表开始,包含一对一,一对多 ,resultMap结果集映射的详细说明

概述 本篇博文主要介绍 多张表操作多多张表之间一对一,一对多关系进行介绍, resultMap 结果集映射将进行详细说明 由于本人水平有限,希望各位热爱研发同僚多多指导,在下方讨论 一对一关系 第一步 建表 员工表与身份证表 员工表与身份证表 一个员工有一个身份证 因此是一对一关系 第一种表 员工表 --员工表 create table emp1( id varchar2(20) ...

qq_44025656的博客 469

mybaties处理表与表的关系第一种方式(多表查询)

1.mybatis处理表与表之间的关系?  比如要在帖子回复表里显示其它两张相关联表的信息。  处理的第一种方式:  1)主要的数据实体类是ReplyInfo,相关联的实体表的数据是TitleInfo,UserInfo。    那么首先创建的是ReplyInfoView的实体对象。    package com.gxa.bj.model;   public class ReplyIn

mygod1994的博客 448

Mybatis的三种映射关系以及联表查询

1、MyBatis中表之间的关系是如何映射的处理的?resultType:使用多表查询我们经常会resultType="java.utils.Map" ,我们不推荐这样写,但是这样写对自己比较有利。好处:resultType 是直接将查询结果映射到 Java 对象,可以使用简单的类型(如 int、String)或复杂的自定义类型。它的好处是简单直观,易于使用。弊端:对于复杂的关系映射,resultType 可能会变得冗长,并且无法处理一对多或多对多的关系映射。

Ying_hao_kun的博客 2846

常用的表关联方式?MyBatis如何处理表关联?

内连接 inner join ,只返回两张表中满足连接条件的数据。外连接 outer join ,返回两张表中满足连接条件的数据,同时返回不满足连接条件的数据。外左连接:left outer join 或 left join,返回左表中的所有记录和右表中满足连接条件的记录。外右连接:right outer join 或 right join,返回右表中的所有记录和左表中满足连接条件的记录。1SSM框架代码重用性高 相当于先盖好一栋楼的大体框架结构 耦合度低 便于开发和维护 适合开发复杂的项目 但是需要清楚

CGkakeShaLuo的博客 1537

mybatis多表查询(知识+例子)

1、多表查询概念 多表查询是指在一个SQL查询中涉及到两个或多个数据库表的数据操作。这种操作通常用于处理表之间的关系,例如一对一、一对多和多对多的关系。 在实际应用中,数据通常存储在多个相关的表中。例如,一个用户可能有多个订单,一个订单可能包含多个商品。通过多表查询,可以同时获取多个表中的数据,从而方便地进行数据分析和处理。 2、多表查询的类型 1.一对一(One-to-One) 一对一关系是指一个表中的一条记录与另一个表中的一条记录相关联。例如,用户表和用户详情表之间的一对一关系。 2.

lovellsj的博客 1463

处理表之间的映射

mybatis

weixin_53089304的博客 606
上一篇: myBatis配置
下一篇: myBatis里表与表之间的关系 多对一时候
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值