Технический чат QQ: 162695864
JdbcQuery — это библиотека, которая упрощает выполнение сложных SQL запросов и хранимых процедур в Java, делая это так же просто, как Hibernate, и позволяющая легко получать результаты в виде списков, карт и массивов.
String strSql = "{call callcenter_pack.Get_TaskCaseCount(:P_UserID,:P_ErrorInfo,:P_OutData)}";
JdbcQuery query = JdbcUtils.createNativeQuery(super.getConnection(), strSql);
query.setParameter("P_UserID", 5);
query.setOutParameter("P_ErrorInfo", OracleTypes.VARCHAR);
query.setOutParameter("P_OutData", OracleTypes.CURSOR);
query.executeProcedure();
P_ErrorInfo — выходной параметр, который используется для получения ошибок из хранимой процедуры. P_OutData — курсор.
String strError = query.getString("P_ErrorInfo");
List<TaskBarCounter> dataList = query.getResultList("P_OutData", TaskBarCounter.class);
query.closeCallableStatement();
```### Можно легко получить список результатов.
2\. Пример вызова SQL-запроса:
-------
```java
public Result findCollect(final QueryMap qMap) {
final StringBuilder sb = new StringBuilder();
StringBuilder sbWhere = new StringBuilder();
// Сборка необходимых колонок для агрегированного запроса
sb.append("select c.store_id, s.name, SUM(c.total_recharge) as total_recharge,");
sb.append("SUM(c.total_payment) as total_payment,");
sb.append("SUM(c.total_reversal) as total_reversal ");
// Условия запроса
sbWhere.append("from collect c inner join store s on c.store_id = s.id ");
sbWhere.append("where c.created >= :start ");
sbWhere.append("and c.created <= :end ");
sbWhere.append("and s.parent_id = :parentId ");
sbWhere.append("and s.name like :storeName");
sbWhere.append("GROUP BY c.store_id, s.name ");
// Запрос количества записей
final String countSQL = "select count(c.id)" + sbWhere.toString();
// Пагинация
sb.append(sbWhere).append("limit :pageStart,:pageSize");
// QueryMap - мощная реализация HashMap с различными типами преобразований,
// например: String -> Integer, String -> Date и т. д.
qMap.convertsInt("pageIndex", "pageSize");
// Вычисление параметров пагинации: limit :pageStart,:pageSize
qMap.setProperty("pageStart", qMap.getPageIndex() * qMap.getPageSize());
// Установка параметра parentId, например: and s.parent_id = :parentId
qMap.setProperty("parentId", 5);
// метод getLikeValue может быть преобразован в формат LIKE, например: test => '%test%'
qMap.setProperty("storeName", qMap.getLikeValue("storeName"));
final Result result = new Result();
// получаем соединение с базой данных через Hibernate, используя super.getSession().connection
// устанавливаем параметры метода: соединение с базой данных, SQL-запрос, параметры
JdbcQuery query = JdbcUtils.createNativeQuery(super.getSession().connection, countSQL, qMap);
}
``````markdown
// получаем количество записей
int count = query.getCount();
// устанавливаем параметры метода: соединение с базой данных, SQL-запрос, параметры
JdbcQuery querys = JdbcUtils.createNativeQuery(super.getSession().connection, sb.toString(), qMap);
// получаем список результатов List<? extends HashMap>
List<?> list = querys.getResultList();
// сохраняем результаты в объекте result и возвращаем его
result.setTotal(count);
result.setData(list);
Log.i("result", result);
return result;
}
//===========================================================================================
//============= Получение соединения с базой данных Hibernate4.x начало ======================
super.getCurrentSession().doWork(new Work() {
public void execute(Connection connection) {
// получаем соединение с базой данных через Hibernate
// устанавливаем параметры метода: соединение с базой данных, SQL-запрос, параметры
JdbcQuery query = JdbcUtils.createNativeQuery(connection, countSQL, qMap);
// получаем количество записей
int count = query.getCount();
// устанавливаем параметры метода: соединение с базой данных, SQL-запрос, параметры
JdbcQuery querys = JdbcUtils.createNativeQuery(connection, sb.toString(), qMap);
// получаем список результатов List<? extends HashMap>
List<?> list = querys.getResultList();
// сохраняем результаты в объекте result и возвращаем его
result.setTotal(count);
result.setData(list);
Log.i("result", result);
}
});
//============= Получение соединения с базой данных Hibernate4.x конец =======================
return result;
}
# Пример кода
Пример кода ниже демонстрирует использование метода `getLikeValue` для форматирования значений в формате LIKE.
``````java
setProperty("parentId", 5);
// метод getLikeValue может быть преобразован в формат LIKE, например: test => '%test%'
qMap.setProperty("storeName", qMap.getLikeValue("storeName"));
final Result result = new Result();
// получаем соединение с базой данных через Hibernate, используя super.getSession().connection
// устанавливаем параметры метода: соединение с базой данных, SQL-запрос, параметры
JdbcQuery query = JdbcUtils.createNativeQuery(super.getSession().connection, countSQL, qMap);
// получаем количество записей
int count = query.getCount();
// устанавливаем параметры метода: соединение с базой данных, SQL-запрос, параметры
JdbcQuery querys = JdbcUtils.createNativeQuery(super.getSession().connection, sb.toString(), qMap);
// получаем список результатов List<? extends HashMap>
List<?> list = querys.getResultList();
// сохраняем результаты в объекте result и возвращаем его
result.setTotal(count);
result.setData(list);
Log.i("result", result);
return result;
}
//===========================================================================================
//=== Получение соединения с базой данных Hibernate4.x начало =================================
super.getCurrentSession().doWork(new Work() {
public void execute(Connection connection) {
// получаем соединение с базой данных через Hibernate
// устанавливаем параметры метода: соединение с базой данных, SQL-запрос, параметры
JdbcQuery query = JdbcUtils.createNativeQuery(connection, countSQL, qMap);
// получаем количество записей
int count = query.getCount();
// устанавливаем параметры метода: соединение с базой данных, SQL-запрос, параметры
JdbcQuery querys = JdbcUtils.createNativeQuery(connection, sb.toString(), qMap);
Здесь все необходимые строки переведены на русский язык, сохранив структуру и форматирование исходного текста.```java // получаем список результатов List extends HashMap> List> list = querys.getResultList(); // сохраняем результаты в объекте result и возвращаем его result.setTotal(count); result.setData(list); Log.i("result", result); }); //============= Получение соединения с базой данных Hibernate4.x конец ======================= return result; }
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )