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

OSCHINA-MIRROR/limeng32-mybatis.flying

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

mybatis.flying — 极光 (Aurora)

Build Status Codecov Maven Central GitHub release License

Проект представлен на flying-doc, код проекта можно найти на сайте gitee.com/limeng32/mybatis.flying. Мы стремимся создать лучший плагин для MyBatis.

Flying — это плагин, который значительно ускоряет разработку с MyBatis и предлагает новый способ работы с данными. Мы надеемся, что он будет полезен для вас.

Как известно, MyBatis прост в освоении, но при использовании в среде интернета неизбежно возникают проблемы, такие как «грязные данные в кэше первого уровня» или необходимость написания большого количества SQL-запросов. Для решения этих проблем команда разработчиков MyBatis выбрала скромный подход: они открыли интерфейс MyBatis, позволяя пользователям разрабатывать плагины и решать эти проблемы по своему усмотрению. Таким образом, все проблемы в области ORM могут быть решены с помощью плагинов на MyBatis.

Основные особенности flying:

Раньше нам приходилось писать сложные 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)

Как получить flying:

Последние координаты 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 )

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

Введение

mybatis лучшие плагины в комбинации. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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