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. Для получения дополнительной информации об этом, обратитесь к следующему документу:
У меня было очень простое решение для этого, но я не считаю его правильным. я добавил
as
чтобы соответствовать свойству моего класса.
select product_name as productName from products;