JFinal-XSQL-плugин — это динамический плагин SQL для JFinal, предназначенный для упрощения работы с Active Record в JFinal, а также для унифицированного управления SQL-запросами. При работе со сложными SQL-запросами этот плагин позволяет легко справиться с задачей. Этот фреймворк написан в стиле MyBatis/IbatiS, однако его работа принципиально отличается от этих фреймворков. XSQL не является ORM-фреймворком; он представляет собой мощный инструмент для генерации SQL-запросов и соответствующих параметров подготовленных запросов на основе определённых правил. Использование этого фреймворка очень простое. Он реализует четыре основных правила: foreach
, isempty
, isnotempty
, isequal
, isnotequal
. Однако возможности этого фреймворка не ограничиваются этими правилами; он позволяет регистрировать произвольные правила.
Ранее был создан другой динамический плагин SQL для JFinal http://git.oschina.net/h5lib/jsql. В этом фреймворке используется JavaScript, который использует движок Rhino для выполнения JS-кода. Общая масса такого подхода больше, чем у нового плагина, скорость рендера 10000 запросов составляет около 10 секунд против 1 секунды у нового плагина. Кроме того, в статье http://www.jfinal.com/share/75 некоторые люди выразили недовольство таким подходом, поэтому был создан новый плагин, аналогичный IbatiS, который управляет правилами через XML-теги.### Maven зависимость
<dependency>
<groupId>cn.fsdev</groupId>
<artifactId>jfinal-xsql-plugin</artifactId>
<version>2.2</version>
</dependency>
<sqlconfig>
<statements>
<statement tag="isnull" class="com.jfplugin.xsql.IsNullStatement" />
</statements>
<sqlmap path="classpath:sql-a.xml"></sqlmap>
<sqlmap path="classpath:sql-b.xml"></sqlmap>
<sqlmap path="classpath:sql-c.xml"></sqlmap>
</sqlconfig>
Конфигурационный файл содержит только два типа узлов: statements
и sqlmap
. Узел statements
используется для конфигурирования пользовательских правил, а узел sqlmap
— для импорта файлов sqlmap
.
<sqlmap namespace="a">
<!-- Первый SQL-запрос -->
<sql id="sql1">
select * from user t where
<isnotempty property="ids" prepend="">
<foreach collection="ids" item="id" open="(" close=")" separator="," prepend="t.id NOT IN ">
#{id}
</foreach>
</isnotempty>
<isempty property="ids" prepend="">
1 = 0
</isempty>
<isnull>
1 = 2
</isnull>
</sql>
<!-- Второй SQL-запрос -->
<sql id="sql2">
select * from a where a.id = ${id} and a.name = ${name}
</sql>
</sqlmap>
Файл конфигурации SqlMap
включает узлы sqlmap
, sql
и управляющие узлы SQL. Узел sqlmap
используется для указания пространства имен, а узел sql
— для управления конкретными SQL-запросами. Каждый SQL-запрос уникален благодаря сочетанию пространства имен и значения id
.Для ссылки на переменные внутри текста SQL-запроса используются формы #{var} и ${var}. Форма #{var} используется для подготовленных запросов, а форма ${var} — для прямого включения значений в SQL-запрос.
me.add(new XsqlPlugin("sql-config.xml", true));
#### 4. Вызов динамического SQL Результат — объектSqlArgs
, содержащий SQL-запрос и список параметров.
Map<String, Object> map = new HashMap<String, Object>(); map.put("ids", Arrays.asList(1, 2, 3)); SqlArgs sqlArgs = XsqlKit.getSqlArgs("a.sql1", map);
Затем можно использовать следующий способ выполнения SQL в ActiveRecord:
Db.find(sqlArgs.sql, sqlArgs.args);
Иногда требуется отдельное использование через JDBC, что можно проверить с помощью тестовых примеров в com.jfplugin.xsql.Test1
.
Дополнительная информация доступна на официальном сайте: http://www.fsdev.cn/
Виртуальная машина: JDK 1.6 + Версия JFinal: основана на версии 2.2, теоретически поддерживает версию 2.0 +
Официальный сайт: http://www.fsdev.cn/
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )