Skip to content

Repository files navigation

Objective

Objective of this project is to provide a simple ORM for multiple database

Planned

Get a database

publicclassMain {
privatefinalstaticDatabaseDATABASE;
publicstaticvoidmain(String... args) {
DATABASE = Database.getSQLite("filename");
DATABASE = Database.getMySQL("address", "username", "password");
}
}

Serialize class from table

importjava.util.List;
publicclassMain {
privatefinalstaticDatabaseDATABASE;
publicstaticvoidmain(String... args) {
List<Person> persons;
persons = DATABASE.get(PersonWithoutConstructor.class)
.accept()
.findAll();
persons = DATABASE.get(PersonWithConstructor.class)
.accept()
.findAll();
}
staticclassPerson {}
@Table(name = "person")
staticclassPersonWithoutConstructorextendsPerson {
@Column(name = "name")
privateStringname;
@Column(name = "nickname")
privateStringnickname;
@Column(name = "age")
privateintage;
@Column(name = "weight")
privatedoubleweight;
}
@Table(name = "person")
staticclassPersonWithConstructorextendsPerson {
@Column(name = "name")
privatefinalStringname;
@Column(name = "nickname")
privatefinalStringnickname;
@Column(name = "age")
privatefinalintage;
@Column(name = "weight")
privatefinaldoubleweight;
@TableConstructorpublicPersonWithConstructor(
@Linked(fieldName = "name") Stringname,
@Linked(fieldName = "nickname") Stringnickname,
@Linked(fieldName = "age") intage,
@Linked(fieldName = "weight") doubleweight
) {
this.name = name;
this.nickname = nickname;
this.age = age;
this.weigth = weigth;
}
}
} 

Get one item

importjava.util.Optional;
publicclassMain {
privatefinalstaticDatabaseDATABASE;
publicstaticvoidmain(String... args) {
Optional<Person> person = DATABASE.get(Person.class)
.where(where -> where.eq("nickname", "enimaloc")
.above("age", 18)
.below("weight", 70))
.accept()
.findFirst();
Optional<Person> person = DATABASE.get(Person.class)
.where("nickname LIKE 'enimaloc' AND age > 18 AND weight < 70")
.accept()
.findFirst();
}
@Table(name = "person")
staticclassPerson {
@Column(name = "name")
privateStringname;
@Column(name = "nickname")
privateStringnickname;
@Column(name = "age")
privateintage;
@Column(name = "weight")
privatedoubleweight;
}
} 

Deserialize class list in table

importjava.util.List;
publicclassMain {
privatefinalstaticDatabaseDATABASE;
publicstaticvoidmain(String... args) {
List<Person> persons = List.of(
newPerson("Antoine", "enimaloc", 18, 55),
newPerson("Kévin", "kévinoulabanane", 18, 65)
);
DATABASE.get(Person.class).putList(persons)
.onDuplicate(DuplicateStrategy.REPLACE)
.accept();
DATABASE.putList(persons)
.onDuplicate(DuplicateStrategy.KEEP)
.accept();
}
@Table(name = "person")
staticclassPerson {
@Column(name = "name")
privateStringname;
@Column(name = "nickname")
privateStringnickname;
@Column(name = "age")
privateintage;
@Column(name = "weight")
privatedoubleweight;
publicPerson(Stringname, Stringnickname, intage, doubleweight) {
this.name = name;
this.surname = nickname;
this.age = age;
this.weight = weight;
}
}
} 

Deserialize class in table

publicclassMain {
privatefinalstaticDatabaseDATABASE;
publicstaticvoidmain(String... args) {
DATABASE.get(Person.class)
.put(newPerson("Antoine", "enimaloc", 18, 55))
.onDuplicate(DuplicateStrategy.REPLACE)
.accept();
DATABASE.put(newPerson("Kevin", "kevinoulabanane", 18, 65))
.onDuplicate(DuplicateStrategy.KEEP)
.accept();
}
@Table(name = "person")
staticclassPerson {
@Column(name = "name")
privateStringname;
@Column(name = "nickname")
privateStringnickname;
@Column(name = "age")
privateintage;
@Column(name = "weight")
privatedoubleweight;
publicPerson(Stringname, Stringnickname, intage, doubleweight) {
this.name = name;
this.nickname = nickname;
this.age = age;
this.weight = weight;
}
}
} 

About

Provide a SQL builder

Resources

Code of conduct

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors