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

OSCHINA-MIRROR/hengboy-mybatis-enhance

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

欢迎使用 MyBatis Enhance

Maven central

欢迎关注公众号

微信公众号

关注微信公众号,回复加群,获取交流群群号。

使用示例

Пожалуйста, посетите проект: mybatis-enhance-sample.

MyBatis Enhance — что это?

Enhance — это расширение для оригинального MyBatis, которое не влияет на его использование и полностью заменяет mybatis-core, mybatis-spring и mybatis-spring-boot-starter. Можно использовать конфигурацию SpringBoot для настройки соответствующих компонентов и максимально эффективно интегрировать MyBatis.

Кроме того, Enhance предоставляет базовые операции CRUD для одной таблицы и некоторые операции с пакетными данными. Вы можете больше не использовать автоматически сгенерированный способ MyBatis для работы с отдельными таблицами данных, хотя вы всё ещё можете это делать, если захотите.

Также в Enhance предусмотрены динамические способы запросов между несколькими таблицами, которые позволяют вам работать с SQL-запросами как с обычным Java-кодом. Это очень удобно для выполнения таких операций, как связывание, агрегирование и запросы к нескольким таблицам (версия 1.0.3.RELEASE пока не поддерживает).

Использование среды

В настоящее время тенденция развития SpringBoot очевидна, поэтому Enhance временно разрешает использование только в проектах, интегрированных с SpringBoot.

  • SpringBoot 1.x и выше.
  • JDK 1.6 и выше.

Установка

Установка довольно проста. В проекте, который ссылается на Enhance, вам также необходимо добавить используемые драйверы базы данных и источники данных. Enhance не ограничивает вас в этом отношении. Поскольку связанные jar-файлы уже загружены в Maven Center Repository, нам нужно только добавить зависимости, и инструменты разработки автоматически загрузят соответствующие пакеты зависимостей.

  • Если вы используете Maven для сборки, скопируйте следующий код в файл конфигурации pom.xml:
<dependency>
    <groupId>com.gitee.hengboy</groupId>
    <artifactId>spring-boot-starter-mybatis-enhance</artifactId>
    <version>{lastVersion}</version>
</dependency>
  • Если вы используете Gradle для сборки, скопируйте следующее в свой build.gradle:
compile group: 'com.gitee.hengboy', name: 'spring-boot-starter-mybatis-enhance', version: '{lastVersion}'

Обратите внимание, что {lastVersion} следует заменить на последнюю версию mybatis-enhance из центрального репозитория.

Как это использовать?

Создание сущности

Создайте сущность, соответствующую таблице базы данных. Enhance использует форму Spring Data JPA для управления классами сущностей и уже предоставляет некоторые аннотации. Сущность данных (Entity) соответствует таблице данных (Table). Вот простой пример кода сущности:

/**
 * 用户数据实体
 *
 * @author:于起宇 <br/>
 * ===============================
 * Created with IDEA.
 * Date:2018/5/13
 * Time:8:53
 * 简书:http://www.jianshu.com/u/092df3f77bca
 * ================================
 */
@Data
@Table(name = "test_user_info")
public class UserInfoEntity implements Serializable {
    /**
     * 用户编号
     */
    @Id(generatorType = KeyGeneratorTypeEnum.AUTO)
    @Column(name = "TUI_ID")
    private Integer userId;
    /**
     * 用户名
     */
    @Column(name = "TUI_NAME")
    private String userName;
    /**
     * 年龄
     */
    @Column(name = "tui_age")
    private Integer age;
    /**
     * 地址
     */
    @Column(name = "tui_address")
    private String address;
}

Я использовал те же имена аннотаций, что и Spring Data JPA, чтобы упростить переход на использование Enhance.

Создание Mapper

Создание Mapper аналогично использованию оригинального MyBatis, но вам не нужно добавлять аннотацию @Mapper. Созданный вами Mapper должен наследовать интерфейс EnhanceMapper<T,PK>, чтобы быть обнаруженным, и одновременно получать внутренние методы CRUD! Вот пример:

/**
 * 用户基本信息数据接口
 *
 * @author:于起宇 <br/>
 * ===============================
 * Created with IDEA.
 * Date:2018/5/13
 * Time:9:00
 * 简书:http://www.jianshu.com/u/092df3f77bca
 * ================================
 */
