开发一个新项目,用的springboot,相关配置不太熟悉,导致一些配置没配,到具体开发时问题就暴露出来了,记录第一个配置问题————Mybatis配置—自动使用驼峰命名 属性(userId)映射字段(user_id)。

实体类:

@Table(name = "bg_posting")

public class BgPosting {

/**

* 帖子id

*/

@Id

@Column(name = "posting_id")

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long postingId;

/**

* 帖子标题

*/

@Column(name = "posting_title")

private String postingTitle;

/**

* 发帖人id

*/

@Column(name = "user_id")

private Long userId;

...

}

错误:实体类用了@Table和@Column等注解,以为在**Mapper.xml中做查询等操作时,会自动映射,例如:posting_id ——> postingId,然而测试结果告诉我,如果没有写手动映射,直接到实体类,那么所有驼峰命名的属性都为null,也就是说驼峰命名的没有自动映射成功,这就是配置问题了,在网上查了资料,这个驼峰自动映射(默认为false)需要手动配置。

要在mybatis的配置文件中加上如下代码:

@Bean

public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {

SqlSessionFactoryBean factory = new SqlSessionFactoryBean();

factory.setDataSource(dataSource);

factory.setTypeAliasesPackage(MODEL_PACKAGE);

...

org.apache.ibatis.session.Configuration configuration=new org.apache.ibatis.session.Configuration();

configuration.setUseGeneratedKeys(true);//使用jdbc的getGeneratedKeys获取数据库自增主键值

configuration.setUseColumnLabel(true);//使用列别名替换列名,如:select user as User

configuration.setMapUnderscoreToCamelCase(true);//-自动使用驼峰命名属性映射字段,如userId user_id

factory.setConfiguration(configuration);

return factory.getObject();

}

这样即使实体类不加@Column等注解,依然可以根据驼峰规则,映射成功

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