Vytváření dotazů ve Spring Boot JPA je jednoduché. Nejdříve je třeba si vytvořit objekty, které představují tabulky a jejich sloupce. V tomto příkladu si vytvoříme objekt User.
@Entity(name="t_user") public class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String email; private String password; // getry a setry }
Pomocí anotace @Entity
říkám, že tato třída má představovat tabulku v databázi, name="t_user"
definuje, že tabulka v databázi se bude jmenovat t_user. Anotací @Id
označuji private long id jako primární klíč tabulky a @GeneratedValue
určuje jak se má id generovat.
Nyní je třeba vytvořit rozhraní repository pro danou tabulku. Dědím z rozhraní org.springframework.data.repository.CrudRepository
.
public interface UserRepository extends CrudRepository<User, Long> {}
Toto stačí k tomu, abychom měli bez jakékoliv další práce k dispozici metody:
save(User user) save(Iterable<User> users) findOne(Long id) exists(Long id) findAll() findAll(Iterable<Long> ids) count() delete(Long id) delete(User user) deleteAll()
Pokud tyto metody nestačí, lze další vytvářet velmi jednoduše. Název metody musí být camel case. Pokud chceme najít podle hodnoty sloupce (např. dle emailu) název musí být findByEmail
. Pokud bychom chtěli najít podle seznamu mailů: findByEmailIn
. Zde je, jak by pak mohla vypadat třída UserRepository
:
public interface UserRepository extends CrudRepository<User, Long> { User findByEmail(String email); List<User> findByEmailIn(List<String> emails); User findByPassword(String password); }
Do rozhraní stačí přidat signatury metod. Není třeba nic implementovat.