Это перевод текста на русский язык:
Это плагин, основанный на 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 && 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>
Помимо тега for-class, под узлом Mapper есть два важных тега: select и update. Тег select представляет собой метод выполнения запроса, а тег update представляет методы обновления, удаления и вставки.
Тег select и тег update должны иметь два атрибута: action и paras.
Атрибут action указывает имя метода, атрибут paras соответствует имени параметра метода один за другим, атрибуты разделяются запятой.
Текст, появляющийся непосредственно в тегах select или update, будет окончательно обработан как фрагмент оператора SQL.
Подобно Mybatis, SQL поддерживает простые ${para} и #{para}.
if标签: тег if должен определять атрибут condition, содержимое которого является стандартным фрагментом кода Java, требующим, чтобы оно было логическим значением (причина заключается в том, что класс, созданный напрямую с помощью javassist, не интерпретируется и выполняется), если значение условия равно true, то содержимое тега if будет выполнено (тег if в настоящее время не поддерживает вложение).
use-page标签: когда возвращаемое значение является типом Page, плагин считает, что это метод с требованием разбивки на страницы, в списке параметров метода должны быть параметры с именами pageNumber и pageSize, соответствующие типы параметров — int. В SQL также необходимо использовать тег use-page, содержимое до и после use-page будет передано в два параметра метода JFinal с разбивкой на страницы.
exception: используется вместе с if, содержимое тега вызовет исключение SqlXmlException.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )