Java Spring REST API Handling Many Optional Parameters

前端 未结 3 683
执念已碎
执念已碎 2021-01-05 10:18

I\'m currently messing around with a Spring Boot REST API project for instructional purposes. I have a rather large table with 22 columns loaded into a MySQL database and am

3条回答
  •  一个人的身影
    2021-01-05 11:10

    You can do it even more easily using Query By Example (QBE) technique if your repository class implements JpaRepository interface as that interface implements QueryByExampleExecutor interface which provides findAll method that takes object of Example as an argument.

    Using this approach is really applicable for your scenario as your entity has a lot of fields and you want user to be able to get those which are matching filter represented as subset of entity's fields with their corresponding values that have to be matched.

    Let's say the entity is User (like in your example) and you want to create endpoint for fetching users whose attribute values are equal to the ones which are specified. That could be accomplished with the following code:

    Entity class:

    @Entity
    public class User implements Serializable {
        private Long id;
        private String firstName;
        private String lastName;
        private Integer age;
        private String city;
        private String state;
        private String zipCode;
    }
    

    Controller class:

    @Controller
    public class UserController {
        private UserRepository repository;
        private UserController(UserRepository repository) {
            this.repository = repository;
        }
    
        @GetMapping
        public List getMatchingUsers(@RequestBody User userFilter) {
            return repository.findAll(Example.of(userFilter));
        }
    }
    

    Repository class:

    @Repository
    public class UserRepository implements JpaRepository {
    }
    

提交回复
热议问题