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. mysql集群--基于centos7

    1 MySQL主从备份 主机:192.168.43.8 从机:192.168.43.6 条件:主机和从机都安装了mysql,开启了二进制日志 安装mysql (mysql 和 mysql-server ...

  2. Java课程设计---学生信息管理系统需求分析及总体设计

    按照软件工程实践的原则,开发大型程序需要经历需求分析.总体设计.详细设计.编码实现.系统测试.系统维护等几个阶段. 1.需求分析 本阶段是整个软件开发过程中最重要的环节.通过了解实际运行的系统或与用户 ...

  3. ssh执行命令或者脚本里最好先加上 source /etc/profile

    记: 写一次shell脚本,发现总提示 找不到JAVA_HOME .明明已经配了环境变量,并且java -version也已经能输出信息,但就是提示. 后来在 脚本中加入第一句代码 source /e ...

  4. ROS入门介绍

    1.ROS版本介绍 ROS版本:(已经推出数十个版本) 2013 ------> Hydro 2014 ------> Indigo (对应Ubuntu14.04) (现在已经基本废弃) ...

  5. Java中ArrayList和LinkedList的异同

    一:ArrayList和LinkedList的大致区别如下: 1.ArrayList是实现了基于动态数组的数据结构,ArrayList实现了长度可变的数组,在内存中分配连续的空间.遍历元素和随机访问元 ...

  6. Go代码规范梳理

    Go代码规范(Code Review) 总结几个开发过程中经常会犯的代码规范错误 参考链接:https://learnku.com/go/wikis/48375 注释语句 // Request 表示运 ...

  7. Spring注解简析

    JAVA 元注解 @Documented @Inherited @Retention @Target @Repeatable @Native 在java.lang.annotation包下,除了@Na ...

  8. python+pytest接口自动化(5)-发送post请求

    简介 在HTTP协议中,与get请求把请求参数直接放在url中不同,post请求的请求数据需通过消息主体(request body)中传递. 且协议中并没有规定post请求的请求数据必须使用什么样的编 ...

  9. Bugku CTF_web4

    1.打开网页,得到信息如下 2.打开hackbar,在body里传入post参数. 3.得到flag如下 4.主要考察post传参,和简单的php代码审计.

  10. 矩池云上编译安装dlib库

    方法一(简单) 矩池云上的k80因为内存问题,请用其他版本的GPU去进行编译,保存环境后再在k80上用. 准备工作 下载dlib的源文件 进入python的官网,点击PyPi选项,搜索dilb,再点击 ...