1. Метод getTables оптимизирован для фильтрации разделённых таблиц PostgreSQL, сохраняя базовые разделённые таблицы и исключая подразделённые таблицы.
2. Улучшена обработка неполных выражений с параметром типа boolean в конструкции @if(:param1<>A && :boolParam) [полное выражение: booleanParam==true].
```xml
<!-- Другие ненадёжные spring-фреймворки могут быть расширены на основе sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<version>5.6.43.RC2</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<version>5.6.43.RC2</version>
</dependency>
<!-- плагин solon -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<version>5.6.43.RC2</version>
</dependency>
```
1. Оптимизация метода getTables для фильтрации разделённых таблиц PostgreSQL, сохраняется базовая разделённая таблица, а подразделённые таблицы исключаются.
2. Улучшение обработки неполного выражения с параметром типа boolean @if(:param1<>A && :boolParam) [полное выражение: booleanParam == true].
```xml
<!-- Другие ненаследованные от Spring фреймворки могут быть расширены на основе sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<version>5.6.43</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<version>5.6.43</version>
</dependency>
<!-- плагин для solon -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<version>5.6.43</version>
</dependency>
```
1. Исправление缺陷 в sql-запросе link, результат которого является List、Set、Array
```xml
<sql id="common_resourceRoles" debug="false" dataSource="portalDataSource">
<link id-columns="res_url" columns="role_code" distinct="true" result-type="SET"/>
<value>
<![CDATA[
select
t3.res_url,
t2.role_code
from SAG_ROLE_RESOURCES t1
left join sag_resource t3 on t3.res_id=t1.res_id
left join sag_role t2 on t2.role_id=t1.role_id
where t3.res_url is not null and t3.NODE_LEVEL >= 3
and t3.status=1
and t1.status=1
-- and t3.view_type='F'
and t3.app_code=:appCode
order by t3.res_url
]]>
</value>
</sql>
```
2. Оптимизация вывода логов, добавление функции преобразования времени для параметров типа дата и время
```sql
select * from table where create_time=to_date('2024-10-11 12:30:11.039','YYYY-MM-DD HH24:MI:SS.FF')
```
1. Исправлено недостаток в修复SQL查询link操作结果为列表、集合、数组的情况
2. Оптимизирован вывод логов, добавлены функции преобразования времени для параметров типа дата, время
Исправлено:
1. "в修复SQL查询link操作结果为列表、集合、数组的情况" на "в修复SQL查询link操作结果为列表、集合、数组的情况"
2. "дата, время" оставлено без изменений, так как это термины, а не текст для перевода.
1. Исправлено отсутствие обработки последней группы при получении результата в виде List или Set в методе группировки link.
```xml
<sql id="common_resourceRoles" debug="false" dataSource="portalDataSource">
<link id-columns="res_url" columns="role_code" distinct="true" result-type="SET"/>
<value>
<![CDATA[
select
t3.res_url,
t2.role_code
from SAG_ROLE_RESOURCES t1
left join sag_resource t3 on t3.res_id=t1.res_id
left join sag_role t2 on t2.role_id=t1.role_id
where t3.res_url is not null and t3.NODE_LEVEL >= 3
and t3.status=1
and t1.status=1
-- and t3.view_type='F'
and t3.app_code=:appCode
order by t3.res_url
]]>
</value>
</sql>
```
2. Улучшена производительность вывода логов, добавлены функции преобразования времени для параметров типа дата и время.
```sql
select * from table where create_time=to_date('2024-10-11 12:30:11.039','YYYY-MM-DD HH24:MI:SS.FF3')
```
```xml
<!-- Для расширения других неспринговых фреймворков можно использовать sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<version>5.6.42</version>
</dependency>
<!-- Для springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<version>5.6.42</version>
</dependency>
<!-- Для плагина solon -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<version>5.6.42</version>
</dependency>
```
1. Исправление缺陷 в DateUtil при преобразовании строки в дату, когда строковое значение не соответствует правилам
```xml
<!-- Другие независимые от Spring фреймворки могут быть расширены на основе sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<version>5.6.41</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<version>5.6.41</version>
</dependency>
<!-- Solon плагин -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<version>5.6.41</version>
</dependency>
```
Исправление дефекта в DateUtil при преобразовании строки в дату, когда строковое значение не соответствует правилам:
```xml
<!-- Другие независимые от Spring фреймворки могут быть расширены на основе sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<version>5.6.41</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<version>5.6.41</version>
</dependency>
<!-- Solon плагин -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<version>5.6.41</version>
</dependency>
```
1. Параметры условий запроса поддерживают JSONArray и JSONObject.
2. Поддержка нескольких полей в операторе IN (id, type) IN (:list[i].id, :typeCode), где значения параметров могут существовать как частичные массивы.
```xml
<!-- Для расширения других независимых от Spring фреймворков можно использовать sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- Версия для JDK8: 5.6.40.RC3.jre8 -->
<version>5.6.40.RC3</version>
</dependency>
<!-- Для Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- Версия для JDK8: 5.6.40.RC3.jre8 -->
<version>5.6.40.RC3</version>
</dependency>
<!-- Плагин для Solon -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- Версия для JDK8: 5.6.40.RC3.jre8 -->
<version>5.6.40.RC3</version>
</dependency>
```
1. Параметры условий запроса поддерживают JSONArray и JSONObject.
2. Поддержка нескольких полей в in (id, type) in (:list.id, :typeCode), где значения параметров могут содержать частичные массивы.
```xml
<!-- Для расширения других независимых от Spring фреймворков используйте sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- Версия для JDK8: 5.6.40.jre8 -->
<version>5.6.40</version>
</dependency>
<!-- Для Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- Версия для JDK8: 5.6.40.jre8 -->
<version>5.6.40</version>
</dependency>
<!-- Solon плагин -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- Версия для JDK8: 5.6.40.jre8 -->
<version>5.6.40</version>
</dependency>
```
1. Оптимизация версии 5.6.38 — добавление меток `-- @fast_start` и `-- @fast_end`, поддерживающих возможность использования только метки `start`.
2. Улучшение поддержки метода `lightDao.Store().resultTypes(Class... classes)` для множества типов результатов вместо установки параметра `.moreResult(true)`.
3. Улучшение метода `loadAll`, с целью улучшения параллельной обработки больших объёмов данных (ранее использовалась последовательность разделения на части и дальнейшая параллелизация, что приводило к отсутствию эффективного параллельного выполнения).
```java
// Поддерживает два режима: `-- @fast_start` или `/*@fast_start*/`
String sql = """
select *
from sqltoy_order_info soi
where 1=1
-- @fast_start
/*@fast_start*/(
select * from table1
)
and status=1
""";
```
```xml
<!-- Другие независимые от Spring фреймворки могут использовать расширение sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- Для JDK8 номер версии: 5.6.39.jre8 -->
<version>5.6.39</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- Для JDK8 номер версии: 5.6.39.jre8 -->
<version>5.6.39</version>
</dependency>
<!-- Solon плагин -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- Для JDK8 номер версии: 5.6.39.jre8 -->
<version>5.6.39</version>
</dependency>
```
1. Добавьте использование `/* @fast_start */` и `/* @fast_end */` вместо метки @fast для указания начала и конца быстрого пагинационного запроса, что облегчит отладку SQL.
2. Поддержка @fast включает случаи, когда между @fast и левой скобкой есть пробелы.
```java
// Поддерживает два режима: -- @fast_start или /*@fast_start*/
String sql = """
select *
from sqltoy_order_info soi
where 1=1
-- @fast_start
/*@fast_start*/ (
select * from table1
) /*@fast_end*/
-- @fast_end
and status=1
""";
```
```xml
<!-- Для расширения других независимых от Spring фреймворков используйте sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- Версия для JDK8: 5.6.38.jre8 -->
<version>5.6.38</version>
</dependency>
<!-- Для Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- Версия для JDK8: 5.6.38.jre8 -->
<version>5.6.38</version>
</dependency>
<!-- Для плагинов Solon -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- Версия для JDK8: 5.6.38.jre8 -->
<version>5.6.38</version>
</dependency>
```
1. Предоставьте возможность многократного перевода одного и того же поля или выполнение перевода в зависимости от логических условий.
```xml
<sql id="sqltoy_complax_trans">
<!-- where like colName==xxx | colName!=xxx | colName in (a,b) |colName out (a,b) -->
<translate cache="dictCache" cache-type="purchase_deliver_type" columns="deliver_type" where="order_type=='purchase'"/>
<translate cache="dictCache" cache-type="sales_deliver_type" columns="deliver_type" where="order_type=='sales'"/>
<value><![CDATA[
select order_id, order_type, deliver_type
from order_info
]]></value>
</sql>
```

