我的问题很简单。我的mysql数据库的产品表中有一个列名product_name,但在我的Product类(java)中,camelcase用于productName。 MyBatis未将product_name映射到productName。对此有何解决方案?我之前在Hibernate中没有问题,但现在我需要使用mybatis进行开发
答案 0 :(得分:4)
我知道这已经过时了,但对于那些可能会遇到这种情况的人来说,MyBatis supports映射强调了骆驼案例
config.xml中
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
...
</configuration>
然后你的sql看起来像:
select product_name, product_description, ...
from products
甚至只是
select *
from products
答案 1 :(得分:4)
可以通过可自定义的SqlSessionFactory在基于spring的配置中启用对驼峰案例映射的下划线映射,如下所示:
@Bean
@Primary
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactory factory = sessionFactoryBuilder().build();
factory.getConfiguration().setMapUnderscoreToCamelCase(true);
// other configurations
return factory;
}
答案 2 :(得分:1)
您必须在MyBatis中使用<resultMap>
标记才能返回结果。例如:
<resultMap id="result" type="userModel">
<result property="id" column="USER_ID"/>
</resultMap>
在上面的代码中,在type="userModel"
中,userModel在配置文件中定义,其中userModel与模型java类的映射将具有相应的id的setter / getter方法。
有关此问题的更多信息,请参阅以下文档:
答案 3 :(得分:0)
对此我有一个非常简单的解决方案,但我认为这不是正确的解决方案。
我添加了 as
以匹配我班级的属性。
select product_name as productName from products;