springboot整合spring data jpa实例
这里不多介绍jpa和springboot只做使用的实际配置
打好springboot项目之后配置数据源
首先加入pom依赖
jpa,mysql,lombok(实体上加上@Data注解可以省去get,set,toString,等方法)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
第一步:数据源链接配置和jpa相关配置
配置application.yml文件的数据源和jpa
spring:
datasource:
url: jdbc:mysql://172.20.94.39:3306/marketing?characterEncoding=utf-8&verifyServerCertificate=false&useSSL=false&requireSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: marketing
password: marketing
jpa:
hibernate:
ddl-auto: update
show-sql: true
database: mysql
第二步:配置数据源配置文件
package com.renrenche.marketing.ads_scheduler.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
@Configuration
//此处是你dao文件所在的包名
@EnableJpaRepositories("com.renrenche.marketing.ads_scheduler.dao")
@EnableTransactionManagement
public class DataSourceConfig {
@Autowired
private DataSource dataSource;
@Value("${spring.jpa.hibernate.ddl-auto}")
private String ddlAuto;
@Value("${spring.jpa.show-sql}")
private String showSql;
@Primary
@Bean
public EntityManagerFactory entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
//此处com.example.*.model是你的java bean所在的包名
factory.setPackagesToScan("com.renrenche.marketing.ads_scheduler.domain");
factory.setDataSource(dataSource);
Map<String, Object> jpaProperties = new HashMap<String, Object>();
jpaProperties.put("hibernate.ejb.naming_strategy","org.hibernate.cfg.ImprovedNamingStrategy");
jpaProperties.put("hibernate.jdbc.batch_size",50);
//以下是配置自动创建表结构
jpaProperties.put("hibernate.hbm2ddl.auto", ddlAuto);
jpaProperties.put("hibernate.format_sql", "true");
jpaProperties.put("hibernate.show_sql", showSql);
jpaProperties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
factory.setJpaPropertyMap(jpaProperties);
factory.afterPropertiesSet();
return factory.getObject();
}
@Primary
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}
}
接下来就可以创建实体。利用实体配置直接在数据库生成表结构
package com.renrenche.marketing.ads_scheduler.domain.sem;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@Entity
@Table(name = "sem_channel")
@Data
public class SemChannelEntity implements Serializable {
private static final long serialVersionUID = -5654459077990963779L;
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
@Column(name = "channel_en")
private String channelEn;
@Column(name = "channel_cn")
private String channelCn;
@Column(name = "discription")
private String discription;
@Column(name = "status")
private Integer status;
@Column(name = "create_time")
@CreationTimestamp
private Date createTime;
@UpdateTimestamp
@Column(name = "update_time")
private Date updateTime;
}
运行springboot项目即可在数据库生成表
console控制台打印日志
创建成功,可以在库里看到建好的表