Проект представлен на flying-doc, код проекта можно найти на сайте gitee.com/limeng32/mybatis.flying. Мы стремимся создать лучший плагин для MyBatis.
Flying — это плагин, который значительно ускоряет разработку с MyBatis и предлагает новый способ работы с данными. Мы надеемся, что он будет полезен для вас.
Как известно, MyBatis прост в освоении, но при использовании в среде интернета неизбежно возникают проблемы, такие как «грязные данные в кэше первого уровня» или необходимость написания большого количества SQL-запросов. Для решения этих проблем команда разработчиков MyBatis выбрала скромный подход: они открыли интерфейс MyBatis, позволяя пользователям разрабатывать плагины и решать эти проблемы по своему усмотрению. Таким образом, все проблемы в области ORM могут быть решены с помощью плагинов на MyBatis.
Раньше нам приходилось писать сложные SQL-запросы в mapper.xml, но теперь в mapper.xml достаточно написать следующее:
<select id="select" resultMap="result">
{"action":"select#{?}"}
</select>
<select id="selectOne" resultMap="result">
{"action":"selectOne"}
</select>
<insert id="insert">
{"action":"insert"}
</insert>
<update id="update">
{"action":"update"}
</update>
<delete id="delete">
{"action":"delete"}
</delete>
Затем добавьте следующие аннотации к вашему классу сущности:
package myPackage;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name = "account")
public class Account {
@Id
@Column
private Integer id;
@Column
private java.lang.String name;
@Column
private Integer age;
/* 省略 getter 和 setter */
}
flying полностью понимает вашу структуру данных и то, что вы хотите сделать. Далее вы можете выполнять операции добавления, изменения, удаления и поиска для этой сущности очень просто:
/* 新增 */
Account newAccount = new Account();
newAccount.setName("ann");
newAccount.setAge(18);
accountService.insert(newAccount);
/* 按主键查询 */
Account account = accountService.select(newAccount.getId());
/* 按姓名查询, здесь возраст игнорируется */
Account accountC1 = new Account();
accountC1.setName("ann");
Account account1 = accountService.selectOne(accountC1);
/* account1 и account представляют одни и те же бизнес-данные */
/* 按年龄查询, здесь имя игнорируется */
Account accountC2 = new Account();
accountC2.setAge(18);
Account account2 = accountService.selectOne(accountC2);
/* account2 и account представляют одни и те же бизнес-данные */
/* 按 имени и возрасту запрос */
Account accountC3 = new Account();
accountC3.setName("ann");
accountC3.setAge(18);
Account account3 = accountService.selectOne(accountC3);
/* account3 и account представляют одни и те же бизнес-данные */
/* 修改 */
account.setName("bob");
accountService.update(newAccount);
/* удаление по первичному ключу */
accountService.delete(newAccount);
Поскольку flying знает всю вашу структуру данных и отношения сущностей, работа с данными становится очень простой. Вам больше не нужно определять методы «getAccountById», «getAccountByName» и «getAccountByAge». Это приводит к ещё большему преимуществу: ваш сервисный уровень должен заботиться только о логике транзакций, и он полностью освобождён от низкоуровневого кода. Вышеупомянутое — лишь верхушка айсберга возможностей flying, другие функции, такие как многотабличные запросы, разбиение на страницы, оптимистическая блокировка, логические запросы, индексы, сложные внешние ключи, пакетное выполнение и т. д., также имеют простые решения в flying. Вы можете просмотреть их на flying-doc.
Основные особенности flying можно резюмировать следующим образом:
Входные параметры и возвращаемые типы операций с данными являются настраиваемыми классами сущностей. Полностью без SQL, исключая различные «ошибки ввода», проект можно свободно реорганизовать.
Неинвазивный механизм работы, который может работать вместе с существующими методами MyBatis.
Гибкая настройка полей запроса чёрного и белого списков, чтобы упростить управление конфиденциальными данными.
Можно настроить генератор первичных ключей и полностью поддерживать логические запросы. (Добавлена функция в версии Qing Ming)
Поддержка сложных внешних ключей. (Добавлена функция в версии Qing Ming)
Поддерживает использование индексов для запросов и пакетное выполнение операций вставки, обновления и удаления. (Добавлены функции в версии Aurora)
Последние координаты Maven для flying:
<groupId>com.github.limeng32</groupId>
<artifactId>mybatis.flying</artifactId>
<version>1.0.0</version>
Соответствующие версии MyBatis для каждой версии flying:
Версия MyBatis | Версия flying | Английский заголовок |
---|---|---|
3.4.x |
0.9.4 阳春 |
sunny-spring |
3.4.x |
0.9.9 清明 |
qing-ming |
3.4.x |
1.0.0 极光 |
Aurora |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )