Mybatis-Plus 一对多Mybatis-Plus

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

首先来看效果

Mysql数据库

用户表

角色表

用户与角色的中间表

中间表如下



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

Pojo

在User的Pojo 添加List

package com.zcx.pojo;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import java.util.List; /**
* @author zhaochangxin
* @date 2022/3/2 14:34
*/
// 生成getAndSet方法
@Data
// 有参
@AllArgsConstructor
// 无参
@NoArgsConstructor
@TableName("platform_usertest")
public class User implements Serializable {
// 默认自增字段
@TableId(type = IdType.ASSIGN_ID)
private Long id;
// 用户名
private String username;
// 密码
private String password;
// 状态
private int status;
// 创建者
@TableField("created_by")
private BigInteger createdBy;
// 创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
// 字段添加填充内容
@TableField(value = "created_date", fill = FieldFill.INSERT)
private Date createdDate;
// 最后修改者
@TableField("last_modified_by")
private BigInteger lastModifiedBy;
// 最后修改时间
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
// 字段添加填充内容
@TableField(value = "last_modified", fill = FieldFill.INSERT_UPDATE)
private Date lastModified;
// 所有者
private String owner;
// 乐观锁
@Version
private Integer version;
// 逻辑删除
@TableLogic
private Integer deleted;
// 权限
@TableField(exist = false)
private List<Role> roles;
}

IuserService

package com.zcx.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zcx.pojo.User; import java.util.List; /**
* @author zhaochangxin
* @Title: IUserService
* @Package com.zcx.service
* @Description: IUserService
* @date 2022/3/30 17:21
*/
public interface IUserService extends IService<User> {
List<User> queryAllUser();
}

在ServiceImpl 实现该接口方法

package com.zcx.pojo;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import java.util.List; /**
* @author zhaochangxin
* @date 2022/3/2 14:34
*/
// 生成getAndSet方法
@Data
// 有参
@AllArgsConstructor
// 无参
@NoArgsConstructor
@TableName("platform_usertest")
public class User implements Serializable {
// 默认自增字段
@TableId(type = IdType.ASSIGN_ID)
private Long id;
// 用户名
private String username;
// 密码
private String password;
// 状态
private int status;
// 创建者
@TableField("created_by")
private BigInteger createdBy;
// 创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
// 字段添加填充内容
@TableField(value = "created_date", fill = FieldFill.INSERT)
private Date createdDate;
// 最后修改者
@TableField("last_modified_by")
private BigInteger lastModifiedBy;
// 最后修改时间
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
// 字段添加填充内容
@TableField(value = "last_modified", fill = FieldFill.INSERT_UPDATE)
private Date lastModified;
// 所有者
private String owner;
// 乐观锁
@Version
private Integer version;
// 逻辑删除
@TableLogic
private Integer deleted;
// 权限
@TableField(exist = false)
private List<Role> roles;
}

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. 工程师计划1-> 项目管理1 | 项目与项目管理

    这学期报了一门课,项目管理,是一门网课,但跟之前不一样,我期待能够从这门课中学到一些东西.这是我上学期在组织毛概小组大作业时遇到困难时,意识到自己应该学习这门课. 工程师计划其实是一直以来想要把学习的 ...

  2. linux – 使用find -name命令的通配符和双引号

    转至:https://www.icode9.com/content-3-209958.html 双引号(和单引号)是否抑制了通配符扩展?如果是这样,那么为什么以下呢? find -name " ...

  3. 60天shell脚本计划-11/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年3月18日 --修改时间:2021年3月22日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...

  4. Java面试题2017

    一.Java 基础 1. String 类为什么是 final 的. 2. HashMap 的源码,实现原理,底层结构. 3. 说说你知道的几个 Java 集合类:list.set.queue.map ...

  5. MailKit和MimeKit 收发邮件

    新建项目,引用MailKit和MimeKit NuGet包 using CommonTool.MailKit; using System; using System.Collections.Gener ...

  6. Flask 自建扩展

    自建扩展介绍 Flask扩展分两类 纯功能, 如: Flask-Login 提供用户认证 对已有的库和工具包装(简化继承操作,并提供有用的功能,更方便) 如: Flask-SQLAlchemy 包装了 ...

  7. 居然可以像玩游戏一样学Git

    工作中经常用到 git,但是用到的指令也都是比较初级的.简单的.当时学习的过程也是有点痛苦.各种概念理解起来要么靠想象,要么自己创建工程提交记录,然后执行指令,看具体效果.这样学下来是事倍功半. 在搜 ...

  8. Excel VBA中写SQL,这些问题的方法你一定要牢记

    小爬之前的文章 [Excel VBA中写SQL,这些问题你一定为此头痛过]中详细讲诉了一些常见的VBA 中使用SQL遇到的问题,这里再补充两个常见的问题场景及对应的解决方案,希望你们看了后能够思路开阔 ...

  9. 矩池云上如何快速安装nvcc

    若您想要使用 nvcc,但是所选的镜像中没有预装 nvcc,可按照如下操作自行安装. 1.检查系统版本 source /etc/os-release && echo $VERSION_ ...

  10. 移动端开发为什么使用@2x@3x图片

    物理.逻辑与位图像素的概念 关于设备物理像素和逻辑像素,这两个像素一个是实体的,一个是抽象的单位.除此之外还有一个不可忽视的像素,就是位图像素. 物理像素(设备像素):指的是设备屏幕实际拥有的像素点. ...