```java
// Демонстрация использования режима базового кода для кэшированного перевода, маскировки номеров телефонов, применения пользовательских фильтров и т.д.
Page<StaffInfoVO> result = lightDao.findPageEntity(new Page(), StaffInfoVO.class,
EntityQuery.create().where("STATUS=1 #[and STAFF_NAME like :staffName]").orderByDesc("ENTRY_DATE")
.values(new StaffInfoVO().setStaffName("张")).filters(new ParamsFilter("staffName").rlike())
.translates(new Translate("organIdName").setKeyColumn("organId").setColumn("organName")
.setCompareColumn("orderType").setCompareType("eq").setCompareValues("PO"))
.secureMask(MaskType.TEL, "telNo"));
```
```xml
<!-- Другие независимые от Spring фреймворки могут использовать sagacity-sqltoy для расширения -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- версия для JDK8: 5.6.37.jre8 -->
<version>5.6.37</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- версия для JDK8: 5.6.37.bkj8 -->
<version>5.6.37</version>
</dependency>
<!-- плагины Solon -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- версия для JDK8: 5.6.37.jre8 -->
<version>5.6.37</version>
</dependency>
```
1. Предоставьте возможность для многократного перевода одного и того же поля или выполнения перевода в зависимости от конкретных логических условий
```xml
<sql id="sqltoy_complex_translation">
<!-- where like colName==xxx | colName!=xxx | colName in (a,b) |colName not in (a,b) -->
<translate cache="dictCache" cache-type="purchase_delivery_type" columns="delivery_type" where="order_type=='purchase'"/>
<translate cache="dictCache" cache-type="sales_delivery_type" columns="delivery_type" where="order_type=='sales'"/>
<value><![CDATA[
select order_id, order_type, delivery_type
from order_info
]]></value>
</sql>
<!-- Другие независимые от Spring фреймворки могут использовать sagacity-sqltoy для расширения -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- версия для JDK8: 5.6.36.RC8.jre8 -->
<version>5.6.36.RC8</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- версия для JDK8: 5.6.36.RC8.jre8 -->
<version>5.6.36.RC8</version>
</dependency>
<!-- плагин Solon -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- версия для JDK8: 5.6.36.RC8.jre8 -->
<version>5.6.36.RC8</version>
</dependency>
```
1. Предоставьте возможность для многократного перевода одного и того же поля или выполнения перевода в зависимости от конкретных логических условий
```xml
<sql id="sqltoy_complex_translation">
<!-- where like colName==xxx | colName!=xxx | colName in (a,b) |colName not in (a,b) -->
<translate cache="dictCache" cache-type="purchase_delivery_type" columns="delivery_type" where="order_type=='purchase'"/>
<translate cache="dictCache" cache-type="sales_delivery_type" columns="delivery_type" where="order_type=='sales'"/>
<value><![CDATA[
select order_id, order_type, delivery_type
from order_info
]]></value>
</sql>
<!-- Другие независимые от Spring фреймворки могут использовать sagacity-sqltoy для расширения -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- Для JDK8 версия должна быть: 5.6.36.RC7.jre8 -->
<version>5.6.36.RC7</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- Для JDK8 версия должна быть: 5.6.36.RC7.jre8 -->
<version>5.6.36.RC7</version>
</dependency>
<!-- Solon плагины -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- Для JDK8 версия должна быть: 5.6.36.RC7.jre8 -->
<version>5.6.36.RC7</version>
</dependency>
```
1. Предоставьте возможность многократного перевода одного и того же поля или выполнения перевода в зависимости от конкретных логических условий.
```xml
<sql id="sqltoy_complax_trans">
<!-- where like colName==xxx | colName!=xxx | colName in (a,b) |colName out (a,b) -->
<translate cache="dictCache" cache-type="purchase_deliver_type" columns="deliver_type" where="order_type=='purchase'"/>
<translate cache="dictCache" cache-type="sales_deliver_type" columns="deliver_type" where="order_type=='sales'"/>
<value><![CDATA[
select order_id, order_type, deliver_type
from order_info
]]></value>
</sql>
```
1. Предоставьте возможность многократного перевода одного и того же поля или выполнения перевода в зависимости от конкретных логических условий.
```xml
<sql id="sqltoy_complax_trans">
<!-- where like colName==xxx | colName!=xxx | colName in (a,b) |colName out (a,b) -->
<translate cache="dictCache" cache-type="purchase_deliver_type" columns="deliver_type" where="order_type=='purchase'"/>
<translate cache="dictCache" cache-type="sales_deliver_type" columns="deliver_type" where="order_type=='sales'"/>
<value><![CDATA[
select order_id, order_type, deliver_type
from order_info
]]></value>
</sql>
```
1. Предоставьте возможность многократного перевода одного и того же поля или выполнения перевода в зависимости от конкретных логических условий.
```xml
<sql id="sqltoy_complax_trans">
<!-- where like colName==xxx | colName!=xxx | colName in (a,b) |colName out (a,b) -->
<translate cache="dictCache" cache-type="purchase_deliver_type" columns="deliver_type" where="order_type=='purchase'"/>
<translate cache="dictCache" cache-type="sales_deliver_type" columns="deliver_type" where="order_type=='sales'"/>
<value><![CDATA[
select order_id, order_type, deliver_type
from order_info
]]></value>
</sql>
```
1. Предоставьте возможность многократного перевода одного и того же поля или выполнение перевода в зависимости от конкретных логических условий.
```xml
<sql id="sqltoy_complex_translation">
<!-- where like colName==xxx | colName!=xxx | colName in (a,b) |colName not in (a,b) -->
<translate cache="dictCache" cache-type="purchase_delivery_type" columns="delivery_type" where="order_type=='purchase'"/>
<translate cache="dictCache" cache-type="sales_delivery_type" columns="delivery_type" where="order_type=='sales'"/>
<value><![CDATA[
select order_id, order_type, delivery_type
from order_info
]]></value>
</sql>
```

