CHANGELOG
[v3.5.9] 2024.10.23
- Оптимизация кода генератора для поддержки визуальной конфигурации генерации.
- Развязка расширения пакета, больше не зависит от Spring разработки.
- Модуль JSQLParser был разделён на несколько модулей: mybatis-plus-jsqlparser (поддерживает последнюю версию JSQLParser) и mybatis-plus-jsqlparser-4.9 (по умолчанию не поставляется, после обновления необходимо самостоятельно импортировать).
- Рефакторинг модуля Service в абстрактный класс CrudRepository, использование IService для бизнес-слоя данных больше не рекомендуется.
- Поддержка плагина запуска Solon.
- Обновление SpringBoot до версии 3.3.4.
- Обновление Velocity до версии 2.4.
[v3.5.8] 2024.09.18
- Решение проблемы с обратной последовательностью оптимизации joinOfCountSql.
- Решение проблемы неточного возврата значения при использовании rewriteBatchedStatements = true в классе инструментов Db.
- Исправление конфликта между логическим удалением и оптимистичным блокированием.
- Исправление ошибки анализа IllegalSQLInnerInterceptor для вложенных операторов count.
- Обновление jsqlParser до версии 5.0 для решения проблемы с оператором for update.
- Исправление проблемы с анализом jsqlParser при оптимизации ошибок из-за отрицательных чисел.
- Исправление неполной очистки кэша Mapper.
- Исправление проблем с кодировкой комментариев таблицы SQL Server Query.
- Улучшение логики проверки внедрения функций.
- Изменение доступа к свойствам Page на private и пересмотр метода toString.
- Выдача предупреждающего сообщения журнала для типов, которые не поддерживают стратегию генерации первичных ключей uuid.
- Преобразование MybatisPlusException в подкласс PersistenceException.
- Добавление обработки пустого набора идентификаторов при удалении.
- Переименование метода selectBatchIds в selectByIds.
- Поддержка соответствия атрибутов tableName и schema.
- Генерация кода для получения свойств виртуальных столбцов.
- Цепочка wrapper к lambda chain wrapper #6314.
- Генератор кода поддерживает ручную спецификацию драйвера базы данных, который не может автоматически регистрироваться.
- Обновление Kotlin до версии 2.0.0.
- Обновление Spring Boot до версии 3.3.2.
- Обновление fastjson до версии 2.0.52.
- Обновление mybatis-spring до версии 3.0.4.
- Обновление spring-cloud-commons до версии 4.1.4.
- Частичная поддержка обновления зависимостей.
- Поддержка GoldenDB.
- Поддержка Duckdb.
- Поддержка Derby.
- Поддержка Vastbase.
[v3.5.7] 2024.06.10
- Исправление обработки динамических таблиц при обновлении ignore.
- Исправление ошибок пробелов при разбиении на страницы SQL Server 2005.
- Исправление проблем, возникающих при запросе нескольких арендаторов.
- Уменьшение принудительного преобразования при сериализации JSON в случае универсальных шаблонов.
- Исправление неработающих ограничений шаблона генератора кода.
- Исправление оптимизации count при разбивке на страницы и упорядочивании по ошибке.
- Исправление генерации кода для базы данных Dameng.
- Исправление потери эффективности специального оператора exists в плагине арендатора.
- Исправление sqlite ddl_history, приводящее к невозможности создания таблицы.
- Исправление DataChangeRecorderInnerInterceptor при вставке и настройке игнорирования.
- Исправление кода генератора при обработке нестандартных типов JdbcType, вызывающих нулевые указатели.
- Добавлены методы BatchOperation и InsertOrUpdate в базовый маппер.
- Возвращаемое значение метода BatchOperation в базовом маппере — List.
- Методы базового маппера по умолчанию поддерживают логическое удаление и заполнение.
- Настройка логики заполнения логического удаления в слое сервиса.
- Реорганизация логики обработки параметров удаления.
- Обработка BigDecimal для увеличения и уменьшения.
- Внедрение конфигурации снежинки ID (поддержка ручного распределения workerId и datacenterId или автоматическое получение информации о сетевой карте).
- Извлечение общих параметров в слой сервиса.
- Модификация генерации случайных ключей AES.
- UpdateWrapper добавляет метод checkSqlInjection.
- Автоматическая настройка DDL (если нет реализации или нет модуля mybatis-plus-extension, не внедряется в bean выполнения DDL).
- Метод deleteBatchIds переименован в deleteByIds.
- Spring Boot обновлён до версий 2.7.18 и 3.2.6.
- Kotlin обновлён до версии 1.9.24.
- Lombok обновлён до версии 1.18.32.
[v3.5.6] 2024.04.08
- Исправлено неправильное проксирование общего сервиса, вызывающее ошибки.
- Исправлена ошибка десериализации типа Json обработчиком типа.
- Исправлен обработчик типа для основных массивов, вызывающих сильные ошибки.
- Исправлено сохранение Page в PageDto.
- Исправлены проблемы с обработкой IllegalSQLInnerInterceptor.
- Исправлены проблемы с проверкой индекса и индекса поля IllegalSQLInnerInterceptor, когда имена таблиц или полей заключены в кавычки.
- Исправлена проблема с расширением params при вызове setSql в KtUpdateChainWrapper.
- Исправлена неработающая конфигурация useGeneratedShortKey.
- Исправлены ошибки DataChangeRecorderInnerInterceptor.
- Удалены escape-символы sqlFirst и sqlComment (при необходимости экранирования операции, пожалуйста, вызовите экранирование вручную перед передачей).
- СервисImpl стал абстрактным классом для предотвращения прямого создания экземпляров.
- Шаблон конфигурации генератора кода перемещён в конкретную реализацию.
- Поддерживаются комбинированные аннотации.
- LambdaUpdateWrapper добавлен для полей самоинкремента setIncrBy и self-decrement setDecrBy.
- При получении метода внедрения передаётся org.apache.ibatis.session.Configuration.
- Самоинкрементный первичный ключ поддерживает конфигурацию (mybatis-plus.global-config.db-config.insert-ignore-auto-increment-column по умолчанию false, разрешает INSERT игнорировать генерацию первичного ключа).
- Добавлен способ пропуска параметра заполнителя (на основе MappedStatement#id).
- Добавлена поддержка SQLite для автоматического обслуживания DDL.
- Добавлено eqSql.
- Добавлен SQL-анализ пула потоков.
- Добавлена инициализация журнала печати генератора снежинок (более 5 секунд печатается предупреждение журнала).
- Обновлён mybatis до версии 3.5.16.
- Обновлены spring-cloud-commons.
- Обновлено jsqlparser до версии 4.9.
- Github добавил CI.
- Документация дополнена комментариями к связанным API, которые нельзя заполнить автоматически.
[v3.5.5] 2023.12.24
- Исправлено, что databaseId не работает.
- Исправлено, что автоинкрементные первичные ключи игнорируются и неправильно внедряются.
- Исправлено создание дополнительных символов в режиме ChainWrapper GroupBy.
- Исправлено кеширование selectOne.
- Исправлено нарушение разрешений данных для нескольких таблиц.
- Исправлено преобразование типа MySQL point.
- Исправлено использование родительских атрибутов в Kotlin.
- Автоматическое внедрение DdlApplicationRunner возвращает null, вызывая ошибку запуска high springboot.
- Исправлено RuntimeUtils, связанное с безопасностью.
- Добавлена поддержка fastjson2.
- Gradle-wrapper обновлён до версии 8.4.
- kotlin-gradle-plugin обновлён до версии 1.9.21.
- mybatis обновлён до версии 3.5.15.
- lombok обновлён до версии 1.18.30.
- spring-boot3 обновлён до версии 3.2.0.
- Версия mybatis-spring для spring-boot2 обновлена до 2.1.2.
- Версия mybatis-spring для spring-boot3 обновлена до 3.0.3.
- Удаление транзакции в общем сервисе saveOrUpdate.
- Поддержка Trino, Presto, GBase8s-pg, SUNDB. Исправления в LambdaQuery, groupBy, orderBy, orderByAsc и orderByDesc: предупреждение устранено. Добавлена поддержка перезаписи методов doXxx для обеспечения возможности переопределения (несовместимое изменение, API-метод сделан final).
- Исправление: устранена проблема с отсутствием конфигурации в inject-sql-session-on-mapper-scan.
- Исправление: исправлена ошибка при использовании @OrderBy вместе с @TableId для сортировки по полю (несовместимое изменение, com.baomidou.mybatisplus.core.metadata.TableInfo.orderByFields был изменён).
- Исправление: решена проблема ошибки несоответствия типов при логическом удалении записи в Service.
- Исправление: решён конфликт между плагином разбивки на страницы Count и пользовательским ResultHandler.
- Исправление: решена потенциальная проблема повторного входа при обработке заполнения полей.
Новые функции:
- Новая функция: добавлен контроль над тем, разрешать ли вставку самоинкрементного первичного ключа. Можно использовать методы Inject(ignoreAutoIncrementColumn) или Inject(name, ignoreAutoIncrementColumn), чтобы контролировать, поддерживает ли Insert поведение вставки самоинкрементных первичных ключей.
- Новая функция: добавлена поддержка автоматического заполнения при логическом удалении в режиме ActiveRecord.
- Новая функция: встроен универсальный извлечение, поддерживающий использование вне проектов Spring.
- Новая функция: в BaseMapper добавлен метод обновления (wrapper).
- Новая функция: добавлены потоковые методы запросов в BaseMapper для поддержки больших данных.
- Новая функция: метаданные генератора кода теперь доступны для tableName и columnName.
- Новая функция: mybatis-plus-spring-boot3-starter и mybatis-plus-spring-boot3-starter-test поддерживают SpringBoot3.
- Новая функция: поддерживается автоматическая инъекция плагина по умолчанию. Если MybatisPlusInterceptor не внедрён, будет автоматически внедрён com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor.
- Новая функция: обновлена версия исходного кода Jdk до Java21.
- Новая функция: gradle-wrapper обновлён до версии 8.4-rc-1.
- Новая функция: kotlin-gradle-plugin обновлён до версии 1.9.20-Beta.
- Новая функция: SpringBoot2.x обновлён до версии 2.7.15.
- Новая функция: lombok обновлён до версии 1.18.30.
Оптимизация:
- Оптимизация: зависимость mybatis-plus-extension от mybatis-spring изменена на необязательную (несовместимое изменение: если проект используется вне Spring или SpringBoot, необходимо вручную добавить зависимость).
- Оптимизация: уменьшено количество ненужных конфигураций в spring-boot-starter (несовместимое изменение: com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties.configuration был изменён).
- Оптимизация: удалены фиксированные параметры из обработчика заполнения полей, что позволяет более гибко извлекать параметры для заполнения из методов mapper.
- Оптимизация: удалён вызов метода setAccessible в ReflectionKit, чтобы предотвратить удаление в более поздних версиях Jdk.
- Оптимизация: оптимизирован метод selectOne для работы с потоковыми данными, извлекая максимум две строки данных и не выводя общее количество записей в журнале.
- Оптимизация: улучшена обработка возвращаемых значений selectObjs, уменьшая необходимость в принудительном преобразовании типов.
- Оптимизация: общая служба поддерживает множественные инъекции SqlSessionFactory.
- Оптимизация: метод TableInfo.newInstance оптимизирован.
- Оптимизация: удалено избыточное @SuppressWarnings("serial"). Текст запроса:
移除注解 OrderBy 的过时属性 isDesc
移除 TableInfo 过时方法
加入 JoinTableInfoInitHandler 类参与 TableInfo 初始化
修复 StringUtils.sqlInjectionReplaceBlank 方法过滤 SQL 不全,可能会导致 SQL 注入的情况
增加 IService.lambdaQuery(entity) 支持,写法更便捷
新增数据变更记录(数据审计)插件 DataChangeRecorderInnerInterceptor
新增查询条件方法 notLikeLeft 和 notLikeRight
数据权限多表解析部分处理优化
允许子类重写 orderBy 基础方法 gitee issues/I61F51
新增 Db 类,调整 SimpleQuery 类
新增脚本自动维护功能
新增支持手动拦截器忽略策略,例如 InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
支持 PG 数据字段大写 ID 自增 fixed issues/I4T0YJ
代码生成器重构完成,合并回 MP 核心代码库
代码生成器增加是否生成 service 接口的开关
Перевод на русский язык:
Удалите устаревшее свойство isDesc в аннотации OrderBy.
Удалите устаревший метод в TableInfo.
Добавьте класс JoinTableInfoInitHandler, который будет участвовать в инициализации TableInfo.
Исправьте метод StringUtils.sqlInjectionReplaceBlank, чтобы он полностью фильтровал SQL и не допускал SQL-инъекций.
Расширьте поддержку IService.lambdaQuery (entity), чтобы сделать код более удобным.
Внедрите плагин DataChangeRecorderInnerInterceptor для регистрации изменений данных (аудита данных).
Добавьте методы notLikeLeft и notLikeRight для условий поиска.
Оптимизируйте обработку разрешений на доступ к данным для нескольких таблиц.
Разрешите подклассам переопределять базовый метод orderBy (gitee issues / I61F51).
Создайте класс Db и настройте класс SimpleQuery.
Автоматизируйте обслуживание скриптов.
Предоставьте возможность игнорировать перехватчики вручную, например, с помощью InterceptorIgnoreHelper.handle (IgnoreStrategy.builder (). TenantLine (true) .build ()).
Поддерживайте автоинкремент идентификаторов полей данных с заглавными буквами в PG (fixed issues / I4T0YJ).
Завершите рефакторинг генератора кода и объедините его с основным кодом MP.
В генераторе кода добавьте переключатель для включения или выключения генерации интерфейса сервиса. Часть 1
- BaseMapper часть интерфейса, которая принимает Wrapper в методе select, поддерживает wrapper.first для установки RDS hint.
- KtUpdateWrapper#set поддерживает значение null.
- Поддерживаются универсальные первичные ключи.
- Оптимизирована конфигурация реализации класса и типов данных для перехватчиков разбиения на страницы.
- Используется вторичный кэш для повторного использования count-запросов.
- Часть IService метода была скорректирована до метода по умолчанию.
- Вторичный кэш совместим с сериализацией JSON (основная проблема — это когда возникает ошибка при десериализации long в int).
- Решены проблемы с пакетными операциями и вложенными транзакциями (проблемы обновления вторичного кэша).
- Исправлена проблема, из-за которой не заполнялся updateById при включенной оптимистичной блокировке.
- Исправлено несколько проблем с методами setFieldValByName и getFieldValByName по умолчанию, которые вызывали исключения.
- Исправлены проблемы с вложенной функцией в KtWrapper.
- Исправлен постоянный сбой генерации класса Kotlin Freemarker.
- Исправлена ошибка в SerializationUtils, связанная с утечкой ресурсов.
Часть 2
- Два метода page интерфейса BaseMapper и соответствующие методы IService и ServiceImpl были оптимизированы.
- Добавлена поддержка двух представлений логического удаления: «удалено» и «не удалено».
- Исправлена проблема, из-за которой пакетные операции не очищали кэш.
- Пакетные операции теперь преобразуются в DataAccessException.
- Обновлены mybatis до версии 3.5.3, mybatis-spring до версии 2.0.3 и jsqlparser до версии 3.1.
- Изменены пакеты mapper и chainWrapper.
- Создан новый класс инструментов ChainWrappers.
- Реализован новый интерфейс IdentifierGenerator для поддержки пользовательских идентификаторов.
- Регулярное сопоставление имён таблиц в инструментах генерации кода было заменено на likeTable и notLikeTable.
- Плагин разбивки на страницы теперь поддерживает настраиваемую обработку ограничений страниц и обработку переполнения общего количества страниц.
- Исправлена ошибка, вызванная SqlExplainInterceptor, приводящая к двойному увеличению последовательности Oracle.
- Поддержка вторичного кэша для разбиения на страницы.
- Расширен вывод журнала p6spy.
- DbConfig добавлен атрибут propertyFormat, а атрибут TableFieldInfo удалён.
- Генератор последовательностей был оптимизирован, устаревший атрибут clazz в KeySequence.
- Ошибка, вызванная ключевым словом Ognl, устранена.
- Устранена проблема с отключением переключателя обновления.
- Логика заполнения была оптимизирована.
- ISqlRunner теперь поддерживает selectPage.
- Глобальное логическое удаление полей поддерживается.
- Методы BaseMapper можно настраивать.
- Добавлены базы данных «虚谷», «Oracle12c» и «Kingbase».
- Проблема, когда имена полей базы данных и имена полей сущности различаются и приводят к появлению null как xxx, решена.
- Устаревший ID_WORKER_STR теперь автоматически определяет тип первичного ключа.
- При включении аннотаций принудительно генерируется TableName.
Часть 3
-
Код генератора теперь поддерживает базу данных Dameng.
-
Исправлена ошибка с несколькими первичными ключами в запросах таблиц.
-
Новый метод updateWrapper пытается обновить и, если не удаётся, продолжает выполнение saveOrUpdate(T).
-
Тип numeric instant в pg теперь поддерживается.
-
Исправлена проблема с отсутствием InjectionConfig, что приводило к невозможности генерации кода.
-
Исправлена ошибка, из-за которой поле логического удаления Date приводило к нулевому значению даты, отличной от даты удаления.
-
Версия mybatis обновлена до 3.5.2, а версия jsqlparser — до 2.1.
-
EasyScheduler планирует отправку запросов Apache, удаляя ограничения протокола 996NPL.
-
SQL был изменён, чтобы удалить SET.
-
Перечисление SqlMethod UPDATE_ALL_COLUMN_BY_ID было удалено, вместо него рекомендуется использовать AlwaysUpdateSomeColumnById.
-
Исправлена ошибка #1412 (github), из-за которой mybatis-plus-generator не поддерживал Oracle.
-
Удалены глобальные конфигурации dbType и columnLike.
-
FieldStrategy был удалён, и вместо него используются три новых альтернативы.
-
PerformanceInterceptor был удалён, рекомендуется использовать p6spy.
-
El был разделён на конкретные атрибуты jdbcType и typeHandler.
-
Gradle-5.5.1 и lombok-1.18.4 обновлены.
-
Когда selectStatement.getSelectBody() имеет тип SetOperationList.
-
Атрибут sqlParserCache в GlobalConfig был удалён вместе с LogicSqlInjector.
-
OrderItem был добавлен в качестве нового атрибута в addOrder метода страницы.
-
Nested интерфейс имеет метод с параметром Function<Param, Param>, который был изменён на Consumer.
-
Gitee/I10XWC теперь позволяет определять пользовательские типы на основе информации TableField.
-
Merge pull request #1445 от kana112233/3.0.
-
Теперь поддерживается фильтрация родительских свойств.
-
Тестирование исключений пакетных операций было расширено.
-
Многопользовательский идентификатор теперь может выражать несколько условий запроса ID.
-
Были добавлены два обработчика json: jackson и fastjson. ГлобалКонфиг: sqlParserCache устарел.
-
Изменения в mybatis: обновление до версии 3.5.1, mybatis-spring — до 2.0.1, jsqlparser — понижение до версии 1.2.
-
Интерфейс ISqlInjector: метод injectSqlRunner удалён.
-
Класс SqlFormatter: устарел.
-
Решена проблема путаницы в логике удаления для метода SqlCommandType автоматического внедрения.
-
Добавлен AlwaysUpdateSomeColumnById.
-
SFunction наследуется от Function.
-
Атрибуты columnLike и dbType в DbConfig устарели.
-
В DbConfig добавлены атрибуты schema и columnFormat.
-
Аннотации TableField: добавлен атрибут keepGlobalFormat.
-
Аннотации TableName: добавлены атрибуты schema и keepGlobalPrefix.
-
Исправлена ошибка с форматом временных файлов (tmp): github #1048.
-
Обработка абстрактных имён таблиц/полей: INameConvert, стратегия на github #1038.
-
Поддержка динамической конфигурации схемы DB2: github #1035.
-
Поле key в кеше заменено с className на .class. При использовании dev-tools возникает исключение MybatisPlusException: Your property named «xxxx» cannot find the corresponding database column name! Решение: удалить dev-tools.
Версия [v3.1.0] от 24.02.2019
- Обновление mybatis до версии 3.5.0, mybatis-spring до версии 2.0.0, jsqlparser до версии 1.4.
- Добавление поддержки журналов p6spy.
- Изменение метода getOne(Wrapper queryWrapper) в IService: если получено несколько строк, будет выброшено исключение TooManyResultsException.
- Исправление проблемы с пользовательской разбивкой на страницы, которая не поддерживает аннотацию @select.
- Исправление ошибки в генераторе: режим swagger в kotlin не работает.
- Исправлено: поля с префиксом is автоматически не аннотируются.
- Исправлено: Active mode с Serializable не наследует пакет класса.
- Исправлено: поддержка общих полей для автоматического чтения родительских свойств класса.
- Исправлено: преобразователь перечислений (аннотация) не работает при сохранении в процедуре.
- Исправлено: ошибка логики удаления в шаблоне beetl.
- Исправлено: значение по умолчанию mapUnderscoreToCamelCase в Configuration, созданной через mybatis-config.xml, не равно true.
- Исправлено: динамический прокси вызывает ошибку в анализаторе SQL.
- Исправлено: механизм повторной попытки в mapper может вызвать ошибку при определённых условиях.
- Оптимизация: добавлена поддержка указания defaultEnumTypeHandler для общей обработки перечислений.
- Оптимизация: копирование последних изменений из hibernate в SqlFormatter.
- Удалён метод in в wrapper и проверка на пустоту для coll и динамических массивов.
- Удалены методы notInOrThrow и inOrThrow в wrapper.
- Удаление delete в цепочке вызовов IService.
- XML-конфигурация для горячей загрузки удалена, оставлен только класс MybatisMapperRefresh с пометкой об устаревании.
- Ежедневные оптимизации.
Версия [v3.0.7.1] от 02.01.2019
- Исправлено: LambdaWrapper не может получить кеш первичного ключа.
- Оптимизирован update в IService для поддержки операции remove.
- Пометка delete в цепочке вызовов query в IService как устаревшая.
- Ежедневная оптимизация.
Версия [v3.0.7] от 01.01.2019
- Генератор оптимизирован для поддержки генерации java8 time types для postgresSql и sqlServer.
- LambdaWrapper оптимизирован для отражения информации о полях с заглавными буквами.
- Select в LambdaWrapper оптимизирован: автоматическое as для полей, которые не соответствуют базе данных.
- Кэш TableInfo в Configuration оптимизирован: при повторном сканировании BaseMapper сохраняется только последний элемент.
- MergeSegments оптимизирован: улучшен способ получения getSqlSegment.
- SQL-инжектор оптимизирован: инициализация modelClass выполняется быстрее.
- Первый параметр update в BaseMapper теперь может быть null.
- Добавлено 4 метода цепочки вызовов в IService.
- Добавлены шаблоны beetl в генератор кода.
- IdWorker оптимизирован: добавлен миллисекундный идентификатор времени для использования в качестве идентификатора заказа.
- Wrapper оптимизирован: добавлен метод inOrThrow, который генерирует исключение MybatisPlusExcuption, если параметр пуст.
- MetaObjectHandler оптимизирован: добавлено несколько методов default, которые вставляют значения на основе аннотаций.
- Kotlin оптимизирован: добавлена поддержка lambda. Классы KtQueryWrapper и KtUpdateWrapper.
- Новый способ использования пользовательского SQL: теперь можно использовать «пользовательский sql» + ${ew.customSqlSegment}.
- InsertBatchSomeColumn оптимизирован.
- Исправлено: setTotal(Long total) -> setTotal(long total).
- Исправлено: setSearchCount является общедоступным.
- Исправлено: если where начинается с orExpression, прямое использование and для объединения информации о арендаторе может привести к логическим ошибкам.
- Исправлено: лямбда-метод wrapper передаёт sqlSelect вниз.
- Исправлено: flushStatements в отдельных операциях batch в ServiceImpl.
- Исправлено: проблема с обобщёнными типами в selectObjs.
- Удалён InsertBatchAllColumn.
- Из ServiceImpl удалены все транзакции, кроме batch.
- Модель удалена из Model.
- AbstractSqlInjector удалён: isInjectSqlRunner (SqlRunner инициализируется раньше, и в настоящее время isInjectSqlRunner нельзя контролировать).
- MybatisSessionFactoryBuilder удалён.
- Зависимость от mybatis-plus-generator удалена: используется по мере необходимости.
- xml горячая загрузка восстановлена, но помечена как устаревшая.
- jsqlparser обновлён до версии 1.3.
- Ежедневная оптимизация.
Версия [v3.0.6] от 18.11.2018
- Исправлено: entity с двумя или более условиями и конкатенацией ORDER BY или GROUP BY приводит к WHERE X1 =? AND X2.
- Refactor (SerializedLambda.java): метод рефакторинга для повышения безопасности десериализации и оптимизации именования.
- Базовый Mapper оптимизирован: поддержка создания собственных методов внедрения для родительских классов Mapper.
- Использование вместо .
- Частичная оптимизация: строки форматируются только после выдачи исключения.
- Улучшение производительности IdWorker: генерация UUID с использованием параллелизма.
- feat: динамическая нумерация страниц, модель, оптимизация синтаксиса разбивки на страницы, исправление ошибок db2.
- Assert поддерживает i18n для многоязычных сообщений об ошибках.
- Контроль над тем, подсчитывается ли total SQL, добавлен метод isSearchCount.
- Перемещение зависимости spring из основного модуля в расширение.
- fix: Junit.assertTrue.
- Принудительное использование настраиваемого ParameterHandler, удаление ограничений типа byId.
- Добавлена общая функциональность для InsertBatch, включая соответствующие тесты, а также оптимизацию кода и производительности.
- IPage оптимизирован: добавлены функции, преобразование типов.
- Автоматическое заполнение: определение того, следует ли заполнять значение, и пропуск заполнения, если оно пустое.
- Пороговое значение batchsize установлено на 1000 для повышения эффективности.
- Исправлено: saveOrUpdate выполняет ошибку в экстремальных ситуациях.
- MybatisSqlSessionTemplate удалён.
- Горячая загрузка xml удалена.
- Другие оптимизации. excludeColumns метод
- Исправление проблемы с условием в аргументе last метода.
- Исправление ошибки BUG при удалении 1=1.
- Удаление поддержки spring-devtools.
- Исправление проблемы, когда все свойства сущности равны null и происходит ошибка при конкатенации SQL.
- Кэширование информации о рефлексии классов для повышения производительности.
- Наследование от Model класса: теперь не нужно переопределять метод pkVal().
- Решение проблемы с MPE при настройке config-location, а также оптимизация логики инициализации.
- Исправление ситуации, когда mapper.xml приводит к некорректному удалению логики.
- Настройка транзакций в ServiceImpl: решение проблемы Gitee issue/IN8T8.
- Исправление проблемы с разбиением на страницы при работе с DB2: решение GitHub issues/526.
[v3.0.4] 2018.09.28
- Коррекция глобального конфигурационного параметра FieldStrategy для значений, отличных от значения по умолчанию.
- Устранение проблем с пакетными транзакциями.
- Проблемы с обработкой логики в R классе API: автоматическое исправление.
- Модификация скрипта H2 для инициализации и удаления тестовых случаев.
- Добавление комментариев.
[v3.0.3] 2018.09.17
- Новый метод фильтрации полей запросов.
- Исправлена ошибка с порядком сортировки при использовании нескольких аргументов.
- Добавлен компонент LogicDeleteByIdWithFill.
- Решены проблемы GitHub issues/476 и GitHub issues/360, Gitee issues/IMIHN и IM6GM.
- Улучшен параметр allEq: использование дженериков для значения.
- Исправлены проблемы с использованием BatchExecutor при сохранении и обновлении данных.
- Исправлен метод getOne для получения нескольких записей вместо исключения.
- Исправлены отдельные методы сервиса для использования по умолчанию.
- Исправлена проблема с постраничной навигацией при установленном параметре desc: некорректное поведение SQL.
- Удалены ненужные методы.
- Разрешена проблема с генератором и опциональными jar-файлами.
- Перегрузка метода select(Predicate predicate).
- Другие оптимизации.
[v3.0.2] 2018.09.11
- Добавлен класс-помощник Wrapper для условий.
- Добавлена возможность управления печатью баннера через атрибут.
- Исправлена проблема Gitee #IMMF4: некорректная работа пакетных вставок (AR) в транзакции.
- Исправлена ошибка, когда у сущности нет первичного ключа, и генерируется некорректное условие where.
- Обработка SQLRunner для получения и освобождения сеансов SQL.
- Исключено глобальное кэширование сеансов SQL, добавлены сеансы SQL для Model и общего слоя сервисов.
- Абстрактные исходные перечисления обрабатываются через регистрацию: упрощение расширения.
- Оптимизация расширяемости и другие улучшения.
[v3.0.1] 2018.08.31
- Исправлена ошибка генерации кода при установке префикса таблицы.
- Добавлена аннотация EnumValue для сканирования и обработки общих перечислений.
- Исправлено некорректное использование логической операции удаления.
- Улучшения в обработке диалекта DB2.
- Новые тестовые случаи и другие изменения.
[v3.0-RELEASE] 2018.08.28 🍭
- Обновлён оптимизированный метод обновления (et,ew), где et содержит аннотацию version для перезаписи поля версии.
- Оптимизирован и улучшен генератор кода.
- Пакетный поиск больше не вызывает исключений при пустом наборе (для перечислений и псевдонимов).
- Исключение сеансов SQL.
- Изменение шаблона issue и улучшение комментариев.
- Оптимизация процесса инициализации, добавление проверки количества аннотаций для логического удаления.
- Возможность пропуска проверок SQL.
- Поддержка базы данных Dameng.
- Ограничение числовых значений в коде для обеспечения строгой типизации: ограничение API и начальных значений.
- Перенос анализа SQL в SqlInjector.
- Прочие оптимизации кода.
[v3.0-RC3] 2018.08.19 🍭 RC3
- Поддержка выбора свойств для исключения по умолчанию при выборе TableField.
- Разрешение проблемы с обратной последовательностью страниц.
- Объединение обработки прокси-сервера dataSource 2.x.
- Исключение атрибута DbConfig.columnUnderline.
- Отсеивание пустых результатов запроса selectObjs.
- Возврат значений insert и update в baseMapper без использования обёрток.
- Фиксирование Gitee issues/IM3NW.
- Оптимизация кода и улучшение комментариев.
[v3.0-RC2] 2018.08.10 🍭 RC2
- Генератор с добавлением MODULE_NAME для конфигурации.
- Исправлено некорректное применение настройки defaultEnumTypeHandler.
- Совместимость со Spring boot 1.x для запуска.
- Ежедневные оптимизации, тестовые примеры и оптимизация исключений.
- Шаблоны Gitee Github issue и pull_request.
- Отмена экранирования ключевых слов базы данных: только поддержка режима аннотации.
- Оптимизация исключений: использование assert или exceptionUtils.
- Установка нижнего подчёркивания для преобразования в CamelCase в конфигурации ColumnUnderline.
- Проблема с последовательной сериализацией страниц asc и desc.
- По умолчанию dbType установлен как other: если пользователь не настроил, будет автоматически получен dbType.
- Оптимизация ColumnUnderline и MapUnderscoreToCamelCase.
- Фиксация ILY8C: генератор с указанием IdType в сценарии импорта пакета.
- Дополнительные комментарии и множество новых тестовых примеров.
[v3.0-RC1] 2018.08.01 🍭 RC1
- Оптимизация инструментов и исправление потенциальной тупиковой ситуации в многопоточной среде.
- Введение утверждений для замены исключений в некоторых случаях.
- Отказ от избыточного «implements Serializable».
- Все магические значения преобразованы в глобальные константы.
- MP 3.0 больше не нуждается в PageHelper.
- Issue #384: поддержка QueryWrapper для исключения определённых полей.
- Новый баннер и общее ощущение обновления.
- Дальнейшая оптимизация процесса исключений.
- Изменён способ создания экземпляров объектов класса: возможность создания приватных классов.
- Без конфигурации можно использовать Gitee issues/ILJQA.
- Освобождение сеансов SQL и оптимизация тестирования ActiveRecord.
- Только вызов last приводит к проблеме с SQL.
- Ошибка при лямбда-выражении, когда первое свойство является базовым свойством.
- Увеличение ограничений дженериков и форматирование кода.
- Оптимизация AbstractWrapper с ISqlSegment.
- Прочее.
[v3.0-RC] 2018.07.23 🍭 RC
- Размер страницы меньше 0 автоматически настраивается на режим списка.
- Введён анализатор атак SQL.
- Оптимизация основных методов и тестирование параметров querywrapper lambda.
- Сервисный слой методов переименован в соответствии с правилами Али (извинения перед маленькими белыми мышами).
- Генератору разрешено регулярное выражение для сопоставления имён таблиц.
- Версия обновляется после оптимистичной блокировки.
- GitHub #385: динамические имена таблиц могут использовать Wrapper.
- Исправление Gitee issues/ILEYD.
- Page перемещён в интерфейс IPage.
- Гамма не может автоматически присваивать ID.
- Постоянная ссылка на оптимизацию кода. starter
Изменён на Spring boot 2+.
- Рефакторинг генератора для предоставления пользовательских шаблонов DB и поддержки различных движков шаблонов.
- Исправление ошибок (BUG).
[v2.1.9]
Дата: 28 января 2018 года. Кодовое название: «Ностальгия» (посвящается 2017 году, организации Baomidou и совместному росту её молодых участников, а также стремлению к процветанию в 2018 году).
- Добавлена новая функция постраничного просмотра с возможностью настройки оптимизации Count SQL.
// Не проводить оптимизацию Count SQL
page.setOptimizeCountSql(false);
- Реализована поддержка внедрения SQL-инъекций и генераторов первичных ключей.
- Исправлены проблемы с GitHub issues/231, GitHub issues/234.
- Устранена логическая ошибка при выборе по идентификаторам (selectByIds coll).
- Исправлена проблема с Gitee issues/IHF7N.
- Исправлена проблема с Gitee issues/IHH83.
- Обеспечена совместимость конфигурации и приоритет использования пользовательского внедрения.
- Другие улучшения.
[v2.1.9-SNAPSHOT]
Дата: 16 января 2018 года.
- Изменён режим зависимостей Gradle.
- Введён новый тип IdType — ID_WORKER_STR (строковый тип), который можно использовать с методом IdWorker.getIdStr() для получения строкового типа.
- Добавлен новый атрибут update в аннотацию TableField для предварительной обработки и установки значений полей.
Например: @TableField(.. , update="%s+1") где %s будет заменено на значение поля.
Вывод SQL: update таблицы set поле = поле + 1 where ...
Например: @TableField(.. , update="now()") используется системное время базы данных.
Вывод SQL: обновление таблицы set поле = now() where ...
- Добавлен атрибут condition в аннотацию TableField для предварительной обработки WHERE условий сущностей с использованием заданных правил.
@TableField(condition = SqlCondition.LIKE)
private String name;
Вывод SQL: select таблицы where name LIKE CONCAT('%',значение,'%')
- Встроенный модуль starter теперь содержит jdbc MP пакет, что упрощает использование boot.
- Поддержка генерации кода для представлений SQL Server.
- Возможность независимой настройки стратегий именования, по умолчанию используется стратегия naming.
strategy.setNaming(NamingStrategy.underline_to_camel);// таблица именования генерируется по стратегии
strategy.setColumnNaming(NamingStrategy.underline_to_camel);// позволяет независимо устанавливать стратегию именования полей, по умолчанию используя стратегию именования
- Абстрактный класс AbstractTemplateEngine шаблона движка абстракции в генераторе кода, позволяющий создавать собственные шаблоны движков, и дополнительный встроенный движок Freemarker.
// Выбор движка Freemarker
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
- Предоставлена возможность исключения анализа SQL через аннотацию
@SqlParser(filter=true)
для многопользовательских сценариев.
# Включить кэш анализатора SQL
mybatis-plus:
global-config:
sql-parser-cache: true
- Улучшена обработка XML-файлов, позволяя произвольно импортировать другие фрагменты XML SQL.
- Исправлен баг с author, содержащим 123.
- Исправлена ошибка #IGQGE:Wrapper пуст, но page.getCondition() не пуст. Проблема с передачей условия.
- Исправлена ошибка #IH6ED:Pagination dubbo. Проблемы с поддержкой сортировки и других атрибутов.
- Проверка на пустоту Wrapper с использованием == для предотвращения влияния переопределения метода equals().
- Предотвращение внедрения пользовательских базовых классов.
- Отделение SQL от отдельного представления в классе SqlUtils.
- Унификация отступов и стилей кодирования.
- Оптимизация производительности выполнения кода и анализа SQL.
- Исправлена ошибка gitee issue/IHCQB.
- Модификация compileOnly до optional в springboot-configuration-processor.
- Прочие улучшения.
[v2.1.8]
Дата: 02 января 2018 года. Кодовое имя: «Скорбь» (траур).
- Устранение ошибки в генераторе кода из-за префиксов полей.
- Использование полных имён классов вместо ручного ввода.
- Изменения в сборке.
- Игнорирование предупреждений о каталогах.
- Прочие оптимизации.
[v2.1.8-SNAPSHOT]
Дата: 28 декабря 2017 года. Кодовое имя: «Перевёрнутая рыба» (подарок от Цю Цю).
- Автоматическое преобразование Map в нижний регистр верблюжьего регистра.
- Поддержка статических констант в Kotlin сущности.
- Улучшение логики построения постраничного просмотра.
- Слияние pull request #201.
- Fix: выбор по карте @alexqdjay.
- Добавление тестов для SQLRunner, исправление ошибки, когда selectObjs извлекал только одно поле.
- Новый BlobTypeHandler.
- Удаление начальной конфигурации размера параметра map.
- Введение .editorconfig, решение проблем с пробелами в шаблонах.
- Hikaricp не может распечатать SQL в пуле соединений.
- Глобально удалены пути, mapperLocations больше не требуется.
- K-бог полностью покрывает тестовые случаи.
[v2.1.7]
Дата: 11 декабря 2017 года. Кодовое имя: «Чистый ветер приходит издалека».
- Обработка перечислений: базовые типы, числовые типы, строковые типы.
- IGDRW: Ошибки в комментариях исходного кода, которые могут ввести в заблуждение.
- Пушечное ядро PR!42: Добавление перегруженных методов построения для постраничного просмотра.
- Генерация кода: решения для проблем с превышением максимального курсора в Oracle.
- Фиксированная ошибка gitee IGNL9.
- Волна K-бога: большое количество тестовых случаев.
- Применение transient для удаления некоторых полей из Page во время сериализации.
- Исключение бесполезных журналов.
- Фикс #IGI3H:selectBatchIds параметр изменён на Collection.
- Логическая ошибка исправления SQL-инжектора.
- Поддержка нескольких сортировочных полей.
- Фиксация ошибки GitHub #185:2.0.2 версии с автоинкрементом первичного ключа и проблемой вставки пакета PR.
- Прочие улучшения.
[v2.1.6]
Дата: 22 ноября 2017 года. Кодовое имя: «Маленький осенний поцелуй».
- Модуль разделён на support, core и generate, обеспечивая выбор зависимостей для генерации кода.
- Решение проблемы gitee issue IFX30 с разделением пакета mybatis-plus-support.
- Решение проблемы gitee issue IGAPX с универсальным перечислением bigdecimal типов отображения.
- Дополнение Druid, заполнение изменений полей.
- Исправления ошибок в генерации кода Kotlin.
- Объединение gitee pr 40, обновление всех столбцов и т. д., исключая fill = FieldFill.INSERT комментарии полей, спасибо Elsif.
- Настройка конструкции Kotlin изменена.
- Оптимизированы инструменты SQL рефлексии.
- Прочие улучшения.
[v2.1.5]
Дата: 11 ноября 2017 года. Кодовое имя: «Отступник».
- Универсальная обработка перечислений, совместимая со Spring Boot.
- Проблемы с преобразованием ключевых слов PostgreSQL в неключевые слова.
- Cat73 PR, небольшая настройка автоматически сгенерированного кода.
- Поддержка генерации Kotlin кода.
- Ошибка исправления metaObj обработчика set val, который не включён в ...
- Стандарты Alibaba изменены.
- Прочее.
[v2.1.3 - 2.1.4]
Дата: 15 октября 2017 года.
- Универсальный обработчик перечислений добавлен, вдохновлённый демонстрацией Spring Boot.
- Анализ SQL оптимизирован.
- Схема анализа арендаторов добавлена, требует доработки.
- Прочие улучшения.
[v2.1.2]
Дата: 17 сентября 2017 года. Кодовое имя: X.
- Исправление ошибки генератора кода.
- Fixed gitee issues/IF2DY.
- Изменение цепочки операций страницы.
- Исключено экранирование Oracle.
- Fixed GitHub issues/119.
- Fixed gitee issues/IF2OI.
[v2.1.1]
Дата: 12 сентября 2017 года. Кодовое имя: Маленькая крышка горшка.
- Исправлена ошибка, когда общее количество записей превышало первую страницу.
- Fixed IEID6.
- Обновление MyBatis до версии 3.4.5.
- Обновлён генератор шаблонов Veloctiy до версии 2.0.
- Обновлено до jsqlparser версии 1.1.
- Новая логика анализа SQL с возможностью динамического расширения.
- Демонстрация Spring Boot с демонстрацией мультитенантного анализа SQL.
- jasonlong10 PR: поддержка анализа производительности для OraclePreparedStatementWrapper.
- Fixed github issues/145.
- Fixed gitee issue/IF1OF.
- Добавить тестовый случай sqlSelect("distinct test_type").
- Добавлены пропущенные классы внедрения генератора шаблонов.
- Fixed github issues/MYSQL: код генерации таблиц с именами, содержащими зарезервированные слова, приводит к ошибкам.
- Fixed github issues/134. Код генерации поддерживает указанную схему таблицы полей в соответствии с порядком по умолчанию.
Другие оптимизации и настройки.
[v2.1.0] 2017.08.01, кодовое название: «Маленький осенний сезон».
Основные функции:
- исправлены проблемы с пакетными операциями SQLSession;
- решены проблемы с форматированием SQL;
- добавлен UUID для тестирования основных ключей;
- устранены ошибки BUG автоматического заполнения;
- обновлён pom-файл зависимостей, область действия spring-test — test;
- изменена версия драйвера sqlServer, удалены ненужные тесты строкового типа для оптимистической блокировки;
- решена проблема с нижним уровнем отображения плюса;
- исправлена ошибка SqlHelper при обработке пустого Wrapper, но не пустой page.getCondition();
- объединён запрос на вытягивание!33: создание сущности, упорядочивание полей от старого тысячи/мастера;
- решено использовать прокси-объект, который приводит к невозможности получения информации о кэше экземпляра;
- решено логическое значение is в начале генерации SQL-ошибки;
- установлена неправильная настройка DBType;
- исправлен код генерации @TableLogic;
- добавлены новые PostgreSqlInjector, автоматическая инъекция, обработка чувствительности к регистру полей, автоматическое экранирование двойных кавычек;
- используется настраиваемый ввод адреса хранилища и информации о пользователе;
- добавлена сортировка Sequence, новый метод freeTotal() для режима pageHelper;
- добавлено два предложения по улучшению плагина разбивки на страницы;
- добавлен метод setSqlSelect(String... columns) для удобства использования автоматически сгенерированных сущностей;
- исправлено 116 проблем GitHub;
- исправлены ошибки Osgit IE436, IDVPZ, IDTZH.
Генерация кода:
- обновлены шаблоны создания сущностей;
- исправлены ошибки автоматической генерации кода заполнения;
- добавлен генератор поддержки schema для postgresql;
- отрегулированы проблемы сериализации импорта;
- другие изменения.
[v2.1-gamma] 2017.06.29.
Основные функции:
- исправлены предыдущие ошибки автоматического определения типов SQLserver;
- решён вопрос с пользовательской разбивкой на страницы, когда невозможно настроить диалект базы данных.
Создание кода:
- улучшена автоматическая генерация кода заполнения;
- исправлены повторяющиеся поля в генерации postgresql.
Проблемы, вызванные обновлением предыдущей версии (2.0.9):
- исправлена проблема, из-за которой невозможно было прочитать основной ключ, если он не был первым;
- исправлена исключительная ситуация Insert not found et при выполнении пользовательских операций вставки;
- исправлены ошибки генерации SQL (обычные инъекции Group, Having, Order);
- исправлена логическая ошибка генерации SQL.
Mybatis-Plus-Boot-Start [1.0.4].
Изменения:
- удалена прямая зависимость Mybatis-plus;
- удалена прямая зависимость SpringBoot jdbc-starter.
[v2.0.9] 2017.06.26, кодовое имя: K Бог.
Mybaits-Plus.
Основные функции:
- исправлены конфликты оптимистичной блокировки и логического удаления;
- обработан случай, когда ранее не учитывалось существование и открытие нижнего подчёркивания конфигурации при генерации инъекций SQL;
- исправлена проблема наследования EntityWrapper;
- добавлен условный тест Wrapper;
- поддержка записи журнала для анализа производительности;
- переписан toString Wrapper для решения проблемы отображения null при отладке;
- обработка последовательности вне микросекундного параллелизма, где большинство конфликтов возникает из-за чётности;
- стратегия оптимизации изменена, а свойства аннотаций скрыты;
- оптимизирован способ внедрения SQL, удалён предыдущий способ внедрения XML;
- проблема с двумя Where в логическом удалении;
- добавлены другие реализации последовательностей баз данных и открыт интерфейс для расширения пользователями;
- оптимизация оптимистичной блокировки;
- оптимизирована эффективность выполнения Where AND OR в Wrapper;
- решена проблема невозможности заполнения основного ключа без добавления mybatis-config.xml;
- MybatisPlus поддерживает сборку Gradle;
- Wrapper добавляет методы and() и or();
- GlobalConfiguration оптимизирован, GlobalConfigUtils выделен для уменьшения сцепления;
- решены проблемы разбиения на страницы SQLserver2008 и SQLServer2005;
- автоматическое распознавание базы данных, уменьшение явной конфигурации пользователя;
- разбиение на страницы оптимизировано, уменьшено количество отображаемых пользователем свойств конфигурации;
- автоматически заполняется поле;
- новая PageHelper, управление разбиением на страницы через текущий поток (предыдущие пользователи не должны использовать его, этот метод подходит только для пользователей MybatisPageHelper);
- значительно увеличено количество тестовых случаев (спасибо поддержке K Бога);
- другие оптимизации кода;
- добавлен JSqlparser как зависимость, нет необходимости вручную добавлять jar-пакет;
Генерация кода:
- поддерживается логическое удаление;
- поддерживается оптимистичная блокировка;
- решается проблема, заключающаяся в том, что генератор не может распознать основной ключ SQLServer.
- поддерживается Lombok;
- поддерживается режим сборки;
- добавляются типы Clob и Blob;
- ошибка преобразования Oracle Number исправлена;
Mybatis-Plus-Boot-Start [1.0.2], кодовое имя: Qingfeng.
Основные функции:
- обрабатывается случай, когда AR-режим devtool заменяет источник данных;
- добавляется поддержка логического удаления;
- добавляется последовательность.
[v2.0.8] 2017.05.15.
- Добавлен параметр настройки объекта sqlSelect в Wrapper.
- Совместимость с отсутствием аннотаций.
- Оптимизирована оптимистичная блокировка, регистрация оптимизатора удалена в фазе сканирования. Тестирование перенесено в среду h2.
- Улучшена горячая загрузка, путь mapper больше не настраивается.
- Уменьшено обновление конфигурации Mapper.
- Исправлена ошибка, когда значение tableFiled равно нулю, включена конфигурация нижнего подчёркивания.
- Последовательность обновлена.
- Открыта информация о таблице, зарезервирован подкласс для перезаписи.
- Изменён тест Idwork.
- Поддержка devtools.
- Исправлено 259, поддержка общего поля генерации xml resultMap.
- Исправлено pull 28, поддержка перегрузки атрибутов.
[v2.0.6 и v2.0.7] 2017.04.20.
- Добавлено логическое удаление.
- Добавлена последовательность Oracle.
- Завершена поддержка оптимистичной блокировки.
- Завершено заполнение поля, поддерживается обновление заполнения.
- Версия mybatis обновлена до 3.4.4.
- Код оптимизирован и поддерживается ограничением Wrapper и другими логическими операциями.
- Исправлены ошибки id стратегии auto и другие ошибки генератора.
[v2.0.5] 2017.03.25.
- Исправлена ошибка, связанная с тем, что соединение пула страниц не было закрыто.
- Решены проблемы 217.
- IMetaObjectHandler не работает должным образом, когда тип первичного ключа — AUTO или INPUT.
- Ошибка с заполнителем like исправлена.
- Генерируется код, и если каталог не существует, он создаётся.
[v2.0.3 и v2.0.4] 2017.03.22.
- Структура Wrapper оптимизирована.
- Первоначальная оптимизация соединения с базой данных.
- Проблема с инициализацией Page решена (ранее она могла быть активирована только через конструктор, теперь её можно активировать через setget).
- Поддерживается плагин оптимистичной блокировки.
- Нижний уровень Wrapper оптимизирован для обработки параметров, что лучше сочетается с PreparedStatement.
- Уровень журнала ошибок оптимизирован.
- Метод isWhere добавлен в Wrapper, теперь вы можете настроить, следует ли добавлять «WHERE».
- JDK версии понижена до совместимости, ранее связанный код использовал новые функции 1.7, текущая версия отменена.
- Ошибки генерации SQL для SQLserver исправлены и код оптимизирован.
- MybatisPlus и SQLSession оптимизированы.
- Ситуация, когда транзакция не принадлежит текущей транзакции, когда точка останова не настроена, и проблема с несколькими SQLSessions, вызывающими транзакцию, решена.
- Выполнение sql класса, sqlRunner усилено.
- Модель добавляет идентификатор сериализации, чтобы избежать изменения идентификатора последовательности при изменении модели позже.
- Тестовый пример базового Mapper расширен.
- Спасибо всем маленьким партнёрам за их хорошие предложения и вклад кода, я не буду называть их имена одно за другим.
[v2.0.2] 2017.02.13.
- Логическая ошибка глобального конфигурационного файла 2.0.1 исправлена.
- Тип конфигурации byId принудительно удалён.
- Оптимизация Wrapper Page и других программ.
- Автоматическое закрытие соединения с базой данных оптимизировано (ранее требовалась ручная настройка транзакции).
- Генератор кода оптимизирован, нижний регистр имени аннотации не обрабатывается, поддерживаются дополнительные шаблоны, такие как jsp html и т. д.
- Новый сервисный слой протестирован.
- Журнал SQL интегрирован в плагин анализа производительности.
- Многоуровневая конфигурация источника данных оптимизирована для поддержки нескольких баз данных. Решить проблему с импортом BigDecimal при генерации кода.
- Освободить автоматическое считывание соединения с базой данных при чтении.
- Оптимизировать глобальный механизм проверки (механизм EMPTY добавляет игнорирование типа Date).
- Оптимизировать внедрение, избегать сканирования BaseMapper.
- Оптимизировать внедрение, удалить лишние методы внедрения.
- SQLlikeType переименовать в SqlLike.
- Решить проблему с ошибкой горячей загрузки связанных запросов.
- SqlQuery переименовать в SqlRunner.
- Улучшить и дополнить генератор кода.
- Исправить ошибку генератора кода с неимпортированным @tableName.
- Глобальная конфигурация требует ручного добавления MP по умолчанию класса внедрения, изменить на автоматическую инъекцию для упрощения конфигурации.
- Wrapper добавить метод ne.
- Устранить проблему Mybatis с динамическими параметрами, которые не могут генерировать totalCount.
- Структурировать код, оптимизировать шаблоны генератора.
- Решить проблемы [138, 140, 142, 148, 151, 152, 153, 156, 157], подробности см. в разделе «Milestones» на странице проекта mybatis-plus 2.0.1.
v2.0.0 от 11 декабря 2016 года
- Поддержка глобального верхнего регистра именования.
- Автоматическая оптимизация разбивки на страницы Count.
- Оптимизация существующей глобальной конфигурации.
- Оптимизация глобального механизма проверки.
- Генератор кода оптимизирован (ранее был жёстко закодирован, теперь используется шаблонная форма).
- Оптимизация внедрения универсального метода ByMap.
- Добавить автоматический выбор типа базы данных.
- Улучшение SqlExplainInterceptor (самостоятельно определять, что версия MySQL ниже 5.6.3 не поддерживает этот перехватчик, и пропускать его).
- Устранение проблемы с многократным экранированием специальных символов.
- Оптимизация существующего EntityWrapper, добавление родительского класса Wrapper и условия цепочки запросов.
- Класс Wrapper позволяет методу LIKE работать с различными базами данных.
- Оптимизация использования журнала, использование встроенного журнала Mybatis для вывода информации.
- Решение проблемы, когда кэш приводит к невозможности подсчёта значения Count при использовании разбиения на страницы.
- Решение PerformanceInterceptor заменяет
?
, что приводит к неточным результатам печати SQL, а также добавление форматирования SQL.
- Добавление поддержки различных баз данных, см. DBType.
- Добавлена стратегия проверки для полей строкового типа (автоматическое определение того, является ли строка пустой или нет, а также проверка на пустую строку).
- Wrapper добавляет классы, подобные QBC (например, eq, gt, lt и т. д.).
- Поддерживает режим AR (необходимо наследовать Model).
- Объединить все Selective универсальные методы (например: удалить предыдущий insert и переименовать предыдущий insetSelective в insert).
- Решает проблему, когда sql-декодер удаляет
--
.
- Поддержка ключевых слов MySQL, автоматическое экранирование.
- Сокращение структуры Service и Mapper.
- Не нравится писать SQL в XML, новый способ выполнения SQL, подробности см. SqlQuery.
- Оптимизация структуры кода.
- Решены проблемы [95, 96, 98, 100, 103, 104, 108, 114, 119, 121, 123, 124, 125, 126, 127, 128, 131, 133, 134, 135], подробности см. в разделе Milestones на странице проекта Mybatis-Plus 2.0.
v1.4.9 от 28 октября 2016 г.
- Удалить аннотацию @Transactional из ServiceImpl и зависимость Slf4j.
- При использовании EntityWrapper для запроса, если параметр является специальным символом, существует проблема внедрения SQL.
- Отрегулировать порядок конфигурации Mybatis, MybatisPlus > Mybatis.
- Оптимизировать плагин разбиения на страницы и устранить проблему переполнения разбиения на страницы, которая не работает.
- Удалить DBKeywordsProcessor, добавить автоматическое экранирование ключевых слов MySQL.
- Код генератора добавляет поддержку TEXT, TIME, TIMESTAMP.
- Новый метод пакетной вставки.
- Генерация кода контроллера слоя.
- Изменить часть списка параметров List на Collection в коде генератора.
- Оптимизация кода генератора поддерживает resultMap.
v1.4.8 от 12 октября 2016 г.
- ВставитьOrUpdate добавить проверку пустой строки первичного ключа.
- Поддержка конфигурации Mybatis native camelCase.
- Поддержка TableField FieldStrategy аннотации для глобальной настройки.
- Методы SelectOne и SelectCount поддерживают способ EntityWrapper.
- Oracle код генератора поддерживает Integer Long Dobule тип различения.
- Исправлена ошибка INSERTUPDATE метода Bug.
- EntityWrapper IN добавляет поддержку изменяемого массива.
- Базовый Mapper и Servcie универсальный метод PK параметр изменён на Serializable.
- Когда результат выбора одного не уникален, добавьте предупреждение (необходимо включить режим журнала warn).
- BaseService добавляет logger, подкласс напрямую вызывает logger без повторного определения (требуется зависимость slf4j).
v1.4.7 от 27 сентября 2016 г.
- Первичный ключ аннотации I заменён на PK для облегчения понимания, удаление mapper аннотаций.
- Плагин производительности, специальная обработка $ содержимого.
- Добавьте примечание о автоматической отправке транзакции, новое тестирование транзакций.
- Поддержка resultMap для сопоставления результатов сущности.
- Увеличение #TableField (el = "") выражения, когда поле является объектом, можно использовать #{объект. атрибут} для сопоставления с данными таблицы и тестирования.
- Новая поддержка typeHanler для каскадных запросов.
- Новое перечисление для проверки стратегии поля.
- Генератор кода поддерживает настройку модели построения сущности.
- Генератор кода добавляет поддержку генерации констант сущности.
- CRUD добавляет метод insertOrUpdate.
- Решите проблему с MessageFormat.format, форматируя ошибки SQL с числовыми типами.
- EntityWrapper добавляет поддержку EXISTS, IN, BETWEEN AND.
- Поддержка json enum типа mysql5.7+, генерация кода.
- Без XML всё ещё можно внедрить методы CRUD.
- Измените порядок загрузки исходного файла конфигурации Mybatis.
v1.4.6 от 5 сентября 2016 г.
- Новый @TableId аннотация пропускает внедрение SQL.
- Поддержка вставки объектов без аннотации @TableId не выполняет заполнение.
- xxxByMap поддерживает null запросы.
v1.4.5 от 28 августа 2016 г.
- Новые функции автоматического горячего обновления XML.
- Автоматически обрабатывать параметры MessageFormat Params типа String в EntityWrapper методе.
- Новые общие поля таблиц автоматически заполняются.
v1.4.4 от 25 августа 2016 г.
- Все условия класса методов EntityWrapper могут передавать нулевые параметры, и эти условия не будут добавлены в SQL-запрос.
- TSQLPlus переименован в TSqlPlus, чтобы соответствовать общему названию.
- Ошибка исправлена: ключевые слова MySQL будут преобразованы с помощью ``, добавлена возможность настраивать расширение файла при создании XML-файла.
- Перед закрытием ресурса проверьте, не является ли он пустым, чтобы избежать ошибок SQL, вызванных пустыми указателями, и увеличьте выбор current>pages.
- Реализация последовательности TSQL и связанные классы поддерживают сериализацию dubbo.
- Добавлено автоматическое обновление Mybatis plug-in.
- Ключевые слова order и key в базе данных и другие ключевые слова экранируются операциями curd.
v1.4.3 от 23 августа 2016 г.
- Оптимизация последовательности генерации для ситуаций, когда невозможно получить mac.
- Обработка ID пустой строки, автоматическое заполнение.
- Преобразование всех прописных букв в свойства нижнего регистра.
- Метод условий EntityWrapper соответствует стандарту синтаксиса T-SQL.
- Тестирование зависимостей обновления 1.4.3.
v1.4.0 от 17 августа 2016 г.
- Увеличить настраиваемый выбор результата, оптимизировать разбиение на страницы.
- Функции не рассматриваются, поля удаляются для оптимизации.
- Новый delete update запрещает выполнение перехвата всей таблицы.
v1.3.9 от 9 августа 2016 г.
- Исправлены ошибки.
- Проблема с вставкой карты устранена.
- Вставка карты не обрабатывается и возвращается как есть.
- Оптимизация генератора IdWorker.
- Поддержка пользовательского LanguageDriver.
- Поддержка генерации кода пользовательских классов.
- Обновление зависимости mybatis 3.4.1.
v1.3.6 от 28 июля 2016 г.
- Поддержка глобальных настроек полей таблицы с подчёркиванием.
- Новый пользовательский метод внедрения SQL.
- Разбиение на страницы оптимизировано, и общее количество записей равно 0, что не приводит к выполнению запроса списка.
- Автоматический базовый атрибут генерации XML добавляет обработку AS.
- Поле поддержки подзапроса.
v1.3.5 от 24 июля 2016 г.
- SimpleDateFormat небезопасен для решения проблем.
- Ошибки разбиения на страницы oracle исправлены.
- Проблемы с генерацией TIMESTAMP oracle исправлены. - Отрегулировать порядок загрузки SQL: XMLSQL > CURDSQL.
- Поддерживать вторичное кэширование CURD.
- Добавить тестирование кэша и тестирование специальных символов.
[v1.2.15] 2016.04.27
- Добавлена поддержка автоматического создания кода для Oracle, а также тестирования функций.
- Добавлен UUID-стратегии.
- Демонстрация демо: нажмите spring-wind.
- Теперь поддерживается подсчёт количества запросов для одной таблицы.
[v1.2.12] 2016.04.22
- В слой сервиса добавлена поддержка универсальных идентификаторов (ID) и автоматическое создание оптимизированного кода.
- MyBatis обновлён до версии 3.4.0, MyBatis-Spring — до версии 1.3.0.
[v1.2.11] 2016.04.18
- Добавлено пакетное обновление, поддерживается пакетная обработка Oracle.
- Убрано, перенесено в spring-wind: документы.
- Поддержка JDK1.5: изменение описания param.
- Добавление типа базы данных.
[v1.2.9] 2016.04.10
- EntityWrapper: добавлен конструктор без order by.
- MailHelper: перегрузка метода sendMail.
- CommonMapper теперь поддерживает String как первичный ключ ID.
- Метод selectList разделён на два метода: selectList и selectPage.
- Оптимизация генератора кода: добавлены документы и другие улучшения.
[v1.2.8] 2016.04.02
- Улучшена генерация кода: обработка полей с заглавными буквами, автоматическое создание файлов сущностей, мапперов и сервисов.
- Улучшение логики разбиения на страницы при выходе за пределы индекса, добавлено пять методов операций CRUD.
- Открыт шаблонный движок: метод getHtmltext.
- Оптимизирована конфигурация отправки электронной почты: добавлены пояснения в документах.
- Добавлены документы и другие изменения.
[v1.2.6] 2016.03.29
- Сервисный уровень: оптимизация кода, разделение методов list и page.
- Разбиение на страницы: оптимизация SQL-запроса count.
- Улучшен класс почтовых инструментов.
- Расширена поддержка фреймворка для Spring.
- Добавлены документы и прочие изменения.
[v1.2.5] 2016.03.25
- Независимая поддержка универсального идентификатора (ID) в baseMapper.
- Более совершенный инструмент автоматической генерации.
- Поддержка сортировки объектов.
- Доработка плагина разбивки на страницы.
- Извлечение поддержки универсальных ключей (ID) из сервиса.
[v1.2.2] 2016.03.14
- Использование аннотаций для различения AUTO (автоматическое увеличение базы данных), ID_WORKER (автоматическое заполнение пользовательского уникального идентификатора), INPUT (ручной ввод).
- Оптимизация кода и функций генератора.
- Прочие изменения.