Извлечение данных из 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>