Spring boot + mybatis-plus столкнулся с неправильным созданием полей базы данных с большим выступом и символами подчеркивания, что приводило к тому, что интерфейс передал параметры, а сервер не смог получить параметры.

Недавно я использовал springboot для подключения к базе данных sqlserver.Из-
за возраста базы данных поля в таблице не стандартизированы.

Однако Spring boot + mybatis-plus в java генерирует классы сущностей в строгом соответствии с форматом small Hump.
Если он не в формате small Hump, метод получения
аннотации @Data запрашивает параметры во внешнем интерфейсе. Используйте этот класс для получить внешние параметры и обнаружить, что значение класса сущности не может быть получено.


И этот класс сущности выводит параметры запроса и не получает их.

Было бы очень неприятно, если бы вы вручную изменяли поля одно за другим на маленькие горбатые

Пошарив, я нашел ленивое решение

По умолчанию mybatis-plus используется для автоматического создания классов сущностей.Проблема с
файлом сгенерированного класса
вставьте сюда описание изображения
:
это соглашение об именовании с большим горбом или нерегулярное соглашение об именовании, созданное в соответствии с полем базы данных, использует этот класс для получения параметров внешнего запроса. Обнаружено
, что параметры фронтенда не могут быть получены.

Нашел аннотацию
@JsonProperty("SIsClose") на ощупь

Роль @JsonProperty

@JsonProperty воздействует на свойства класса сущностей, сериализует имя свойства в другое имя, а имя свойства и имя в @JsonProperty("") представляют собой отношение сопоставления. Например, база данных использует символ подчеркивания для имени поля user_id, но имя атрибута класса сущности — это userId в стиле горба. Добавляя @JsonProperty("user_id") к userId, можно управлять выходным полем, когда запрос базы данных возвращается клиенту.

 简单的说,就是在给实体类属性名起别名,应用在不同的场合。

Результирующий класс сущностей
вставьте сюда описание изображения

Но если полей в базе слишком много,
добавление этой аннотации по одному тоже вызовет головную боль.

Наконец, измените шаблон автоматической генерации классов сущностей mybatis-plus
и добавьте один
вставьте сюда описание изображения
, чтобы автоматическая генерация классов сущностей
автоматически добавляла мне эту аннотацию
, что очень удобно

после тестирования

Именование не стандартизировано
, поэтому использование этого класса для подключения к параметрам внешнего интерфейса не приведет к получению соответствующих данных.Однако , если вы используете метод java set для ручного присвоения значения полю с нестандартным именем в этом классе,
вы можно использовать метод get для его получения.Например , новый объект, а затем получить набор прекрасно подходит для использования


Поэтому я чувствую, что Springboot должен использовать соглашение об именах с небольшим горбом при получении внешних параметров.

Итак, чтобы решить проблему с получением параметров, достаточно добавить в поле аннотацию @JsonProperty("SIsClose")

Форма тела параметра запроса после консультации с данными

1. Соблюдайте спецификацию Java Api и используйте формат именования Hump
2. Атрибуты класса Java должны соответствовать спецификации кода и использовать атрибут Hump

Springboot использует компонент jackson по умолчанию, и вам нужно только добавить соответствующие аннотации к свойствам с нестандартными именами, чтобы сопоставить компонент
jackson: com.fasterxml.jackson.annotation.JsonProperty;

Примечание. В этой форме без @RequestBody использование аннотации @JsonProperty не будет работать.

Supongo que te gusta

Origin blog.csdn.net/Drug_/article/details/129306062
Recomendado
Clasificación