spring boot 中如何根据id查询数据库表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot 中如何根据id查询数据库表相关的知识,希望对你有一定的参考价值。

参考技术A sql server 查询一个表的所有信息:查询语法为:select * from 表名 语法中的”*“代表所有。
实际操作举例:某数据中有一表叫”user_user“,表中存储了一些用户信息;
1、查询”user_user“表中所有人员信息且所有字段,sql语句:select * from user_user

2、查询”user_use“表中所有人员信息且部分字段。sql语句:select user_show_id,user_name,pinyin,password from user_user

3、条件查询”user_user“表,以user_name为查询条件查询所有信息。sql语句:select * from user_user where user_name='李丹'

4、模糊查询”user_user“表,以user_name为模糊查询条件查询所有信息。sql语句:select * from user_user where user_name like '%张%'

如何在JAVA JPA Spring Boot中的一个SQL查询中选择多个数据

我有用户实体,其中包含组列表。每个组都有两个列表:submissionDocumentType和reviewDocumentType。使用尽可能少的数据库调用获取User的GroupDetails对象列表的最有效方法是什么(请参阅下面的最终预期结果)?

user.Java

public class User {
@Id
@GeneratedValue(generator ="uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;

@ManyToMany(mappedBy = "users")
private Set<UserGroup> userGroups;

用户组

public class UserGroup {

@Id
@GeneratedValue(generator ="uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;

@ManyToMany(mappedBy = "submissionUserGroups")
private List <DocumentType> submissionDocumentType;


@ManyToMany(mappedBy = "reviewUserGroups")
private List <DocumentType> reviewDocumentType;

group details.Java

public class GroupDetails {

private String groupTitle;
private List<String> reviewDocTypes;
private List<String> submitDocTypes;

GET方法的预期响应

[
{
    "groupTitle": "Group one",
    "reviewDocTypes": [
        "Prasymas Eazy",
        "Prasymas Tgwz",
        "Prasymas Gien",
        "Prasymas Docs",
        "Prasymas Ecyd",
        "Prasymas Sjvz"
    ],
    "submitDocTypes": [
        "Prasymas Buor",
        "Prasymas Kzhc",
        "Prasymas Zokx",
        "Prasymas Vvtb",
        "Prasymas Docs",
        "Prasymas Lutj",
        "atostogu prasymas"
    ]
},
{
    "groupTitle": "Group two",
    "reviewDocTypes": [
        "Prasymas Tgwz",
        "Prasymas Gien",
        "Prasymas Kzhc",
        "Prasymas Kblj",
        "Prasymas Docs",
        "Prasymas Ecyd"
    ],
    "submitDocTypes": [
        "Prasymas Tgwz",
        "Prasymas Wmwx",
        "Prasymas Buor",
        "Prasymas Gien",
        "Prasymas Kzhc",
        "Prasymas Kblj",
        "Prasymas Docs",
        "Prasymas Xdau",
        "Prasymas Lutj",
        "Prasymas Ecyd",
        "atostogu prasymas"
    ]
}
]
答案

我想你可以在一个查询中做到这一点。正如你在the reference documentation中看到的:

Spring Data允许建模专用返回类型,以更有选择地检索托管聚合的部分视图。将查询结果限制为仅名称属性的最简单方法是声明一个接口,该接口公开要读取的属性的访问器方法

所以我们可以使用这样的查询方法获取结果:

interface UserRepository extends Repository<User, String> {
    Collection<GroupDetails> findById(String userId);
}

以上是关于spring boot 中如何根据id查询数据库表的主要内容,如果未能解决你的问题,请参考以下文章

如何在spring boot和hibernate中计算特定id的记录

Spring Boot如何通过查找表将两个实体嵌套在一起而返回另一个实体?

spring boot 学习心得 使用JpaRepository注解自定义SQL查询数据库多表查询

如何根据postgres的jsonb列的where条件(无本机查询)使用jpa在spring boot中选择数据?

Spring Boot Jpa框架自定义查询语句返回自定义实体

Spring Boot实战之MyBatis、Druid