```xml
<!-- Для расширения других фреймворков помимо Spring можно использовать sagacity-sqltoy -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- версия для JDK8: 5.6.36.jre8 -->
<version>5.6.36</version>
</dependency>
<!-- для Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- версия для JDK8: 5.6.36.jre8 -->
<version>5.6.36</version>
</dependency>
<!-- плагины для Solon -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- версия для JDK8: 5.6.36.jre8 -->
<version>5.6.36</version>
</dependency>
```
1. Устранена проблема с отсутствием данных в полях типа BLOB в базе данных.
2. Обновлены зависимости solon до версии 3.0.5 и springboot до версии 3.4.1.
Спасибо за обратную связь: @Legendary
```xml
<!-- Расширение sagacity-sqltoy для других фреймворков помимо Spring -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- Версия для JDK8: 5.6.35.jre8 -->
<version>5.6.35</version>
</dependency>
<!-- Для Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- Версия для JDK8: 5.6.35.jre8 -->
<version>5.6.35</version>
</dependency>
<!-- Solon плагин -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- Версия для JDK8: 5.6.35.jre8 -->
<version>5.6.35</version>
</dependency>
```
1. Устранена проблема с `@value(:inField)` при количестве идентификаторов (`:ids`) более 1000.
2. Обновлено зависимое софт Solon до версии 3.0.4 и Spring Boot до версии 3.4.
```xml
<!-- Другие независимые от Spring фреймворки могут использовать sagacity-sqltoy для расширения -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- Для JDK8 номер версии: 5.6.34.jre8 -->
<version>5.6.34</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- Для JDK8 номер версии: 5.6.34.jre8 -->
<version>5.6.34</version>
</dependency>
<!-- Solon плагины -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- Для JDK8 номер версии: 5.6.34.jre8 -->
<version>5.6.34</version>
</dependency>
```