CRUD - método READ
Prof. Me. Danilo Bueno
Relembrando
Como realizar a conexão com o banco de dados em uma aplicação Spring?
Três passos principais:
- Configurar a conexão com o banco de dados
- Mapear as entidades
- Criar os repositórios
No repositório
- Até então utilizamos os métodos
savepara salvar um novo registro. - Existe um conjunto de métodos que são comuns em qualquer aplicação que realiza operações de acesso ao banco de dados, conhecido como CRUD.
Importante: O CRUD no contexto de aplicações web é utilizado para realizar operações no banco de dados para manipulação dos REGISTROS da tabela.
CRUD
-
CRUD é um acrônimo para Create, Read, Update e Delete.
-
Representa as quatro operações básicas utilizadas em bases de dados relacionais (RDBMS)
-
O mapeamento das operações CRUD para as operações SQL são:
- Create:
INSERT - Read:
SELECT - Update:
UPDATE - Delete:
DELETE
- Create:
layout: image image: ./images/itpweb2.crud-fuck.png backgroundSize: contain title: crud-fuck image
Operação CREATE
O método save recebe um objeto User e salva no banco de dados:
@Transactional
public void save(User user) {
String sql = "INSERT INTO user (email, password)
VALUES (:nome, :email)";
Query query = em.createNativeQuery(sql);
query.setParameter("nome", user.getEmail());
query.setParameter("email", user.getPassword());
query.executeUpdate();
}
- Esse método faz a utilização dos parametros nomeados
:nomee:email;
Operação READ
-
A operação Read é utilizada para recuperar registros do banco de dados.
-
Geralmente utilizada em duas versões:
- Find All: Recupera TODOS os registros da tabela
- Find By ID: Recupera UM registro específico da tabela
Repositório: método findAll
O método findAll retorna todos os usuários de uma tabela
@Repository
public class UserRepository {
@PersistenceContext
private EntityManager em;
public List<User> findAll() {
String sql = "SELECT * FROM user";
Query q = em.createNativeQuery(sql, User.class);
List<User> users = q.getResultList();
return users;
}
}
Explicando o código
Método findAll
- Realiza a consulta no banco de dados e retorna TODOS os usuários cadastrados da tabela.
- A consulta SQL é criada utilizando a classe
Querye o métodocreateNativeQuery() - O método recebe como parâmetro a consulta SQL (String) e o tipo de entidade (classe Java) que será retornado.
- Por fim, o método
getResultList()é utilizado para retornar a lista de usuários.
Como utilizar o método findAll?
Podemos usar o repositório para recuperar todos os registros de uma tabela.
@Controller
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/users")
public String list(Model model) {
List<User> users = userRepository.findAll();
model.addAttribute("users", users);
return "list.html";
}
}
Na visão
Percorrer a lista de usuários com o th:each
<h1>Lista de tarefas</h1>
<ul>
<li th:each="user : ${users}">
[[${user.email}]]
</li>
</ul>