Обёртка лёгкого API для Hibernate.
<dependency>
<groupId>cn.xnatural</groupId>
<artifactId>jpa</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>cn.xnatural</groupId>
<artifactId>jpa</artifactId>
<version>1.3.2-java8</version>
</dependency>
// 1. Создать по jdbcUrl
Repo repo = new Repo("jdbc:mysql://localhost:3306/test?user=root&password=root").init();
// 2. Добавить свойства
Repo repo = new Repo(
"jdbc:mysql://localhost:3306/test", "root", "root", 0, 5
).setAttr("hibernate.hbm2ddl.auto", "update")
.entities(Db.class).init();
// 3. Создать с помощью свойств
Map<String, Object> attrs = new HashMap<>();
attrs.put("jdbcUrl", "jdbc:mysql://localhost:3306/test?user=root&password=root");
attrs.put("hibernate.hbm2ddl.auto", "update"); //update: автоматическое обновление структуры таблицы в соответствии с сущностью, none: не обновлять
Repo repo = new Repo(attrs).entities(Db.class).init();
Db db = repo.byId(Db.class, "sys");
Db db = repo.row(Db.class, (root, query, cb) -> cb.equal(root.get("Db"), "sys"));
// По одному свойству
Db db = repo.byAttr(Db.class, "Db", "sys");
List<Db> dbs = repo.rows(Db.class, (root, query, cb) -> cb.equal(root.get("Db"), "sys"));
// По одному свойству
List<Db> dbs = repo.rows(Db.class, "Db", "sys");
Page<Db> dbs = repo.paging(Db.class, 1, 10, (root, query, cb) -> cb.equal(root.get("Db"), "sys"));
// Сохранить или обновить сущность
repo.saveOrUpdate(сущность);
// Удалить сущность
repo.delete(сущность);
repo.delete(класс сущности, идентификатор сущности);
// Подсчитать количество сущностей
repo.count(класс сущности, условие (необязательно));
repo.count(класс сущности, «имя свойства», «значение свойства»);
// Проверить существование сущности
repo.exist(класс сущности, условие (необязательно));
repo.exist(класс сущности, «имя свойства», «значение свойства»);
// Получить все сущности
repo.all(класс сущности);
Поддерживает только вопросительный знак? в качестве заполнителя.
// Одно значение
repo.row("select count(1) from db", Long.class);
// С параметрами
Map<String, Object> result = repo.row("select * from db where Db=?", "sys");
// Обернуть результат
Db result = repo.row("select * from db where Db=?", Db.class, "sys");
// Пагинация (List<Map>)
Page<Map> pageData = repo.paging("select * from db where Db=?", 1, 10, "sys");
// Пагинация: указать тип
Page<Db> pageData = repo.paging("select * from db where Db=?", 1, 10, Db.class, "sys");
// Список Map по умолчанию
List<Map<String, Object>> results = repo.rows("select * from db limit ?", 10);
// Указать возвращаемый тип
List<Db> results = repo.rows("select * from db where Db=?", Db.class, "sys");
// Именованные параметры (условие in)
List<Map<String, Object>> results = repo.rows("select * from db where Db = ? and Db in (?)", "sys", Arrays.asList("sys"));
// Обновить
repo.execute("update test set age=? where id=?", 11, "4028b881766f3e5801766f3e87ba0000");
// Вставить
repo.execute("insert into test values(?,?,?,?,?)", UUID.randomUUID().toString().replace("-", ""), new Date(), new Date(), 22, "name");
// Удалить
repo.execute("delete from test where id=?", "ad3e4ff8f3fd4171aeeb9dd2c0aa6f0c");
repo.doSession(session -> {
return session.createQuery("from Test").list();
});
// Другие пользовательские запросы
repo.trans(session -> {
// TODO
// session.createQuery(hql);// hql-запрос
return null;
});
// Транзакция: успех/неудача
repo.trans(session -> {
// TODO
// session.createQuery(hql);// hql-запрос
return null;
}, () -> {
// Успешное выполнение
}, (ex) -> {
// Неудачное выполнение
});
repo.doSession(session -> {
// Обработка в сеансе
});
Добавляет версию к данным сущности, записывает каждое изменение.
Журнал изменений хранится в OpHistory сущности. String name;
private Integer version;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
@Override public Integer getVersion() { return version; }
@Override public void setVersion(Integer version) { this.version = version; }
/**
@Entity
*public class* **DeleteEntity** *extends* NanoIDEntity *implements* EDeleting {
*private* String name;
*public* String getName() {
*return* name;
}
*public void* setName(String name) {
this.name = name;
}
/**
* Нужно записать удалённый контент
*/
**@Override**
*public String* content() {
*return* JSON.toJSONString(this);
}
}
Добавить атрибут updater для сущности. Значение атрибута operator операции OpHistory версии берётся отсюда.
Добавить атрибут creator для сущности.
// Запрос имени таблицы, соответствующей сущности
repo.tbName(实体Class);
// Получить текущий jdbcUrl соединения
repo.getJdbcUrl();
// Получить текущее имя базы данных (mysql)
repo.getDbName();
// Получить текущую информацию о версии базы данных
repo.getDBVersion();
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )