public class EjemplosSwitch { public static void main(String[] args) { int diaSemana = 3; // switch(variable) // case valor1: case valor2: break para parar default: switch (diaSemana) { case 1: System.out.println("Lunes"); break; case 2: System.out.println("Martes"); break; case 3: System.out.println("Miércoles"); break; case 4: System.out.println("Jueves"); break; case 5: System.out.println("Viernes"); break; case 6: System.out.println("Sábado"); break; case 7: System.out.println("Domingo"); break; default: System.out.println("Día de la semana no válido"); } switch (diaSemana) { case 1: case 2: case 3: case 4: case 5: System.out.println("Entre semana buff...."); break; case 6: case 7: System.out.println("Fin de semana ¡Yupi!"); break; default: System.out.println("Día de la semana no válido"); } } }
Categoría: Java
Ejemplos ifs en Java
int edad = 18; int altura = 180; // La misma sintaxis que en JS // if (condicion){bloque si cierto} else {bloque si falso} if (edad >= 18) { System.out.println("Eres mayor de edad"); } else { System.out.println("Eres menor de edad"); } // Puedo tener if else if if (edad < 18) { System.out.println("Eres menor de edad"); } else if (edad < 65) { System.out.println("Eres mayor de edad"); } else { System.out.println("Estás jubilado"); } if (edad > 100) { System.out.println("Enhorabuena, eres centenario"); } // Puedo tener if anidados, if dentro de ifs if (edad < 18) { if (edad % 2 == 0) { System.out.println("Menor de edad y par"); } } // Condiciones > >= < <= == != // Operadores condicionales: && || ! if (edad >= 18 || altura > 180) { System.out.println("Mayor de edad o entra por altura"); } if (edad == 18 && altura == 180) { System.out.println("Mides lo mismo que tu edad"); } // Para dar el pase VIP tiene que tener más de 20 años y medir más de 180 // o medir más de 200 if (edad >= 20 && altura >= 180 || altura >= 200) { } if ((edad >= 20 && altura >= 180) || altura >= 200) { } // Si yo quiero que la edad sea menor de 18 o mayor de 65 // y mida más de 180 if (edad < 18 || edad > 65 && altura > 180) { // esto está mal } if ((edad < 18 || edad > 65) && altura > 180) { // esto está bien } // Por ejemplo que la edad sea menor de 10 y la altura menor de 140 // O la edad sea mayor de 80 y la altura mayor de 180 if ((edad<10 && altura<140) || (edad>80 && altura>180)) { }
API REST final comentada
Último proyecto REST API con todo
Pasos para crear Hibernate
Crear un proyecto Maven
Escogemos maven-archetype-quickstart
En principio el de org.apache
Añadimos las dependencias de ‘Hibernate’ y ‘Mysql’. Os las pongo aquí.
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.32</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.15.Final</version> </dependency> </dependencies>
Después dentro de src/main creamos la carpeta ‘resources’: New folder
Dentro de resources creamos el archivo hibernate.cfg.xml, y dentro colocamos lo siguiente:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "https://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/sakila</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.show_sql">true</property> <mapping class="com.trifulcas.models.Actor" /> </session-factory> </hibernate-configuration>
Creamos un paquete com.trifulcas.models y dentro metemos nuestro POJO:
package com.trifulcas.models; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name= "actor") public class Actor { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int actor_id; private String first_name; private String last_name; public Actor() { } /** * @return the actor_id */ public int getActor_id() { return actor_id; } /** * @param actor_id the actor_id to set */ public void setActor_id(int actor_id) { this.actor_id = actor_id; } /** * @return the first_name */ public String getFirst_name() { return first_name; } /** * @param first_name the first_name to set */ public void setFirst_name(String first_name) { this.first_name = first_name; } /** * @return the last_name */ public String getLast_name() { return last_name; } /** * @param last_name the last_name to set */ public void setLast_name(String last_name) { this.last_name = last_name; } @Override public String toString() { return "Actor id=" + actor_id + ",nombre=" + first_name+" "+last_name + "]"; } }
Y por último probaríamos que todo va bien, este código debería funcionar:
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build(); Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build(); SessionFactory factory = meta.getSessionFactoryBuilder().build(); Session session = factory.openSession(); try { Actor penelope = session.get(Actor.class, 1); System.out.println(penelope.getFirst_name() + " " + penelope.getLast_name()); List<Actor> lista = session.createQuery("from Actor a where a.first_name like '%ar%' ").getResultList(); for (Actor a : lista) { System.out.println(a); } } catch (Exception ex) { System.out.println(ex); } factory.close(); session.close();
DAO comienzo
public class ActorDAO { private Connection con; public ActorDAO() { try { // Registrar el driver mysql Class.forName("com.mysql.cj.jdbc.Driver"); // Conectarme a la base de datos con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "root", "root"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public ArrayList<Actor> getActorAll() { try { String sql="select * from actor"; PreparedStatement psmt=con.prepareStatement(sql); ResultSet res=psmt.executeQuery(); ArrayList<Actor> actores= new ArrayList<Actor>(); while (res.next()) { actores.add( new Actor(res.getInt("actor_id"), res.getString("first_name"), res.getString("last_name"))); } return actores; }catch(Exception ex) { ex.printStackTrace(); return null; } } public Actor getActor(int id) { try { String sql="select * from actor where actor_id=?"; PreparedStatement psmt=con.prepareStatement(sql); psmt.setInt(1, id); ResultSet res=psmt.executeQuery(); if (res.next()) { return new Actor(res.getInt("actor_id"), res.getString("first_name"), res.getString("last_name")); } else { return null; } }catch(Exception ex) { ex.printStackTrace(); return null; } } public boolean addActor(String first_name, String last_name) { try { String sql="insert into actor (first_name,last_name) values (?,?)"; PreparedStatement psmt=con.prepareStatement(sql); psmt.setString(1, first_name); psmt.setString(2, last_name); int res=psmt.executeUpdate(); return res==1; }catch(Exception ex) { ex.printStackTrace(); return false; } } public boolean addActor(Actor actor) { try { String sql="insert into actor (first_name,last_name) values (?,?)"; PreparedStatement psmt=con.prepareStatement(sql); psmt.setString(1, actor.getFirst_name()); psmt.setString(2, actor.getLast_name()); int res=psmt.executeUpdate(); return res==1; }catch(Exception ex) { ex.printStackTrace(); return false; } } }
public static void main(String[] args) { try { // El objeto DAO que me permite trabajar con la BD ActorDAO dao=new ActorDAO(); // Utilizar una de las propiedades: add for(int i=0;i<10000;i++) { dao.addActor("John"+i, "Travolta"); } //dao.addActor("John", "Travolta"); Actor eva=new Actor(0,"Eva","Wuig"); // dao.addActor(eva); System.out.println(dao.getActor(1)); System.out.println(dao.getActorAll()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Ejemplos JDBC
try { // Registrar el driver mysql Class.forName("com.mysql.cj.jdbc.Driver"); // Conectarme a la base de datos Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "root", "root"); String nombre="Ana"; // Creo a partir de la conexión un comando Statement stmt = con.createStatement(); stmt.execute("insert into actor(first_name,last_name) values ('"+nombre+"','pi')"); // Los interrogantes son los parámetros PreparedStatement psmt=con.prepareStatement("insert into actor (first_name,last_name) values (?,?)"); psmt.setString(1, "Pep"); psmt.setString(2, "Pérez"); psmt.executeUpdate(); psmt.setString(1, "Pepa"); psmt.setString(2, "Pérez"); psmt.executeUpdate(); // Ejecuto un select y lo guardo en un resultset ResultSet rs = stmt.executeQuery("select * from actor where actor_id>20"); // Recorro el resultset y con get obtengo los valores while (rs.next()) { System.out.println(rs.getInt("actor_id") + " " + rs.getString(2) + " " + rs.getString(3)); } stmt.close(); con.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
Solucion Solid
package com.trifulcas.juegoPPTLSID; import java.util.Arrays; public class JuegoColores implements ILogica{ private String[] jugadas = { "verde","azul","amarillo","naranja","rojo" }; public JuegoColores() { } @Override public int comprobar(String jugada1, String jugada2) { int pos1 = Arrays.asList(jugadas).indexOf(jugada1.toLowerCase()); int pos2 = Arrays.asList(jugadas).indexOf(jugada2.toLowerCase()); if ((pos1 + 1) % jugadas.length == pos2) return 1; if ((pos2 + 1) % jugadas.length == pos1) return 2; return 0; } @Override public String[] validas() { return this.jugadas; } } package com.trifulcas.juegoPPTLSID; public interface IMostrar { void mostrar(String res); } package com.trifulcas.juegoPPTLSID; public class Juego { private Jugador jugador1; private Jugador jugador2; private ILogica _iLogica; private IMostrar _iMostrar; private String[] jugadas; public String[] getJugadas() { return jugadas; } public void setJugadas(String[] jugadas) { this.jugadas = jugadas; } public Jugador getJugador1() { return jugador1; } public void setJugador1(Jugador jugador1) { this.jugador1 = jugador1; } public Jugador getJugador2() { return jugador2; } public void setJugador2(Jugador jugador2) { this.jugador2 = jugador2; } public Juego(Jugador jugador1, Jugador jugador2, ILogica ilogica, IMostrar imostrar) { this.jugador1 = jugador1; this.jugador2 = jugador2; _iLogica = ilogica; jugadas = _iLogica.validas(); _iMostrar = imostrar; } public Juego(Jugador jugador1, Jugador jugador2, ILogica ilogica) { this(jugador1, jugador2, ilogica, new Consola()); } public String jugar() { jugador1.pedirJugada(jugadas); jugador2.pedirJugada(jugadas); _iMostrar.mostrar(jugador1.getNombre() + " elige " + jugador1.getJugada()); _iMostrar.mostrar(jugador2.getNombre() + " elige " + jugador2.getJugada()); int res = _iLogica.comprobar(jugador1.getJugada(), jugador2.getJugada()); String resultado="Empate"; if (res == 1) { resultado= jugador1.getNombre(); } if (res == 2) { resultado= jugador2.getNombre(); } _iMostrar.mostrar(resultado); return resultado; } } package com.trifulcas.juegoPPTLSID; public class Consola implements IMostrar { @Override public void mostrar(String res) { System.out.println(res); } } package com.trifulcas.juegoPPTLSID; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class Fichero implements IMostrar { @Override public void mostrar(String res) { Path path = Paths.get("resultado.txt"); try { if (!Files.exists(path)) Files.createFile(path); Files.writeString(path, res+"\r\n", StandardOpenOption.APPEND); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Soluciones ejercicios SOLID
package com.trifulcas.ejerciciosSolid; public class Article { private String Title; private String Content; public void setTitle(String title) { this.Title = title; } public void setContent(String content) { this.Content = content; } } package com.trifulcas.ejerciciosSolid; public class GenerateSummary { public String generateSummary(String content) { // Logic to generate a summary from the content return content.substring(0, 100) + "..."; // just a simple example } } package com.trifulcas.ejerciciosSolid; import com.trifulcas.juego.Enemigo; public class SaveToDatabase { // Cosas del tipo conexión a BD // etc... public void saveToDatabase(Article article) { // Logic to save the article to a database } public void saveToDatabase(Enemigo enemigo) { // Logic to save the article to a database } } package com.trifulcas.ejerciciosSolid; public abstract class ReportGenerator { public abstract void generateReport(String data); } package com.trifulcas.ejerciciosSolid; public class ReportGeneratorPDF extends ReportGenerator { @Override public void generateReport(String data) { System.out.println("Aquí va el código de generar PDF"); } } package com.trifulcas.ejerciciosSolid; public class ReportGeneratorCSV extends ReportGenerator { @Override public void generateReport(String data) { System.out.println("Código para generar CSV"); } } package com.trifulcas.ejerciciosSolid; public interface IReportGenerator { public void generateReport(String data); } package com.trifulcas.ejerciciosSolid; public class ReportGeneratorXML implements IReportGenerator { @Override public void generateReport(String data) { System.out.println("Lógica para generar XML"); } } package com.trifulcas.ejerciciosSolid; public class ReportGeneratorID { IReportGenerator reportGenerator; public ReportGeneratorID(IReportGenerator reportGenerator) { this.reportGenerator = reportGenerator; } public void generateReport(String data) { reportGenerator.generateReport(data); } } package com.trifulcas.ejerciciosSolid; public class ProbarReports { public static void main(String[] args) { String datos="Hola que tal"; // Generar un PDF ReportGeneratorPDF rgp=new ReportGeneratorPDF(); rgp.generateReport(datos); // Generar un XML con ID ReportGeneratorXML rgx=new ReportGeneratorXML(); ReportGeneratorID rgid=new ReportGeneratorID(rgx); rgid.generateReport(datos); rgid=new ReportGeneratorID(rgx); rgid.generateReport(datos); } } package com.trifulcas.ejerciciosSolid; public interface IClean { void Clean(); } package com.trifulcas.ejerciciosSolid; public class Apartment implements IClean { @Override public void Clean() { System.out.println("Apartment cleaned."); } } package com.trifulcas.ejerciciosSolid; import java.util.Date; public interface IRoom { void Reserve(Date from, Date to); void CheckInventory(); } package com.trifulcas.ejerciciosSolid; public interface IInventory { void CheckInventory(); } package com.trifulcas.ejerciciosSolid; import java.util.Date; public interface IReserve { void Reserve(Date from, Date to); }
Piedra Papel Tijeras
https://github.com/juanpablofuentes/Java/tree/master/PiedraPapelTijera