Тайбут
getee (https://gitee.com/magintursh/tyboot), github (https://github.com/magintursh/tyboot)
Тайбут — это серверный фреймворк на основе Spring Boot, предназначенный для быстрой разработки серверных приложений. Для микросервисной архитектуры рекомендуется использовать другой проект — тайклауд (всё ещё находится в разработке).
Tyboot
├─tyboot-api
│ ├─tyboot-api-boot Пример проекта, реализующий общие функции, такие как управление словарями и разрешения.
├─tyboot-component
│ ├─tyboot-component-activemq Интеграция ActiveMQ.
│ ├─tyboot-component-amqp Простая интеграция Spring AMQP.
│ ├─tyboot-component-cache Кэширование, дополнительная реализация и инкапсуляция Redis, географическое местоположение, конвейер, реализация разбивки на страницы Zset.
│ ├─tyboot-component-emq Интеграция MQTT-сервиса EMQ.
│ ├─tyboot-component-event Использование механизма событий Spring для реализации обработки событий на основе REST API.
│ ├─tyboot-component-mongo Интеграция Mongo.
│ ├─tyboot-component-opendata Интеграция общих открытых интерфейсов сторонних разработчиков, таких как Qiniu, Ali Duyun, Tencent IM, Megvii Push.
│ └─tyboot-component-validation Проверка параметров.
├─tyboot-core
│ ├─tyboot-core-auth Аутентификация пользователей и совместное использование сеансов.
│ ├─tyboot-core-foundation Общие инструменты, такие как инкапсулированные потоки, контексты Bean и File, списки в деревья, шифрование и дешифрование.
│ ├─tyboot-core-rdbms Интеграция MyBatis и MyBatis Plus, упрощение ORM и инкапсуляции сервисов.
│ └─tyboot-core-restful Инкапсуляция RESTful API, документация по API, унифицированная обработка исключений, обработка перехвата запросов, инкапсуляция возвращаемых данных и контекста.
└─tyboot-prototype
├─tyboot-prototype-account Система виртуальных счетов.
├─tyboot-prototype-order Универсальная система управления заказами.
└─tyboot-prototype-trade Простая реализация платёжного канала, включая Alipay и WeChat.
Каталог соглашений:
Пример: tyboot-api-privilege — ниже приведена структура каталогов соглашения о проекте. org.typroject.api.privilege. controller — каталог интерфейса; face. — бизнес-слой; model — VO; orm. — операции с данными; dao — интерфейс mapper; entity — PO; service — реализация бизнес-логики.
Соглашение ORM:
Сущность должна наследовать BaseEntity. Соответствующая таблица данных не может отсутствовать общие поля. SEQUENCE_NBR — bigint 20 — физический первичный ключ; REC_USER_ID — varchar 32 — идентификатор последнего модификатора; REC_DATE — datetime — дата последней модификации.
Используется mybatisplus, поэтому в примере проекта не требуется импортировать файл mapper.xml, и базового метода baseMapper достаточно. Исключением является необходимость выполнения сложного запроса или импорта XML, который будет реализован в файле.
Обычно интерфейс dao слоя mapper пуст, за исключением случаев, когда необходимо написать SQL или импортировать XML, методы будут реализованы в нём.
Сервисное соглашение:
public class LocationInfoService extends BaseService<LocationInfoModel,LocationInfo,LocationInfoMapper> {}
Методы в сервисе не должны быть перегружены, поскольку они будут получать только экземпляры методов через отражение на основе имени метода.
В примере сервиса нет интерфейса, и используется непосредственно класс реализации. Необходимо определить интерфейс самостоятельно. При проектировании бизнес-системы следует придерживаться принципов проектирования. Для простых бизнес-систем можно гибко выбирать в зависимости от ситуации.
Операции с одной таблицей и одним объектом не требуют написания методов в сервисе, а также не требуют импорта mapper, универсальных методов достаточно, разбиение на страницы и запросы требуют только одной строки кода, например:
Разбивка на страницы:
public Page<DictionarieModel> queryDictPage(Page page, String agencyCode ,
String buType,
String dictAlias,
@Condition(Operator.like) String dictName,
String dictCode) throws Exception
{
return this.queryForPage(page,"排序字段",false,agencyCode,buType,dictAlias,dictName,dictCode);
}
В качестве параметра запроса необходимо использовать имя атрибута, соответствующее имени атрибута модели. Передача параметров в список params в queryForPage в baseService должна соответствовать порядку параметров предварительного метода (queryDictPage)
Нижний уровень автоматически анализирует имена параметров предварительного метода и проверяет значения на пустоту, а затем преобразует их в имена полей базы данных для создания компоновщика условий.
Аннотация @Condition используется для определения оператора условия. Список уже реализованных операторов условий см. в Operator. Все логические отношения между условиями поиска представляют собой отношения «И», а отношения «ИЛИ» пока не реализованы.
Список: (соглашение о параметрах аналогично методу разбиения на страницы)
public List<DictionarieModel> queryDictList(String agencyCode, String buType, String dictAlias, @Condition(Operator.like) String dictName, String dictCode) throws Exception {
return this.queryForList("排序字段", false, agencyCode, buType, dictAlias, dictName, dictCode);
}
Контроллер
О кэшировании
Использование генератора кода
Используйте генератор кода, предоставляемый mybatisplus, см. пример проекта.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )