快速入门spring data jpa 2,多表操作,逻辑删除

本文档详细介绍了如何在Spring Data JPA中进行多表操作,包括实体类和接口的设定、数据库表关系配置以及一对多、多对多关系的级联操作。同时,还探讨了逻辑删除的实现,通过@Where注解进行无Session状态下的逻辑删除操作。
摘要由CSDN通过智能技术生成

多表

单表jpa


提示:以下是本篇文章正文内容,下面案例可供参考

一、多表

在之前单表的环境上操作,注意说的是环境
如坐标,spring配置文件等
具体查看在,
单表jpa

实体类

Customer类

@Entity
@Table(name = "cst_customer")
public class Customer {
   

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "cust_id")
    private Long custId;
    @Column(name = "cust_name")
    private String custName;
    @Column(name = "cust_source")
    private String custSource;
    @Column(name = "cust_industry")
    private String custIndustry;
    @Column(name = "cust_level")
    private String custLevel;
    @Column(name = "cust_address")
    private String custAddress;
    @Column(name = "cust_phone")
    private String custPhone;
    
  setter ... getter....
}


LinkMan 类

@Entity
@Table(name = "cst_linkman")
public class LinkMan {
   

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "lkm_id")
    private Long lkmId;
    @Column(name = "lkm_name")
    private String lkmName;
    @Column(name = "lkm_gender")
    private String lkmGender;
    @Column(name = "lkm_phone")
    private String lkmPhone;
    @Column(name = "lkm_mobile")
    private String lkmMobile;
    @Column(name = "lkm_email")
    private String lkmEmail;
    @Column(name = "lkm_position")
    private String lkmPosition;
    @Column(name = "lkm_memo")
    private String lkmMemo;
  setter ... getter....
}

实体类接口

public interface CustomerDao 
extends JpaRepository<Customer,Long>,
 JpaSpecificationExecutor<Customer>{
   }


public interface LinkManDao 
extends JpaRepository<LinkMan,Long> , 
JpaSpecificationExecutor<LinkMan> {
   }



数据库

注意

  如果数据库的编码出现问题,导致无法插入中文导致报错
  可以修改数据库编码
  
  ALTER DATABASE 数据库名 DEFAULT CHARACTER SET utf8;修改数据库的编码
  ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8;修改表的编码

表关系

客户表  
CREATE TABLE `cst_customer` (
  `cust_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `cust_address` varchar(255) DEFAULT NULL,
  `cust_industry` varchar(255) DEFAULT NULL,
  `cust_level` varchar(255) DEFAULT NULL,
  `cust_name` varchar(255) DEFAULT NULL,
  `cust_phone` varchar(255) DEFAULT NULL,
  `cust_source` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  
  
 联系人表 
CREATE TABLE `cst_linkman` (
  `lkm_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `lkm_email` varchar(255) DEFAULT NULL,
  `lkm_gender` varchar(255) DEFAULT NULL,
  `lkm_memo` varchar(255) DEFAULT NULL,
  `lkm_mobile` varchar(255) DEFAULT NULL,
  `lkm_name` varchar(255) DEFAULT NULL,
  `lkm_phone` varchar(255) DEFAULT NULL,
  `lkm_position` varchar(255) DEFAULT NULL,
  `lkm_cust_id` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`lkm_id`),
  KEY `FKh9yp1nql5227xxcopuxqx2e7q` (`lkm_cust_id`),
  CONSTRAINT `FKh9yp1nql5227xxcopuxqx2e7q` FOREIGN KEY (`lkm_cust_id`) REFERENCES `cst_customer` (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;  


现在表的关系很明确了
然后cst_linkman表维护了一个外键,在实体类里氏没有该字段的,注意

那么现在看来,cst_linkman是多的一方,cst_customer是一的一方

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值