关注微信公众号,回复加群,获取交流群群号。
Пожалуйста, посетите проект: mybatis-enhance-sample.
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.
Установка довольно проста. В проекте, который ссылается на Enhance, вам также необходимо добавить используемые драйверы базы данных и источники данных. Enhance не ограничивает вас в этом отношении. Поскольку связанные jar-файлы уже загружены в Maven Center Repository, нам нужно только добавить зависимости, и инструменты разработки автоматически загрузят соответствующие пакеты зависимостей.
<dependency>
<groupId>com.gitee.hengboy</groupId>
<artifactId>spring-boot-starter-mybatis-enhance</artifactId>
<version>{lastVersion}</version>
</dependency>
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 аналогично использованию оригинального 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;
// Согласно первичному ключу, получить данные из коллекции
List selectCollection(Collection ids) throws EnhanceFrameworkException;
// Получить один объект по первичному ключу
T selectOne(Id id) throws EnhanceFrameworkException;
// Обновить данные сущности по первичному ключу
void update(T t) throws EnhanceFrameworkException;
// Выполнить обновление данных с помощью пользовательского SQL
void updateBySql(String sql, Map<String, Object> params) throws EnhanceFrameworkException;
Методы именования правил — это способ выполнения операций с данными в 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);
}
В качестве текущей среды разработки, независимо от того, являетесь ли вы разработчиком продукта или разработчиком аутсорсинга, вы должны стремиться к быстрой реализации функций. Что касается MyBatis Enhance, я отдельно разработал инструмент автоматической генерации кода, который может автоматически создавать необходимые классы, такие как сущности и мапперы, а также позволяет настраивать создание сущностей с помощью шаблонов Freemarker. Это обеспечивает истинную быструю разработку и повышает эффективность кодирования!
Enhance по умолчанию поддерживает операции с данными для одной таблицы. Однако в наших проектах наиболее распространёнными являются запросы к нескольким таблицам. Я объединил преимущества QueryDSL, фреймворка для динамических запросов, и перенёс часть базовой реализации в Enhance. Это значительно упрощает запросы к нескольким таблицам и динамическое возвращение любых сущностей (Entity), отображений данных (DTO) и т. д.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )