MyBatis: подчеркивание не сопоставлено с верблюдом

Моя проблема проста. У меня есть имя столбца product_name в моей таблице product в моей базе данных mysql, но в моем классе Product (java) camelcase используется в productName. MyBatis не сопоставляет имя_продукта с именем_продукта. Любое решение для этого? У меня не было проблем в Hibernate раньше, но сейчас мне нужно использовать mybatis для разработки

4 ответа

Я знаю, что это старый, но для тех, кто может столкнуться с этим, MyBatis поддерживает отображение подчеркивания на случай верблюда

config.xml

<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    ...
</configuration>

Тогда ваш sql может выглядеть так:

select product_name, product_description, ...
from products

или даже просто

select *
from products

Подчеркивание к отображению верблюжьего случая может быть включено в весенней конфигурации через настраиваемую SqlSessionFactory, например:

@Bean
@Primary
public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactory factory = sessionFactoryBuilder().build();
    factory.getConfiguration().setMapUnderscoreToCamelCase(true);
    // other configurations
    return factory;
}

Вы должны использовать <resultMap> тег в MyBatis, чтобы вернуть результат. Например:

<resultMap id="result" type="userModel">
        <result property="id" column="USER_ID"/>
</resultMap>

В приведенном выше коде, в type="userModel" userModel определяется в файле конфигурации, где есть отображение userModel с классом java модели, который будет иметь соответствующий метод setter / getter для id. Для получения дополнительной информации об этом, обратитесь к следующему документу:

MyBatis Doc

У меня было очень простое решение для этого, но я не считаю его правильным. я добавил as чтобы соответствовать свойству моего класса.

select product_name as productName from products;

Другие вопросы по тегам