Étant donné que j'écris en utilisant le temps d'intervalle, je vous serais reconnaissant si vous pouviez indiquer les parties avec une précision médiocre. Tout d'abord, excluez ceux qui sont EOL. Nous considérerons les fonctions payantes, mais nous ne les utiliserons pas réellement, en raison du problème des poches. La base de données utilisée est fixée à Postgre pour une raison stupide telle que "Eh bien, peut-être que Postgre peut être utilisé même s'il n'est pas spécifié."
ORM | Transaction | Data Model | DSL |
---|---|---|---|
○ | × | × | ○ |
○: Correspondance ×: non pris en charge
―― "Il n'y a pas de fonction DSL puissante comme jOOQ et Query DSL, et ce n'est pas un ORM d'entreprise comme Hibernate ou mybatis."
java -cp iciql.jar; votre_db_driver.jar <paramètres>
--Correction: java -cp iciql.jar; votre_db_driver.jar com.iciql.util.GenerateModels <paramètres>
--Paramètres
--Wrong: -username
--Correct: -user
-Folder
--Correct: -dossier
Main.java
public static void main(String... args) {
try (Db db = Db.open("jdbc:postgresql:example", "postgres", "pass")) {
Employee e = new Employee();
List<Employee> list = db.from(e).select();
list.stream().forEach(em -> {
System.out.println(em.id + ":" + em.first_name + " " + em.middle_name + " " + em.last_name);
});
}
}
Main.java
List<Employee> list = db.from(e).where(e.id).is(BigDecimal.ONE).select();
Main.java
// 「com.iciql.IciqlException: ERROR:Référence de colonne"id"Est ambigu ", pouvez-vous me donner un identifiant avec jointure ...
//List<EmployeePost> list = db.from(e).innerJoin(p).on(p.employee_id).is(e.id).select();
EmployeePost[] list = db.open(EmployeePostDao.class).getAllEmployeePost();
Arrays.asList(list).stream().forEach(em -> {
System.out.println(
em.id + ":" + em.employee_id
+ "/" + em.first_name + " " + em.middle_name + " " + em.last_name + " " + em.name);
});
EmployeePostDao.java
public interface EmployeePostDao extends Dao {
//D'une manière ou d'une autre, il n'y a qu'un tableau et la liste n'est pas autorisée
@SqlQuery("SELECT e.id AS employee_id, e.first_name, e.middle_name, e.last_name, p.id AS id, p.name FROM employee AS e INNER JOIN post AS p ON e.id = p.employee_id")
EmployeePost[] getAllEmployeePost();
}
EmployeePost.java
@Iciql.IQSchema("public")
@Iciql.IQIndex(name="Id", type= Iciql.IndexType.UNIQUE, value={ "id" })
public class EmployeePost {
@Iciql.IQColumn(primaryKey=true, nullable=false, defaultValue="0", name = "id")
public BigDecimal id;
public String first_name;
public String last_name;
public String middle_name;
@Iciql.IQColumn(nullable=false, defaultValue="0")
public BigDecimal employee_id;
public String name;
public EmployeePost() {}
}
Quelque chose de vraiment simple sort. La colonne définie par le caractère (60) n'est pas prise en charge par bpchar.
Employee.java
@IQSchema("public")
@IQTable(name="employee")
@IQIndex(name="Id", type=IndexType.UNIQUE, value={ "id" })
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@IQColumn(primaryKey=true, nullable=false, defaultValue="0")
public BigDecimal id;
// unsupported type bpchar
public Object first_name;
// unsupported type bpchar
public Object last_name;
// unsupported type bpchar
public Object middle_name;
public Employee() {
}
}
--Fournir uniquement les fonctions minimales en mettant l'accent sur la légèreté de la bibliothèque elle-même --POJO, définition d'interface uniquement, politique pour éliminer toute complexité d'héritage
Croyez en la source car la documentation officielle est différente.
N'est pas encore.
Recommended Posts