Search buenodc

Nesta página
  1. Prof. Me. Danilo Bueno
  2. layout: image image: ./images/itpweb2.crud-fuck.png backgroundSize: contain title: crud-fuck image
  3. Operação READ
  4. layout: center class: text-center

CRUD - método READ

Prof. Me. Danilo Bueno


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 :nome e :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;
    }

}

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";
  }
}

Repositório: método findById

O método findById retorna um usuário específico do banco de dados:

public User findById(int id) {
    String sql = "SELECT * FROM user WHERE id = :id";
    Query q = em.createNativeQuery(sql, User.class);
    q.setParameter("id", id);
    User user = (User) q.getSingleResult();
    return user;
}

Explicando o código

Método findById

  • O método findById recebe um parâmetro id que é utilizado para recuperar um usuário específico.
  • A consulta SQL é criada utilizando a classe Query e o método createNativeQuery().
  • O método setParameter() é utilizado para passar o valor do parâmetro id.
  • O método getSingleResult() é utilizado para retornar um único resultado.

Como usar o método findById

  • Para utilizar o método findById é necessário passar o id do usuário que deseja recuperar:
User user = userRepository.findById(1);
  • O método findById retorna um objeto User com os dados do usuário recuperado.
  • O objeto User é utilizado para exibir os dados do usuário na página.

Como receber o id na requisição

  • Para receber o id na requisição é necessário utilizar a anotação @PathVariable:
@GetMapping("/users/{id}")
public String show(@PathVariable int id, Model model) {
    User user = userRepository.findById(id);
    model.addAttribute("user", user);
    return "users/show.html";
}
  • A anotação @PathVariable é utilizada para receber o id na requisição.
  • O id é passado como parâmetro do método show e utilizado no método findById.
  • O objeto User é adicionado ao modelo e retornado para a página.
  • A página show.html é utilizada para exibir os dados do usuário.

Como enviar o id na requisição

  • Para enviar o id na requisição é necessário utilizar a tag th:href:
<a th:href="@{/users/{id}(id=${user.id})}">Show</a>
  • A tag th:href é utilizada para enviar o id na requisição.
  • O id é passado como parâmetro da URL e utilizado no método findById.
  • O id é recuperado na requisição e utilizado para recuperar o usuário.

layout: center class: text-center

Obrigado!

[email protected] · website/docs · github