public interface UserInfoMapper extends EnhanceMapper<UserInfoEntity, Integer> {
}

EnhanceMapper требует двух параметров типа: первый — тип класса сущности, а второй — тип первичного ключа класса сущности. Это упрощает передачу параметров и возврат значений, избегая при этом преобразования объектов, что усложняет работу и увеличивает затраты времени на выполнение. Для получения дополнительной информации см. документацию по использованию. ### Пользовательский SQL-запрос данных

List selectBySql(String sql, Map<String, Object> params) throws EnhanceFrameworkException;

  • Выполняет запрос к базе данных с использованием пользовательского SQL-запроса.

// Согласно первичному ключу, получить данные из коллекции

List selectCollection(Collection ids) throws EnhanceFrameworkException;

  • Возвращает список объектов T, соответствующих первичному ключу в коллекции ids.

// Получить один объект по первичному ключу

T selectOne(Id id) throws EnhanceFrameworkException;

  • Получает объект T, соответствующий первичному ключу id.

// Обновить данные сущности по первичному ключу

void update(T t) throws EnhanceFrameworkException;

  • Обновляет данные объекта T.

// Выполнить обновление данных с помощью пользовательского SQL

void updateBySql(String sql, Map<String, Object> params) throws EnhanceFrameworkException;

  • Обновляет данные с использованием пользовательского SQL.

Методы именования правил

Методы именования правил — это способ выполнения операций с данными в Spring Data JPA. Они особенно полезны для запросов, статистики и удаления данных. Основной принцип заключается в том, что метод автоматически генерирует SQL на основе своего имени, используя регулярные выражения для сопоставления методов.

Примеры простых запросов

public interface UserInfoMapper extends EnhanceMapper<UserInfoEntity, Integer> {
    /**
     * Запрос только по одному полю
     *
     * @param name значение условия запроса
     * @return
     */
    UserInfoEntity findByUserName(@Param("userName") String name);

    /**
     * Можно запросить несколько условий
     * Соединение с использованием And
     *
     * @param name Значение первого условия запроса
     * @param age  Значение второго условия запроса
     * @return
     */
    UserInfoEntity findByUserNameAndAge(@Param("userName") String name, @Param("age") Integer age);
}

Пример простой статистики

public interface UserInfoMapper extends EnhanceMapper<UserInfoEntity, Integer> {
    /**
     * Статистика только по одному полю
     *
     * @param name значение статистического условия
     * @return
     */
    Long countByUserName(@Param("userName") String name);
    /**
     * Статистические данные на основе нескольких условий
     *
     * @param name Первое значение статистического условия
     * @param age Второе значение статистического условия
     * @return
     */
    Long countByUserNameAndAge(@Param("userName") String name, @Param("age") Integer age);
}    

Простой пример удаления

public interface UserInfoMapper extends EnhanceMapper<UserInfoEntity, Integer> {
    /**
     * Удалить только по одному полю
     *
     * @param name значение условия удаления
     */
    void removeByUserName(@Param("userName") String name);

    /**
     * Удаление на основе нескольких условий
     * Соединение с использованием And
     *
     * @param name Значение первого условия удаления
     * @param id   Значение второго условия удаления
     */
    void removeByUserNameAndUserId(@Param("userName") String name, @Param("userId") String id);
}   

С нетерпением жду Maven автоматического инструмента генерации кода

В качестве текущей среды разработки, независимо от того, являетесь ли вы разработчиком продукта или разработчиком аутсорсинга, вы должны стремиться к быстрой реализации функций. Что касается MyBatis Enhance, я отдельно разработал инструмент автоматической генерации кода, который может автоматически создавать необходимые классы, такие как сущности и мапперы, а также позволяет настраивать создание сущностей с помощью шаблонов Freemarker. Это обеспечивает истинную быструю разработку и повышает эффективность кодирования!

Ожидайте динамический запрос DSL

Enhance по умолчанию поддерживает операции с данными для одной таблицы. Однако в наших проектах наиболее распространёнными являются запросы к нескольким таблицам. Я объединил преимущества QueryDSL, фреймворка для динамических запросов, и перенёс часть базовой реализации в Enhance. Это значительно упрощает запросы к нескольким таблицам и динамическое возвращение любых сущностей (Entity), отображений данных (DTO) и т. д.

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

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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