首页 > 其他分享 >SpringBoot 官方文档示例(90):整合jpa时,自定义名称映射

SpringBoot 官方文档示例(90):整合jpa时,自定义名称映射

时间:2023-02-18 13:01:12浏览次数:52  
标签:return name 自定义 示例 JdbcEnvironment Override Identifier public SpringBoot


在Spring Boot整合jpa时默认将实体类的名称的驼峰映射成下划线的表名。也就是使用CamelCaseToUnderscoresNamingStrategy。
可以通过自定义的方式来指定上述的映射规则,可以定义一个bean,返回PhysicalNamingStrategy的实例。

@Bean
PhysicalNamingStrategy f(){
return new PhysicalNamingStrategy() {
@Override
public Identifier toPhysicalCatalogName(Identifier name, JdbcEnvironment jdbcEnvironment) {
return name;
}

@Override
public Identifier toPhysicalSchemaName(Identifier name, JdbcEnvironment jdbcEnvironment) {
return name;
}

@Override
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment jdbcEnvironment) {
String columnName = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name.getText());
Identifier identifier = new Identifier(columnName+"_test", false);
return identifier;
}

@Override
public Identifier toPhysicalSequenceName(Identifier name, JdbcEnvironment jdbcEnvironment) {
return name;
}

@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment jdbcEnvironment) {
return name;
}


};
}

其中表名的映射规则为:驼峰转下划线再加_test

#######################################################
定义如下的bean,可以将StudentInfo对应到表名Student_Info

@Bean
public CamelCaseToUnderscoresNamingStrategy caseSensitivePhysicalNamingStrategy()
{
return new CamelCaseToUnderscoresNamingStrategy() {
@Override
protected boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) {
return false;
}
};
}

定义如下的bean,可以将StudentInfo对应到表名StudentInfo(也就是直接映射)

@Bean
PhysicalNamingStrategyStandardImpl myPhysicalNamingStrategy() {
return new PhysicalNamingStrategyStandardImpl();
}

也可以通过spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 这种方式来指定映射类


标签:return,name,自定义,示例,JdbcEnvironment,Override,Identifier,public,SpringBoot
From: https://blog.51cto.com/amadeusliu/6065404

相关文章

  • SpringBoot 官方文档示例(89):使用DataSourceBuilder构建数据源
    一、在application.properties中配置数据源信息app.datasource.url=jdbc:mysql://xxx.xxx.xxx.xxx/testapp.datasource.jdbcUrl=jdbc:mysql://xxx.xxx.xxx.xxx/testapp.data......
  • SpringBoot 官方文档示例(88):配置logback把日志写到文件
    一、配置日志文件名logging.file.name=myapplication.log二、在resources下创建logback-spring.xml配置文件<?xmlversion="1.0"encoding="UTF-8"?><configuration><in......
  • SpringBoot: 自定义HttpMessageConverter
    一、定义类继承自AbstractHttpMessageConverterpackagecn.edu.tju.config;importcn.edu.tju.UserInfo;importorg.springframework.http.HttpInputMessage;importorg.spr......
  • 自定义比较 PersonT
    classPersonT{public: PersonT(doubleD0,doubleD1,doubleD2,stringstrNUMBER,doubleDX,doubleDY,doubleDZ,doubleDTAG) { this->M_D0=D0; this->M_D1......
  • 调用自定义的SplitString函数对字符串进行分割
    voidSplitString(conststd::string&s,std::vector<std::string>&v,conststd::string&c){ std::string::size_typepos1,pos2; pos2=s.find(c); pos1=0; while......
  • ASP.NET Core - 自定义中间件
    上一章讲了请求管道与中间件的基本概念和工作模式,也介绍了ASP.NETCore中内置的中间件,这一章介绍一下如何自定义中间件,这是很常用也很重要的内容,日常工作中很多场景我们......
  • 生成指定长度的随机字符串几个示例
    一、示例1/***@param$length*@parambool|false$numeric*@returnstring*生成指定长度的随机字符串并返回。*/functionrandom($length,$numeric=false){......
  • PHP+RabbitMQ消息发布与订阅简单示例
    我们有一个小说系统,每天会有很多作者发布新的小说内容,而读者因为个人爱好可能只订阅他喜欢的类型的小说,比如历史类、玄幻类小说。小说系统每天会根据用户的口味推送相关的小......
  • PHP与RabbitMQ消息队列简单示例
    ​​RabbitMQ​​提供跨语言接口,我们可以使用主流编程语言Java,C,C++,Python,PHP等和RabbitMQ做对接。RabbitMQ有消息确认机制、灵活的路由控制、以及消息集群高可用,使得很多大......
  • 腾讯云视频点播示例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"><metaname="viewport"content="wi......