• Spring Data JPA 多对多表查询


    1.新建一个Spring Initializr项目,勾选Lombok,Spring Web,Spring Data JPA和MySQL Driver依赖。

    这里我的表关系是goods商品表-goods_card-card卡牌表

    2.新建实体类Goods.java和Card.java,这里注意不要使用Lombok的@Data注解,改用@Setter和@Getter

    package com.wts.bloodline.entity;
    
    import lombok.Getter;
    import lombok.Setter;
    import org.hibernate.annotations.DynamicInsert;
    import org.hibernate.annotations.DynamicUpdate;
    
    import javax.persistence.*;
    import java.math.BigDecimal;
    import java.util.Date;
    import java.util.List;
    
    @Entity
    @Getter
    @Setter
    @DynamicInsert
    @DynamicUpdate
    public class Goods {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private Integer district;
        private String channel;
        private BigDecimal price;
        private String username;
        private String password;
        private String remarks;
        private Date createTime;
        private Date updateTime;
        @ManyToMany
        @JoinTable(name = "goods_card",
                joinColumns = {@JoinColumn(name = "goods_id", referencedColumnName = "id")},
                inverseJoinColumns = {@JoinColumn(name = "card_id", referencedColumnName = "id")})
        private List<Card> cardList;
    }
    package com.wts.bloodline.entity;
    
    import lombok.Getter;
    import lombok.Setter;
    
    import javax.persistence.*;
    import java.util.List;
    
    @Entity
    @Getter
    @Setter
    public class Card {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String name;
        private String type;
        private String job;
        @ManyToMany
        @JoinTable(name = "goods_card",
                joinColumns = {@JoinColumn(name = "card_id", referencedColumnName = "id")},
                inverseJoinColumns = {@JoinColumn(name = "goods_id", referencedColumnName = "id")})
        private List<Goods> goodsList;
    }

    3.创建对应的repository:

    package com.wts.bloodline.repository;
    
    import com.wts.bloodline.entity.Goods;
    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface GoodsRepository extends JpaRepository<Goods, Long> {
    }
    package com.wts.bloodline.repository;
    
    import com.wts.bloodline.entity.Card;
    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface CardRepository extends JpaRepository<Card, Long> {
    }

    4.修改配置application.yml:

    server:
      port: 9090
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/bloodline
        username: root
        password: ''
        driver-class-name: com.mysql.cj.jdbc.Driver
      jpa:
        show-sql: true
        open-in-view: true
        properties:
          hibernate:
            format_sql: true
            enable_lazy_load_no_trans: true

    5.测试

  • 相关阅读:
    有一群志同道合的程序员朋友是怎样的体验?
    hdu1387 模拟队列
    hau 1870 愚人节的礼物(栈)
    hdu1509 优先队列
    hdu1837 看病要排队(优先队列)
    hdu 1237 简单计算器(栈处理)
    hdu1022 模拟栈
    又一个错误的认知!
    jmeter+ant+jenkins 接口自动化测试持续集成(送源码)
    P1197 [JSOI2008]星球大战
  • 原文地址:https://www.cnblogs.com/viewts/p/13230459.html
Copyright © 2020-2023  润新知