1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vmo-JFinal-Sql-xml

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Это перевод текста на русский язык:

Это плагин, основанный на JFinal ActiveRecord, цель которого — стать таким же удобным инструментом SQL, как Mybatis, и предоставить простую функцию конкатенации SQL.

Быстрый старт

Как и в случае с Mybatis, при использовании плагина JFinal-Sql-Xml один интерфейс соответствует одному XML-документу.

В XML-документах плагина JFinal-Sql-XML вы можете удобно использовать xsd в корневом узле для получения интеллектуальных подсказок от вашего редактора IDE. Обратите внимание, что обязательно используйте Mapper в качестве корневого узла, потому что во время запуска плагина XML-файлы без корневого узла Mapper будут отфильтрованы.

<?xml version="1.0" encoding="UTF-8"?>
<Mapper
        xmlns="www.jfinal.com/sqlxml"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="www.jfinal.com/sqlxml http://git.oschina.net/vmo/JFinal-Sql-xml/raw/master/src/main/java/sqlxml.xsd"
        >
</Mapper>

Каждый документ Mapper должен содержать тег for-class, а в теге for-class должно быть указано имя текущего интерфейса XML.

<?xml version="1.0" encoding="UTF-8"?>
<Mapper
        xmlns="www.jfinal.com/sqlxml"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="www.jfinal.com/sqlxml http://git.oschina.net/vmo/JFinal-Sql-xml/raw/master/src/main/java/sqlxml.xsd"
        >
    <for-class>com.jfinal.plugin.sqlxml.test.dao.UserSqlDao</for-class>
</Mapper>

Давайте посмотрим, что написано в UserSqlDao.

public interface UserSqlDao {

    public User validPassword(String name, String email, String password);

    public List<User> getUserByNameLike(String name);

    public Page<User> getUserByNameLikeWithPage(String name,int pageNumber,int pageSize);

    public boolean updateUserPassword(Integer id, String oldPassword, String newPassword);
}

Это стандартный интерфейс Java, который определяет четыре функции: проверка пароля, поиск пользователя по имени, поиск пользователя с разбивкой на страницы по имени и обновление пароля пользователя с указанным идентификатором.

Теперь давайте посмотрим на соответствующий XML-файл:

<?xml version="1.0" encoding="UTF-8"?>
<Mapper
        xmlns="www.jfinal.com/sqlxml"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="www.jfinal.com/sqlxml http://git.oschina.net/vmo/JFinal-Sql-xml/raw/master/src/main/java/sqlxml.xsd"
        >
    <for-class>com.jfinal.plugin.sqlxml.test.dao.UserSqlDao</for-class>
    <select action="validPassword" paras="name,email,password">
        select * from user where
        <if condition="name!=null">name=${name} and password=MD5(CONCAT(${password},salt))</if>
        <if condition="email!=null">email=${email} and password=MD5(CONCAT(${password},salt))</if>
        <if condition="email==null &amp;&amp; name==null">
            <exception>不能这么坑哦!</exception>
        </if>
    </select>
    <select action="getUserByNameLike" paras="name">
        select id,name from user where name like ${name}
    </select>
    <select action="getUserByNameLikeWithPage" paras="name">
         select id,name <use-page/> from user where name like ${name}
    </select>
    <update action="updateUserPassword" paras="id,oldPassword,newPassword">
        update user set password=${newPassword} where id=${id} and oldPassword=MD5(CONCAT(${newPassword},salt))
    </update>
</Mapper>

select 标签与 update 标签

Помимо тега for-class, под узлом Mapper есть два важных тега: select и update. Тег select представляет собой метод выполнения запроса, а тег update представляет методы обновления, удаления и вставки.

Тег select и тег update должны иметь два атрибута: action и paras.

Атрибут action указывает имя метода, атрибут paras соответствует имени параметра метода один за другим, атрибуты разделяются запятой.

Текст, появляющийся непосредственно в тегах select или update, будет окончательно обработан как фрагмент оператора SQL.

Подобно Mybatis, SQL поддерживает простые ${para} и #{para}.

  1. Атрибуты ${para} будут переданы как параметры в окончательном выполнении SQL, их позиции будут заменены знаком вопроса.
  2. А #{para} просто объединяет значение para со значением SQL (это может привести к риску внедрения SQL!).

Поддерживаемые теги SQL: if 、 use-page、 exception

  • if标签: тег if должен определять атрибут condition, содержимое которого является стандартным фрагментом кода Java, требующим, чтобы оно было логическим значением (причина заключается в том, что класс, созданный напрямую с помощью javassist, не интерпретируется и выполняется), если значение условия равно true, то содержимое тега if будет выполнено (тег if в настоящее время не поддерживает вложение).

  • use-page标签: когда возвращаемое значение является типом Page, плагин считает, что это метод с требованием разбивки на страницы, в списке параметров метода должны быть параметры с именами pageNumber и pageSize, соответствующие типы параметров — int. В SQL также необходимо использовать тег use-page, содержимое до и после use-page будет передано в два параметра метода JFinal с разбивкой на страницы.

  • exception: используется вместе с if, содержимое тега вызовет исключение SqlXmlException.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Это плагин, основанный на JFinal ActiveRecord. Его цель — стать таким же удобным инструментом SQL, как Mybatis, и предоставить простые функции для сборки SQL-запросов. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/vmo-JFinal-Sql-xml.git
git@api.gitlife.ru:oschina-mirror/vmo-JFinal-Sql-xml.git
oschina-mirror
vmo-JFinal-Sql-xml
vmo-JFinal-Sql-xml
master