1、创建SpringBoot项目,导入依赖

 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency><!-- 配置分页依赖 --><!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.2</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!-- jdbc启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><version>2.2.2.RELEASE</version></dependency><!-- 阿里数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency></dependencies>

2、创建用户和账户数据库表,添加测试数据 (也可以通过程序进行添加,所有增删改查都已经测试完毕,可以直接使用)

create table t_user(
userid int primary key auto_increment,
username varchar(30),
userage int,
height double,
address varchar(30)
);create table t_account(
id int primary key auto_increment,
userid int not null,
money double
);insert into t_user values(null,"唐三",18,176.8,"唐门");
insert into t_user values(null,"小舞",17,166.8,"星斗大森林");insert into t_account values(null,4,89789);
insert into t_account values(null,5,56456);

3、用户信息实体类

package mybatis.bean;
import lombok.Data;@Data
public class UserBean {private Integer userid; //todo 用户IDprivate String username; //todo 用户名称private Integer userage; //todo 用户年龄private double height; //todo 身高private String address; //todo 地址
}

4、用户账户金额实体类

package mybatis.bean;
import lombok.Data;@Data
public class Account {private Integer id; //todo 账户IDprivate Integer userid; //todo 用户IDprivate double money; //todo 金额
}

多表联合查询方式一 :通过创建子类方式实现多表联合查询

5、创建子类继承用户信息实体类

package mybatis.bean;
import lombok.Data;@Data
public class UserAccount extends UserBean{private Integer id; //todo 账户IDprivate Integer userid; //todo 用户IDprivate double money; //todo 金额
}

多表联合查询方式二 :通过建立实体类关系 ,只需要在Account实体类中增加一个user属性即可,并生成对应的get和set方法,我使用了@Data注解省略了get及set方法 第二种方式最常用

6、用户账户金额实体类 将用户信息实体类属性加入

package mybatis.bean;
import lombok.Data;@Data
public class Account {private Integer id; //todo 账户IDprivate Integer userid; //todo 用户IDprivate double money; //todo 金额//todo 用户信息private UserBean userBean; //todo 用户信息实体类
}

7、创建UserDao接口 添加@Mapper注解

package mybatis.dao;
import mybatis.bean.Account;
import mybatis.bean.UserAccount;
import mybatis.bean.UserBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@Mapper
public interface UserDao {//todo 添加int insertUser(@RequestBody UserBean userBean);//todo 根据ID查询UserBean selectUserId(@Param("userid") Integer userid);//todo 根据用户ID修改boolean updateUserId(@RequestBody UserBean userBean);//todo 根据用户ID删除boolean deleteUserId(@Param("userid") Integer userid);//todo 多表联合查询第一种方式//todo 查询所有用户信息及账户金额List<UserAccount> selectAll();//todo 多表联合查询第二种方式//todo 联合查询用户信息及账户金额List<Account> selectUserAndAccount();
}

8、创建UserServer接口

package mybatis.server;
import mybatis.bean.Account;
import mybatis.bean.UserAccount;
import mybatis.bean.UserBean;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;public interface UserServer {//todo 添加int insertUser(@RequestBody UserBean userBean);//todo 根据ID查询UserBean selectUserId(@Param("userid") Integer userid);//todo 根据用户ID修改boolean updateUserId(@RequestBody UserBean userBean);//todo 根据用户ID删除boolean deleteUserId(@Param("userid") Integer userid);//todo 多表联合查询第一种方式//todo 查询所有用户信息及账户金额List<UserAccount> selectAll();//todo 多表联合查询第二种方式//todo 查询用户信息及账户金额List<Account> selectUserAndAccount();
}

9、创建UserServerImpl实现类 添加@Server注解

package mybatis.server.impl;
import mybatis.bean.Account;
import mybatis.bean.UserAccount;
import mybatis.bean.UserBean;
import mybatis.dao.UserDao;
import mybatis.server.UserServer;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.util.List;@Service
public class UserServerImpl implements UserServer {@Resourceprivate UserDao userDao;@Overridepublic int insertUser(@RequestBody UserBean userBean) {return userDao.insertUser(userBean);}@Overridepublic UserBean selectUserId(@Param("userid") Integer userid) {return userDao.selectUserId(userid);}@Overridepublic boolean updateUserId(UserBean userBean) {return userDao.updateUserId(userBean);}@Overridepublic boolean deleteUserId(Integer userid) {return userDao.deleteUserId(userid);}//todo 多表联合查询第一种方式@Overridepublic List<UserAccount> selectAll() {return userDao.selectAll();}//todo 多表联合查询第二种方式@Overridepublic List<Account> selectUserAndAccount() {return userDao.selectUserAndAccount();}
}

10、application.yml 配置文件

server:port: 9090spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/test?useSSL=falseusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSourcemybatis:configuration:map-underscore-to-camel-case: truemapper-locations: classpath:mapper/*.xmltype-aliases-package: mybatis.bean

11、Usermapper.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mybatis.dao.UserDao"><!-- 数据库字段和实体类不一致时,使用 resultMap 元素进行配置 --><resultMap id="userResult" type="mybatis.bean.UserBean"><id column="userid" property="userid"></id><result column="username" property="username"></result><result column="userage" property="userage"></result><result column="height" property="height"></result><result column="address" property="address"></result></resultMap><!-- 添加 --><insert id="insertUser" parameterType="UserBean">insert into t_user (userid,username,userage,height,address) values(null,#{username},#{userage},#{height},#{address})</insert><!-- 根据用户ID查询 --><select id="selectUserId" parameterType="Integer" resultMap="userResult">select * from t_user where userid=#{userid}</select><!-- 根据用户ID修改 --><update id="updateUserId" parameterType="UserBean">update t_user set username=#{username},userage=#{userage},height=#{height},address=#{address} where userid=#{userid}</update><!-- 根据用户ID删除 --><delete id="deleteUserId" parameterType="Integer">delete from t_user where userid=#{userid}</delete><!-- 多表联合查询第一种方式 --><!-- 查询所有用户信息及账户余额 --><select id="selectAll" parameterType="java.util.List" resultType="UserAccount">select u.*,a.money,a.id from t_user as u,t_account as a where u.userid = a.userid</select><!-- 多表联合查询第二种方式 --><resultMap id="userAndAccount" type="Account"><id column="id" property="id"></id><result column="userid" property="userid"></result><result column="money" property="money"></result><association column="userid" property="userBean" javaType="mybatis.bean.UserBean"><id column="userid" property="userid"></id><result column="username" property="username"></result><result column="userage" property="userage"></result><result column="height" property="height"></result><result column="address" property="address"></result></association></resultMap><select id="selectUserAndAccount" parameterType="java.util.List" resultMap="userAndAccount">select u.*,a.id,a.money from t_user as u,t_account as a where u.userid = a.userid</select></mapper>

12、创建UserController 控制器类

package mybatis.controller;
import mybatis.bean.Account;
import mybatis.bean.UserAccount;
import mybatis.bean.UserBean;
import mybatis.server.UserServer;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.annotation.Id;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;@RestController
@RequestMapping("/userController")
public class UserController {@Resourceprivate UserServer userServer;//@PostMapping("/insertUser")//todo 添加用户信息@RequestMapping(value = "/insertUser", method = RequestMethod.POST)public int insertUser(@RequestBody UserBean userBean) {int user = userServer.insertUser(userBean);if (user == 1) {System.out.println("添加成功!!");} else {System.out.println("添加失败");}return user;}//todo 根据用户ID查询用户信息@GetMapping("/selectUserId")public UserBean selectUserId(@Param("userid") Integer userid) {UserBean userBean = userServer.selectUserId(userid);if (userBean != null) {userBean.getUserid();userBean.getUsername();userBean.getUserage();userBean.getHeight();userBean.getAddress();System.out.println("查询成功" + "  =" + userBean);} else if (userBean == null) {System.out.println("查询失败!!!!");}return userBean;}//todo 根据用户ID修改用户信息@PostMapping("/updateUserId")public boolean updateUserId(@RequestBody UserBean userBean) {boolean user = userServer.updateUserId(userBean);if (user == true) {System.out.println("修改成功!!");} else if (user == false) {System.out.println("修改失败....");}return user;}//todo 根据用户ID删除用户信息@GetMapping("/deleteUserId")public boolean deleteUserId(@Param("userid") Integer userid) {boolean delete = userServer.deleteUserId(userid);if (delete == true) {System.out.println("删除成功!!!!");} else if (delete == false) {System.out.println("删除失败");}return delete;}//todo 多表联合查询第一种方式//todo 查询所有用户信息及账户余额@GetMapping("/selectAll")public List<UserAccount> selectAll() {List<UserAccount> list = userServer.selectAll();if (list.size() >= 1 || list != null) {System.out.println("查询成功!!");} else if (list.size() < 1 || list == null) {System.out.println("查询失败....");}return list;}//todo 多表联合查询第二种方式//todo 查询所有用户信息和账户信息@GetMapping("/selectUserAndAccount")public List<Account> selectUserAndAccount() {List<Account> userAndAccount = userServer.selectUserAndAccount();if (userAndAccount.size() >= 1 || userAndAccount != null) {System.out.println("查询成功");} else if (userAndAccount.size() < 1 || userAndAccount == null) {System.out.println("查询失败。。。");}return userAndAccount;}
}

13、主程序类 添加 @Configuration注解

package mybatis;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;@SpringBootApplication
@Configuration
public class MybatisApplication {public static void main(String[] args) {SpringApplication.run(MybatisApplication.class, args);}
}

14、测试:

SpringBoot+MyBatis 基于xml实现多表查询的两种方式相关推荐

  1. mysql多表查询有几种方法_多表查询有几种方式

    多表查询有3种方式,分别是:1.传统方式,包括左外连接查询,右外连接查询 ,完全外链接查询:2.子查询方式,包括单行查询,多行查询:3.聚合查询方式,包括求和,平均查询,记录总数. 多表查询有3种方式 ...

  2. “高级”CSS样式一般应用于控制网页内容的外观。附加样式表分为内嵌样式表和外部样式表两种方式。

    "高级"CSS样式一般应用于控制网页内容的外观.附加样式表分为内嵌样式表和外部样式表两种方式.

  3. SilkTest 对 Excel 表操作的两种方式

    SilkTest 对 Excel 表操作的两种方式  这两种方式都是对 SilkTest 运用的最基础的东西,我写得也比较简单.国内这方面的资料实在太少,对初学者可能有帮助. 方式一 : Data D ...

  4. flume系列之:flume基于kafka.topics和kafka.topics.regex两种方式匹配Kafka Topic

    flume系列之:flume基于kafka.topics和kafka.topics.regex两种方式匹配Kafka Topic 一.flume基于kafka.topics匹配Kafka Topic ...

  5. uni-app.02.提交form表单的两种方式

    提交form表单的两种方式 uni-app提交form表单的两种方式 form表单元素较少 前端代码举例 后端代码举例 form表单元素较多 前端代码举例: 后端java代码举例 uni-app提交f ...

  6. mybatis联表查询的几种方式,association和collection的用法

    mybatis的association以及collection的用法 前言: 一.association 的三种用法: 第一种用法:association中使用select 第二种方法,嵌套 resu ...

  7. 使用Mybatis联表查询的几种方式

    mybatis的association以及collection的用法 前言: 在项目中,某些实体类之间肯定有关联关系,比如一对一,一对多等.mybatis 中使用 association 和 coll ...

  8. Mybatis关联查询的两种方式

    首先要了解对象的三种关联方式 *数据库表的关联关系有三种,一对一,一对多,多对多 一对一   是通过在任意一方的主键,引入对方主键作为外键来实现的,就是说主键与外键为同一字段 一对多   是通过在&q ...

  9. mybatis一对多查询的两种方式

    user 和order 对象 package com.itheima.mybatis.pojo;import java.io.Serializable; import java.util.Date;p ...

最新文章

  1. cad里面f命令用不了,CAD出现命令无效、失灵等问题?不用慌,两招帮你快速解决...
  2. 需要用到的各种Jar包
  3. C语言数据类型大学霸IT达人
  4. 物联网:应用创新带来万亿元市场前景
  5. 7.9 规划Varnish缓存
  6. Vue首屏加载白屏问题及解决方案
  7. 连亏172亿,割肉卖楼,年收3700亿、闻名全球的巨头,败退中国!
  8. fatal: Could not read from remote repository.
  9. java TreeSet去重与排序入门
  10. 视频录制软件进行电脑屏幕录像的使用方法
  11. Python(循环)求方差并将结果组成数组
  12. Excel知道身份证号码怎么快速提取出年龄
  13. Taylor Swift -- Crazier 附英文和中文歌词
  14. 电子制造业生产车间物料怎么管?方法有哪些
  15. 人工客服 计算机英语怎么说,人工服务用英文怎么说? 电话上的。。。谢谢
  16. 天猫店群玩法有流量销售额却上不去?可能是转化率出了问题。
  17. js怎么获取设备的地理位置
  18. 鱼刺图java_使用java实现鱼刺图
  19. 一年级计算机算文具吗,老师提醒一年级新生家长,这几种文具不要买,买了后悔...
  20. 【实战篇】没有绝对安全的系统:记一次服务器沦陷后的分析

热门文章

  1. 新思路计算机二级教育机构排行,新思路教育·
  2. latex调整itemize的间距大小
  3. Docker版 Linux百度网盘备份工具
  4. DJYGUI系列文章四:GK文本显示
  5. 迷你世界手游怎么在电脑上玩?tcgames电脑玩手机游戏助手完美适配
  6. Lucene笔记15-Lucene的分词-通过TokenStream显示分词
  7. 通过复合唯一索引及redis实现抢单业务模式
  8. mysql硬盘最长活动时间100%_软件引起的磁盘最长活动时间100%
  9. biginteger 原理_BigInteger详解
  10. BigInteger精讲