Java — Получение данных из ddbb с помощью Spring

Извлечение данных из ddbb на веб-странице.
Обзорные заметки:
Создание небольшого веб-проекта на Java
БАЗА ДАННЫХ
Мы начнем с создания базы данных:

`create database proyecto;`
Войдите в полноэкранный режим Выход из полноэкранного режима

Мы используем созданную нами базу данных

`use  proyecto;`
Войдите в полноэкранный режим Выход из полноэкранного режима

и вставьте таблицу, в данном случае она будет называться customers с полями: id, first name, last name, email.

`CREATE TABLE `cliente` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(35) DEFAULT NULL,
  `apellido` varchar(35) DEFAULT NULL,
  `email` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;`
Войдите в полноэкранный режим Выход из полноэкранного режима

Класс подключения к базе данных

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        // response.getWriter().append("Served at: ").append(request.getContextPath());

        String jdbcUrl = "jdbc:mysql://localhost:3306/proyecto?allowPublicKeyRetrieval=true&useSSL=false";
        String usuario = "";
        String contra = "";
        String driver = "com.mysql.jdbc.Driver";

        try {
            // Utilizamos la clase PrintWriter para que escriba en el navegador
            PrintWriter out = response.getWriter();
            // Cargamos el driver
            Class.forName(driver);
            // Tenemos que conectar
            Connection miConexion = DriverManager.getConnection(jdbcUrl, usuario, contra);
            // cerramos la conexion
            miConexion.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }
Войдите в полноэкранный режим Выход из полноэкранного режима

Теперь в Java мы создадим классы, начнем с создания контроллера

  • Класс: Контроллер

@Controller
@RequestMapping("/cliente")
public class Controlador {

    @RequestMapping("/lista")
    public String listaClientes(Model modelo) {

        return "lista-clientes";
    }

}

Войдите в полноэкранный режим Выход из полноэкранного режима

Теперь нам нужно представить сущность Клиент

  • Класс клиентской сущности

  • @Entity — это сущность

  • @Table(«customer») — таблица, которая будет выполнять сопоставление

@Entity
@Table(name = "cliente")
public class Cliente {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="nombre")
    private String nombre;

    @Column(name="apellido")
    private String apellido;

    @Column(name="email")
    private String email;

    public Cliente() {
        super();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Cliente [id=" + id + ", nombre=" + nombre + ", apellido=" + apellido + ", email=" + email + "]";
    }




}
Войдите в полноэкранный режим Выход из полноэкранного режима
             CONTROLADOR - DAO
Войдите в полноэкранный режим Выход из полноэкранного режима


Мы создаем интерфейсный класс ClienteDAO для доступа к базе данных:
При создании интерфейса он позволит нам через аннотацию (Spring) сделать инъекцию зависимостей.

public interface ClienteDAO {
//Esta interfaz me devuelva una lista con todos los clientes
    public List<Cliente> getClientes();


}
Войдите в полноэкранный режим Выход из полноэкранного режима

Создайте класс, который будет реализовывать интерфейс
Мы объявляем SessionFactory, уже настроенную в нашем файле.
@Autowired будет выполнять инъекцию зависимостей типа SessionFactory.
@Transactional Позволяет нам упростить транзакцию (begin,commit).
@Repository Чтобы быть зарегистрированным в Spring как боб.

@Repository
public class ClienteDAOclase implements ClienteDAO {
    // Crear una lista que almacene objetos de tipos clientes en este caso
    // implementamos de la infertaz
    @Override
    @Transactional
    public List<Cliente> getClientes() {
        // 3 pasos:
        // Obtener la sesion
        Session miSession = sessionFactory.getCurrentSession();
        // Crear la consulta(query) para obtener informacion de la base de datos
        Query<Cliente> miQuery = miSession.createQuery("from Cliente", Cliente.class);
        // Ejecutar la query y devolver los resultados
        List<Cliente> clientes = miQuery.getResultList();

        return clientes;
    }

    @Autowired
    private SessionFactory sessionFactory;
Войдите в полноэкранный режим Выход из полноэкранного режима

Мы возвращаемся к классу Controller, чтобы выполнить инъекцию зависимостей.

@Controller
@RequestMapping("/cliente")
public class Controlador {
    // indicamos con autowired que haremos una inyeccion de dependencias
    @Autowired
    private ClienteDAO clienteDAO;

    @RequestMapping("/lista")
    public String listaClientes(Model elModelo) {

        // Obtener los clientes desde el DAO
        List<Cliente> losClientes = clienteDAO.getClientes();
        // Agregar los clientes que hemos obtenidos del clienteDAO al modelo
        elModelo.addAllAttributes(losClientes);

        return "lista-clientes";
    }

}
Войдите в полноэкранный режим Выход из полноэкранного режима

Мы создаем JSP для возврата имен, фамилий и электронной почты из базы данных.

<body>
    <table border="1">
    <tr>
    <th>nombre </th>
    <th>apellido</th>
    <th>email</th>

    </tr>  

        <c:forEach var="clienteTemp" items="${clientes}">


            <tr>
                <td>${clienteTemp.nombre}</td>
                <td>${clienteTemp.apellido}</td>
                <td>${clienteTemp.email}</td>
            </tr>

        </c:forEach>
    </table>

</body>

Войдите в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий