- Java >= 1.8
Configuration file example:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<databases>
<database>
<name>h2</name>
<support>com.github.luischavez.database.h2.H2Support</support>
<properties>
<item key="database" value="test.h2"/>
<item key="user" value="root"/>
<item key="password" value="test"/>
</properties>
</database>
<database>
<name>mysql</name>
<support>com.github.luischavez.database.mysql.MySQLSupport</support>
<properties>
<item key="server" value="localhost"/>
<item key="database" value="test"/>
<item key="port" value="3306"/>
<item key="user" value="root"/>
<item key="password" value=""/>
</properties>
</database>
</databases>
<migrators>
<migrator>com.github.luischavez.database.examples.MyMigrator</migrator>
</migrators>
</configuration>Local source configuration should be placed on the project working directory.
Database.load(new XMLBuilder(), new LocalSource("database.xml"));Project source configuration (project resource) should be placed on project resources folder.
Database.load(new XMLBuilder(), new ProjectSource("/database.xml"));Database mysql = Database.use("mysql");
Database h2 = Database.use("h2");Before use database is necessary perform the connection.
Database mysql = Database.use("mysql");
mysql.open();And release the resources when finished.
mysql.close();Row row = mysql.table("users").first();RowList rows = mysql.table("users").get();Row row = mysql.table("users").first("name, lastname");
RowList rows = mysql.table("users").get("name");Row row = mysql.table("users").where("name", "=", "Luis").first();Multiple where clauses
Row row = mysql.table("users")
.where("name", "=", "Luis")
.orWhere("name", "=", "Walter")
.first();Row row = mysql.table("users").having("name", "=", "Luis").first();Multiple having clauses
Row row = mysql.table("users")
.having("name", "=", "Luis")
.orHaving("name", "=", "Walter")
.first();Row row = mysql.table("users u")
.where("u.name", "=", "Luis")
.join("profiles p", "p.user_id", "=", "u.user_id")
.first();Multiple join filters
Row row = mysql.table("users u")
.where("u.name", "=", "Luis")
.join("profiles p", join -> {
join.on("p.user_id", "=", "u.user_id")
.or("p.user_id", "=", 100);
})
.first();RowList rows = mysql.table("users")
.group("user_type")
.get("user_type, name, lastname");Asc order
RowList rows = mysql.table("users")
.order("name", true);
.get("name");Desc order
RowList rows = mysql.table("users")
.order("name", false);
.get("name");RowList rows = mysql.table("users").limit(10).get();Offset support
RowList rows = mysql.table("users").limit(10).offset(5).get();Insert one row
mysql.insert("users", "name, lastname", "Luis", "Chávez");Insert multiple rows
mysql.insert("users", "name, lastname", new Object[][] {
{"Luis", "Chávez"},
{"Walter", "White"}
});Handle generated keys
Affecting affecting = mysql.insert("users", "name, lastname", "Luis", "Chávez");
Object[] keys = affecting.getGeneratedKeys();mysql.where("name", "=", "Luis").update("users", "lastname", "Chávez");Delete all records
mysql.delete("users");Using filters
mysql.where("name", "=", "Luis").delete("users");| Type | Schema function |
|---|---|
| Boolean | table.bool(columnName); |
| Time | table.time(columnName); |
| Date | table.date(columnName); |
| Datetime | table.timestamp(columnName); |
| String | table.string(columnName, length); |
| Text | table.text(columnName); |
| Integer | table.integer(columnName, length); |
| Decimal | table.decimal(columnName, length, zeros); |
| Type | Schema function |
|---|---|
| Null | table.text(columnName).nullable(); |
| Unsigned | table.integer(columnName).unsigned(); |
| Autoincrement | table.integer(columnName).incremented(); |
| Default | table.timestamp(columnName).defaults(value); |
| Type | Schema function |
|---|---|
| Primary | table.primary(columnName); |
| Unique | table.unique(columnName); |
| Index | table.index(columnName); |
| Foreign | table.foreign(columnName, relatedTableName, relatedColumnName, onDelete, onUpdate); |
mysql.create("users", table -> {
table.integer("user_id").incremented();
table.string("name", 64);
table.string("lastname", 64);
table.string("user_type", 20).defaults("USER");
table.primary("user_id");
});mysql.table("users", table -> {
// add columns.
table.timestamp("register_datetime");
// modify columns.
table.modify(columns -> {
columns.string("user_type", 10).defaults("ADMIN");
});
// drop columns.
table.drop("user_type");
// drop primary key.
table.dropPrimary();
});mysql.drop("users");if (mysql.exists("users")) {
}Define migrations
public class CreateUsersTable implements Migration {
@Override
public void up(Database database) {
database.create("users", table -> {
table.string("name", 32);
table.string("lastname", 32);
});
}
@Override
public void down(Database database) {
database.drop("users");
}
}Create custom migrator
public class MyMigrator extends Migrator {
@Override
public void setup() {
this.register(new CreateUsersTable());
}
}Configuration
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<migrators>
<migrator>com.github.luischavez.database.examples.MyMigrator</migrator>
</migrators>
</configuration>mysql.migrate();mysql.rollback();- Luis Chávez https://github.com/luischavez