Открытый библиотечный проект, который предоставляет простое API поверх JDBC.
Упрощает разработку приложений с использованием JDBC, не снижая производительность программы, и обеспечивает высокую совместимость с JDBC.
Для операций чтения данных таблицы он может преобразовать ResultSet
в объекты кэша, где внутренний формат данных представлен в виде XML, а также может быть преобразован в List
, Array
, Set
и другие коллекции Java, что делает работу программиста более удобной.
Для операций записи данных таблицы процесс становится очень простым (необходимо только указать SQL-запрос).
Поддержка использования источников данных, пулов соединений баз данных и других технологий для повышения производительности — повторное использование уже созданных объектов соединений с базой данных вместо затрат времени и усилий на постоянное создание и удаление таких объектов.
Поддержка динамического изменения, добавления, удаления, модификации, поиска, сортировки и объединения ResultSet
.
Поддержка распределённых баз данных и нескольких источников данных.
Проект состоит из двух основных модулей: wasdb
и wasdbtools
:
wasdb
является ядром проекта и предназначен для реализации операций с использованием JDBC.2. Модуль wasdbtools
представляет собой пример использования wasdb
, включая конфигурацию источника данных, управление транзакциями, инструменты для чтения/записи данных, простые примеры и т.д.GitHub адрес: https://github.com/fellyvon/wasdb
Создайте новый проект и добавьте зависимости wasdb-1.0.0.jar и wasdbtools-1.0.0.jar.
Можно использовать Maven для добавления зависимостей:
<dependency>
<groupId>com.waspring.wasdb</groupId>
<artifactId>wasdbtools</artifactId>
<version>1.0.0</version>
</dependency>
Создайте конфигурационный файл database.xml
для настройки источника данных. Управление бинами осуществляется с помощью конфигурации Spring 3.2, а пул соединений использует Druid.
Создайте новый класс и установите путь до конфигурационного файла. При запуске приложения выполните следующее:
com.waspring.wasdbtools.DatabaseConnection.setConnConfig("classpath:ваш_путь/database.xml");
Используйте инструментальные классы для работы с данными:
(1) Чтение данных:
/**
* Пример запроса данных
* @throws Exception
*/
public void queryData(String mainOrderNo) throws Exception {
List<Object> para = new ArrayList<>();
String sql = "SELECT * FROM d_order WHERE status = ?";
para.add("001");
if (mainOrderNo != null && !"".equals(mainOrderNo)) {
sql += " AND main_order_no = ?";
para.add(mainOrderNo);
}
sql += " LIMIT ?, ?";
para.add(1);
para.add(10);
// Обратите внимание, что connName соответствует beanId в файле database.xml
ResultSet rs = DaoUtil.queryData(connName, sql, para.toArray());
}
while (rs.next()) {
System.out.println("data=" + rs.getString(1) + ":"
+ rs.getString(2)
+ ":" + rs.getDate("create_date")
+ ":" + rs.getDouble(1));
}
(2) Обновление, удаление и другие операции а. Операции с транзакциями
i. Использование шаблона транзакций
/**
* Использование шаблона транзакций
*/
public void testTrans() {
// обратите внимание, что connName — это beanId в database.xml
TransactionTemplate tmp = new TransactionTemplate(connName);
Object o = tmp.executeTransaction(new TransactionCallback() {
public Object doTransactionEvent() throws Exception {
Exception e = new Exception();
String sql = "insert into a_api_topy(topy_name,topy_value) values(?,?)";
// обратите внимание, что connName — это beanId в database.xml
DaoUtil.executeUpdate(connName, sql, new Object[]{"2", 4});
// обратите внимание, что connName — это beanId в database.xml
DaoUtil.executeUpdate(connName, sql, new Object[]{"4", OnClickListener});
// обратите внимание, что connName — это beanId в database.xml
DaoUtil.executeUpdate(connName, sql, new Object[]{"5", 7});
// попробуйте здесь выбросить исключение для отката
return "1";
}
});
System.out.println(o);
}
ii. Ручное управление транзакциями
/**
* Обработка с ручной декларацией транзакций
*/
public void testTrans2() {
// обратите внимание, что connName — это beanId в database.xml
TransactionManager trManager = new TransactionManager(connName);
``` Transaction transaction = null;
String sql = "insert into a_api_topy(topy_name, topy_value) values (?, ?)";
try {
transaction = trManager.beginTransaction();
// Note that connName is the beanId in database.xml
DaoUtil.executeUpdate(connName, sql, new Object[]{"h1", 1});
// Note that connName is the beanId in database.xml
DaoUtil.executeUpdate(connName, sql, new Object[]{"h2", 2});
// Note that connName is the beanId in database.xml
DaoUtil.executeUpdate(connName, sql, new Object[]{"h3", 3});
// Try throwing an exception here for rollback
trManager.commitTransaction(transaction);
} catch (Exception e) {
trManager.rollbackTransaction(transaction, e);
}}
б. Использование без управления транзакциями
/**
* Обработка по умолчанию с автоматическим подтверждением
*/
public void testNoTras() {
try {
String sql = "insert into a_api_topy(topy_name,topy_value) values(?,?)";
// Обратите внимание, что connName — это beanId в файле database.xml
DaoUtil.executeUpdate(connName, sql, new Object[] {"7", 1});
// Обратите внимание, что connName — это beanId в файле database.xml
DaoUtil.executeUpdate(connName, sql, new Object[] {"8", 2});
// Обратите внимание, что connName — это beanId в файле database.xml
DaoUtil.executeUpdate(connName, sql, new Object[] {"9", 3});
// Здесь можно попробовать выбросить исключение для отката транзакции
} catch (Exception e) {
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )