Mybatis-Plus 一对多Mybatis-Plus

不写一句sql语句实现一对多

首先来看效果

Mysql数据库

用户表

角色表

用户与角色的中间表

中间表如下



将三张表通过Mybatis Plus 的代码生成器生成到目录下

Pojo

在User的Pojo 添加List

  1. package com.zcx.pojo;
  2. import com.baomidou.mybatisplus.annotation.*;
  3. import lombok.AllArgsConstructor;
  4. import lombok.Data;
  5. import lombok.NoArgsConstructor;
  6. import org.springframework.format.annotation.DateTimeFormat;
  7. import java.io.Serializable;
  8. import java.math.BigInteger;
  9. import java.util.Date;
  10. import java.util.List;
  11. /**
  12. * @author zhaochangxin
  13. * @date 2022/3/2 14:34
  14. */
  15. // 生成getAndSet方法
  16. @Data
  17. // 有参
  18. @AllArgsConstructor
  19. // 无参
  20. @NoArgsConstructor
  21. @TableName("platform_usertest")
  22. public class User implements Serializable {
  23. // 默认自增字段
  24. @TableId(type = IdType.ASSIGN_ID)
  25. private Long id;
  26. // 用户名
  27. private String username;
  28. // 密码
  29. private String password;
  30. // 状态
  31. private int status;
  32. // 创建者
  33. @TableField("created_by")
  34. private BigInteger createdBy;
  35. // 创建时间
  36. @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
  37. // 字段添加填充内容
  38. @TableField(value = "created_date", fill = FieldFill.INSERT)
  39. private Date createdDate;
  40. // 最后修改者
  41. @TableField("last_modified_by")
  42. private BigInteger lastModifiedBy;
  43. // 最后修改时间
  44. @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
  45. // 字段添加填充内容
  46. @TableField(value = "last_modified", fill = FieldFill.INSERT_UPDATE)
  47. private Date lastModified;
  48. // 所有者
  49. private String owner;
  50. // 乐观锁
  51. @Version
  52. private Integer version;
  53. // 逻辑删除
  54. @TableLogic
  55. private Integer deleted;
  56. // 权限
  57. @TableField(exist = false)
  58. private List<Role> roles;
  59. }

IuserService

  1. package com.zcx.service;
  2. import com.baomidou.mybatisplus.extension.service.IService;
  3. import com.zcx.pojo.User;
  4. import java.util.List;
  5. /**
  6. * @author zhaochangxin
  7. * @Title: IUserService
  8. * @Package com.zcx.service
  9. * @Description: IUserService
  10. * @date 2022/3/30 17:21
  11. */
  12. public interface IUserService extends IService<User> {
  13. List<User> queryAllUser();
  14. }

在ServiceImpl 实现该接口方法

  1. package com.zcx.pojo;
  2. import com.baomidou.mybatisplus.annotation.*;
  3. import lombok.AllArgsConstructor;
  4. import lombok.Data;
  5. import lombok.NoArgsConstructor;
  6. import org.springframework.format.annotation.DateTimeFormat;
  7. import java.io.Serializable;
  8. import java.math.BigInteger;
  9. import java.util.Date;
  10. import java.util.List;
  11. /**
  12. * @author zhaochangxin
  13. * @date 2022/3/2 14:34
  14. */
  15. // 生成getAndSet方法
  16. @Data
  17. // 有参
  18. @AllArgsConstructor
  19. // 无参
  20. @NoArgsConstructor
  21. @TableName("platform_usertest")
  22. public class User implements Serializable {
  23. // 默认自增字段
  24. @TableId(type = IdType.ASSIGN_ID)
  25. private Long id;
  26. // 用户名
  27. private String username;
  28. // 密码
  29. private String password;
  30. // 状态
  31. private int status;
  32. // 创建者
  33. @TableField("created_by")
  34. private BigInteger createdBy;
  35. // 创建时间
  36. @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
  37. // 字段添加填充内容
  38. @TableField(value = "created_date", fill = FieldFill.INSERT)
  39. private Date createdDate;
  40. // 最后修改者
  41. @TableField("last_modified_by")
  42. private BigInteger lastModifiedBy;
  43. // 最后修改时间
  44. @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
  45. // 字段添加填充内容
  46. @TableField(value = "last_modified", fill = FieldFill.INSERT_UPDATE)
  47. private Date lastModified;
  48. // 所有者
  49. private String owner;
  50. // 乐观锁
  51. @Version
  52. private Integer version;
  53. // 逻辑删除
  54. @TableLogic
  55. private Integer deleted;
  56. // 权限
  57. @TableField(exist = false)
  58. private List<Role> roles;
  59. }

Mybatis-Plus 如何实现一对多关系 举例 用户与角色的更多相关文章

  1. MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别

    DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL ...

  2. Mybatis框架中实现双向一对多关系映射

    学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...

  3. MyBatis之级联——一对多关系

    上次我们讲到了MyBatis的一对一关系的表示,简单回顾一下一对一关系就是一个学生只有一个学生证.那么什么是一对多关系呢?一个学生有多个课程这就是一对多的关系.我们结合上一章中的学生和学生证,在此基础 ...

  4. MyBatis日记(五):一对一关系,一对多关系

    一对一关系: 首先在数据库中新增地址表(t_address)用于存储人员的地址信息: CREATE TABLE `t_address` ( `id` ) NOT NULL AUTO_INCREMENT ...

  5. MyBatis加强(1)~myBatis对象关系映射(多对一关系、一对多关系)、延迟/懒加载

    一.myBatis对象关系映射(多对一关系.一对多关系) 1.多对一关系: ---例子:多个员工同属于一个部门. (1)myBatis发送 额外SQL: ■ 案例:员工表通过 dept_id 关联 部 ...

  6. 0050 MyBatis关联映射--一对多关系

    一对多关系更加常见,比如用户和订单,一个用户可以有多个订单 DROP TABLE IF EXISTS customer; /*用户表*/ CREATE TABLE customer( `pk` INT ...

  7. [NHibernate]一对多关系(级联删除,级联添加)

    目录 写在前面 文档与系列文章 一对多关系 一个例子 级联删除 级联保存 总结 写在前面 在前面的文章中,我们只使用了一个Customer类进行举例,而在客户.订单.产品中它们的关系,咱们并没有涉及, ...

  8. hibernate中一对多关系中的inverse,cascade属性

    举例说明: 一对多关系的两张表:boy.girl(一个男孩可以多个女朋友) boy表结构 Field   Type        ------  -----------  name    varcha ...

  9. 【Java EE 学习 45】【Hibernate学习第二天】【对象的三种状态】【一对多关系的操作】

    一.对象的三种状态. 1.对象有三种状态:持久化状态.临时状态.脱管状态(游离状态) 2.Session的特定方法能使得一个对象从一个状态转换到另外一个状态. 3.三种状态的说明 (1)临时状态:临时 ...

随机推荐

  1. 3、如何查看window 下的cpu参数

    一.windows下查看CPU信息 windows系统使用systeminfo命令可以查看CPU信息,如: Intel64 Family 6 Model 158 Stepping 10 Genuine ...

  2. linux系统挂载磁盘

    linux系统挂载磁盘 ## 将硬盘挂载到/mnt/disk1下 # 检查磁盘状态,确认分区 fdisk -l # 格式化磁盘(分区) mkfs.ext4 /dev/sda #根据机器上的命名 以sd ...

  3. HTML背景图加载过慢解决思路

    压缩图片的大小 第一个压缩图片网站 第二个压缩图片网站

  4. oj教程--队列

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的 ...

  5. VUE3 之 使用标签实现动画与过渡效果 - 这个系列的教程通俗易懂,适合新手

    1. 概述 巴纳姆效应告诉我们: 人们更容易相信笼统的.常见的人格描述,并觉得特别适合自己,认为该描述真实地反映了自己的人格面貌. 这也是所有算命先生的小把戏,算命先生通常把话说的很笼统,很通用,基本 ...

  6. 开机弹出一下Visual Studio Just-In-Time对话框的问题

    开机弹出一下Visual Studio Just-In-Time对话框 开机弹出一下Visual studio just-in-time对话框,出现一下问题,且点击确定后又弹出第二个对话框, 解决方法 ...

  7. 矩池云 | 搭建浅层神经网络"Hello world"

    作为图像识别与机器视觉界的 "hello world!" ,MNIST ("Modified National Institute of Standards and Te ...

  8. thinkphp6的一些用法

    Thinkphp6笔记一:安装http://www.thinkphp.cn/topic/68371.htmlThinkphp6笔记二:开启多应用模式http://www.thinkphp.cn/top ...

  9. 微信小程序授权登录将open_id传至后台并入库

    要求能把用户昵称.头像以及open_id写入数据库,服务端保持用户登录状态 wxml: <block wx:else> <button type="primary" ...

  10. MySQL-DB-封装-入门版

    <?php class MysqlDb{ public $host = "127.0.0.1"; public $user = "root"; publi ...