spring data jpa 注解配置

@Configuration
@EnableTransactionManagement
@EnableJpaAuditing
@EnableJpaRepositories(entityManagerFactoryRef = "synEntityManagerFactory",
        transactionManagerRef = "synTransactionManager",
        basePackages = {"com.vcread.unicom.syn.repository.syn"})//设置dao(repo)所在位置
public class SynDbConfig {

    @Bean(name = "synDataSource")
    @Qualifier(value = "synDataSource")
    @ConfigurationProperties(prefix = "syn.datasource")
    @Primary
    public DataSource synDataSource() {
        return DataSourceBuilder.create().build();
    }

    @ConfigurationProperties(prefix = "syn.jpa")
    @Bean
    @Primary
    public JpaProperties synJpaProperties() {
        return new JpaProperties();
    }

    @Bean(name = "synEntityManagerFactory")
    @Primary
    public LocalContainerEntityManagerFactoryBean synEntityManagerFactory(EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(synDataSource())
                .properties(synJpaProperties().getHibernateProperties(synDataSource()))
                .packages("com.vcread.unicom.syn.entity", "org.springframework.data.jpa.convert.threeten") //设置实体类所在位置  localDateTime 支持
                .persistenceUnit("primaryPersistenceUnit")
                .build();
    }

    @Bean
    @Primary
    PlatformTransactionManager synTransactionManager(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(synEntityManagerFactory(builder).getObject());
    }
}
配置文件:
syn:
  datasource:
    url: jdbc:mysql://192.168.1.204:3306/xxx_send_dev?useUnicode=true&characterEncoding=utf8
    username: root
    password: xxxx.cn
    driverClassName: com.mysql.jdbc.Driver
    testWhileIdle: true
    validationQuery: SELECT 1
  jpa:
    hibernate.ddl-auto: update
    show-sql: true
@Repository
public interface PlatformRepository extends JpaRepository {

    @Query(value = "select p from Platform as p " +
            "where :gateway member of p.gateways  ")
    Platform findByGateway(@Param("gateway") Gateway gateway);

    Platform findByName(String name);
}
@Entity
@Data
@AllArgsConstructor
@Builder

@NoArgsConstructor
@Where(clause = "remove=false")
@SQLDelete(sql = "update gateway set remove=true,last_modified=now() where id=?")
@EntityListeners(AuditingEntityListener.class)
public class Gateway {
    public Gateway(String ip,Integer port) {
        id = ip + ":" + port;
    }
    /**
     * id
     */
    @Id
    @Column(length = 50)
    private String id ;

    /**
     * SP接入号
     */
    private String accessNumber;

    /**
     * 短信网关IP
     */
    private String ip;

    /**
     * 短信网关端口
     */
    private Integer port;

    /**
     * 备注
     */
    private String remark;

    /**
     * 关联的网关
     */
    @ManyToOne
    private Platform platform;


    /**
     * 创建时间
     */
    @CreatedDate
    private LocalDateTime createTime;

    /**
     * 最后修改时间
     */
    @LastModifiedDate
    private LocalDateTime lastModified;

    /**
     * 是否删除,用于逻辑删除
     */
    private Boolean remove = false;

    public static GatewayModel convertToModel(Gateway gateway) {
        return GatewayModel.builder()
                .id(gateway.getId())
                .accessNumber(gateway.accessNumber)
                .ip(gateway.getIp())
                .port(gateway.getPort())
                .platformId(gateway.platform == null?"":gateway.platform.getId())
                .build();
    }
}



你可能感兴趣的:(spring data jpa 注解配置)