- Spring Boot 连接多个数据库
如果使用JPA来连接,要注意的坑是yaml中指定数据库的url
spring.datasource.xxxx.url会报错,报错是找不到jdbc-url。问题原因是DataSource的不兼容导致的,Spring Boot 2.0启用了新的连接池HikariCP,这个库使用的是jdbc-url来连接的。 解决方法:可以参考这个回答:# After Spring Boot 2.0 migration: jdbcUrl is required with driverClassName ,也可以参考这篇回答jdbcUrl is required with driverClassName错误解决
具体的配置多数据源,可以参考文章:SpringBoot多数据源
- 使用Spring Data JPA遇到SQL保留字段 我在启动的时候,报了一个无法创建表的问题,把这个sql拉出去执行一下,确实有问题。看到里面有个字段是叫range,我觉得可能是遇到SQL保留字段了,加了引号`range`就能创建了。那么在Spring中要如何解决呢.
// range是mysql 保留字段,所以要特殊处理一下。
@Column(name = "[range]")
private String range;
- 实体类的字段不与表中字段映射
可通过在字段上添加
@Transient注解,然后import的是import javax.persistence.Transient;,即可解决。 如
@Transient
private String appName;
- Spring Boot的返回json命名转换的问题 Spring Boot默认会返回驼峰表示的JSON,但如果我们想要的小写加下划线的呢?
- 可以采用
@JsonProperty(name="app_name")挨个命名 - 可以采用
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)对某个类命名,其中命名规则也可以自定义 - 还可以使用全局命名,可通过如下设置spring的yml来解决
spring:
jackson:
serialization:
WRITE_DATES_AS_TIMESTAMPS: false
default-property-inclusion: non_null
property-naming-strategy: SNAKE_CASE