先建立db.properties文件
db.driver=com.mysql.jdbc.Driver
db.url=数据库地址
db.user=用户名
db.pwd=密码
#hibernate框架
#扫描包
hibernate.package.scan=包结构
#数据库引擎
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
#是否打印生成的sql语句
hibernate.show_sql=true
#格式化生成的sql语句
hibernate.format_sql=true
然后建立一个DbProperties实体类
@Component
@PropertySource("classpath:db.properties")
@Data
public class DbProperties {
/**
* 数据连接驱动
*/
@Value("${db.driver}")
private String dbDriver;
/**
* 连接数据库的url
*/
@Value("${db.url}")
private String dbUrl;
/**
* 连接数据库的用户名
*/
@Value("${db.user}")
private String dbUser;
/**
* 连接数据库的密码
*/
@Value("${db.pwd}")
private String dbPwd;
/**
* 扫描包hibernate注解
*/
@Value("${hibernate.package.scan}")
private String packageScan;
/**
* 数据库当前引用的引擎
*/
@Value("${hibernate.dialect}")
private String dialect;
/**
* 是否打印生成的sql语句
*/
@Value("${hibernate.show_sql}")
private boolean showSql;
/**
* 格式化生成的sql语句
*/
@Value("${hibernate.format_sql}")
private boolean formatSql;
}
然后创建中央配置
/**spring 中央配置注解*/
@Configuration
/**spring注解扫描路径*/
@ComponentScan(basePackages = "com.lovo")
/**启用AspectJ库*/
@EnableAspectJAutoProxy(proxyTargetClass = true)
/**启用springDateAPI JPA*/
@EnableJpaRepositories(basePackages = "com.lovo.dao")
/**启用事务管理*/
@EnableTransactionManagement
/**
* @title 中央配置类
* @author: chanQ
* @date: 2020/11/18 10:25
*/
public class ApplicationConfig {
/**
* 给数据源添加连接那个数据库信息
*
* @param dbProperties 数据库对象
* @return 数据源
*/
@Bean
public DataSource dataSource(DbProperties dbProperties) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(dbProperties.getDbUrl());
dataSource.setDriverClassName(dbProperties.getDbDriver());
dataSource.setUsername(dbProperties.getDbUser());
dataSource.setPassword(dbProperties.getDbPwd());
return dataSource;
}
/**
* 创建hibernate适配器
*
* @return hibernate适配器
*/
@Bean
public HibernateJpaVendorAdapter hibernateJpaVendorAdapter() {
return new HibernateJpaVendorAdapter();
}
/**
* 根据数据源和适配器还有数据库对象生成一个本地容器实体管理器工厂对象
*
* @param dataSource 数据源
* @param hibernateJpaVendorAdapter 适配器
* @param propertiesConfig 数据库对象
* @return 本地容器实体管理器工厂对象
*/
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, JpaVendorAdapter hibernateJpaVendorAdapter, DbProperties propertiesConfig) {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
/**设置本地容器管理器工厂的数据源*/
entityManagerFactoryBean.setDataSource(dataSource);
entityManagerFactoryBean.setJpaVendorAdapter(hibernateJpaVendorAdapter);
entityManagerFactoryBean.setPackagesToScan(propertiesConfig.getPackageScan());
Properties prop = new Properties();
prop.setProperty("hibernate.dialect", propertiesConfig.getDialect());
prop.setProperty("hibernate.show_sql", propertiesConfig.isShowSql() + "");
prop.setProperty("hibernate.format_sql", propertiesConfig.isFormatSql() + "");
entityManagerFactoryBean.setJpaProperties(prop);
return entityManagerFactoryBean;
}
/**
* 事务管理器
*
* @param dataSource 数据源
* @return 事务管理器
*/
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
/**设置管理事务的数据源*/
transactionManager.setDataSource(dataSource);
return transactionManager;
}