SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)
下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式。
首先我们先创建两个数据库表,分别是user用户表和account账户表
user表:

account表:

然后创建实体类


**第一种通过创建子类的方式查询
需求:查询所有的用户基础信息以及其所属的账户中的金额
1.创建想要得到多表查询数据的实体类(子类)

2.创建对应的Dao以及Service及实现类


3.xml中写实现查询的sql语句

4.编写控制器并访问资源路径

访问资源路径:

**第二种通过建立实体类关系方式查询
需求:查询所有账户及其所属用户的所有基础用户信息
这种方式也是目前为止最为常用的一种方式,许多教学教程上也都采用了这种方式,那么我们一起来看看。
首先这种方式不需要向第一种方式那样创建一个子类用来封装查询的结果集,但从表实体应该包含一个主表实体的对象引用
只需要在Account实体类中增加一个user属性即可,并生成对应的getter和setter方法。修改如下:

接下来是在xml中进行映射实体类关系

对应的dao和service就不再具体截图出来了,接下来是控制器(也没变化)。

接下来访问资源路径:

总结:
两种方式都是对实体类进行了一些调整,第二种用了跟实体类建立了映射关系,关于Mybatis中实体类属性与数据库列表间映射方法可以看后面的随笔。
SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)的更多相关文章
- 五 Mybatis一对一关联查询的两种方式(基于resultType&基于resultMap)
关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe,一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的po ...
- mybatis一对一联表查询的两种常见方式
1.一条语句执行查询(代码如下图) 注释:class表(c别名),teacher表(t别名)teacher_id为class表的字段t_id为teacher表的字段,因为两者有主键关联的原因,c_i ...
- strus2中获取表单数据 两种方式 属性驱动 和模型驱动
strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...
- Python与数据库[2] -> 关系对象映射/ORM[2] -> 建立声明层表对象的两种方式
建立声明层表对象的两种方式 在对表对象进行建立的时候,通常有两种方式可以完成,以下是两种方式的建立过程对比 首先导入需要的模块,获取一个声明层 from sqlalchemy.sql.schema i ...
- springboot打成jar包和war包的两种方式,并引入第三方jar包!
springboot打成jar包和war包的两种方式,并引入第三方jar包! 首先把需要引入的第三方jar包引入到本地项目中,在引用的模块下加一个lib文件夹 一.打成jar包 1.修改pom文件里的 ...
- Mybatis控制台打印SQL语句的两种方式
问题描述在使用mybatis进行开发的时候,由于可以动态拼接sql,这样大大方便了我们.但是也有一定的问题,当我们动态sql拼接的块很多的时候,我们要想从*mapper.xml中直接找出完整的sql就 ...
- Python与数据库 sqlalchemy 建立声明层表对象的两种方式
在对表对象进行建立的时候,通常有两种方式可以完成,以下是两种方式的建立过程对比 首先导入需要的模块,获取一个声明层 1 from sqlalchemy.sql.schema import Table, ...
- mybatis(二)执行CRUD操作的两种方式配置和注解
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- mybatis一对多联表查询的两种常见方式
1.嵌套结果查询(部分代码如下) sql语句接上: 注释:class表(c别名),student表teacher(t别名)teacher_id为class表的字段t_id为teacher表的字段,因为 ...
随机推荐
- 套接字编程简介: IPV4套接字地址结构/ 通用套接字地址结构/ IPV6套接字地址结构/新通用套接字地址结构
IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中. struct in_addr { in_addr_t ...
- libvirt原理
引用原文: https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/80142155 libvirt是目前使用最为广泛的针对KVM虚拟机进 ...
- 欧拉法求解常微分方程(c++)
#include<iostream> #include<iomanip> using namespace std; int main() { double x, y, h; ...
- hotspot的安全区(saferegion)和安全点(safepoint)
1.通过OopMap完成根节点枚举 HotSpot虚拟机使用可达性分析算法确定对象是否可以被GC. 可达性分析算法从一系列GCRoot对象开始,向下搜索引用链,如果一个对象没有与任何GCRoot对象关 ...
- “未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
一.背景: 开发一个工具的小项目,因为数据少,我就不想安装sqlserver数据库,就用Access数据库. 二.问题: 在客户安装程序的时候,接口访问Access数据库的时候,报错“未在本地计算机上 ...
- 【技术博客】Django+uginx+uwsgi框架的服务器部署
1.登录服务器 使用ssh来直接登录到服务器terminal进行操作,推荐使用XShell和XFtp来进行远程登录和文件传输. 2.运行环境准备 本组获得的华为云服务器为ubuntu16.04版本,先 ...
- [技术博客]基于动态继承类、WebDriver的浏览器兼容性测试框架搭建
问题背景 观察使用selenium进行自动化测试的过程,我们可以将它概述为: 启动测试进程,在该进程中构建WebDriver 启动浏览器进程,将它与WebDriver建立连接 使用WebDriver向 ...
- MORMOT REST文件上传
MORMOT REST文件上传 上传数据格式必须是:MULTIPART/FORM-DATA uses SynCommons 后端处理参照下列代码: 后端处理参照下列代码: procedure TWeb ...
- python操作mysql基础一
python操作mysql基础一 使用Python操作MySQL的一些基本方法 前奏 为了能操作数据库, 首先我们要有一个数据库, 所以要首先安装Mysql, 然后创建一个测试数据库python_te ...
- java实现的一个【快速排序 】算法【原创】
import java.util.Arrays; import org.apache.commons.lang.ArrayUtils; public class Test { public stati ...