在springboot中,默认的JPA实现是Hibernate,JPA是Java Persistence API的简称,中文名Java持久层API
org.springframework.boot spring-boot-starter-data-jpa
我们其实是可以不用使用任何配置数据库的情况下运行spring-boot工程的
因为h2是内嵌的数据库,而且数据源可以配置为hqldb 或者Derby,
如果想要配置其他数据源就要用到配置自定义数据源的方法了
####################################################
配置自定义数据源:
使用Mysql数据源
mysql mysql-connector-java org.springframework.boot spring-boot-starter-jdbc
配置依赖之后,需要配置数据库相关的信息才能连接到数据库
注意:默认情况下,springboot会使用绑定的Tomcat的数据源,
spring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB spring.datasource.username=root spring.datasource.password=1997 #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #最大等待连接中的数量,设置为0为没有限制 spring.datasource.tomcat.max-idle=10 #最大活动连接数 spring.datasource.tomcat.max-active=50 #最大等待毫秒数,单位ms,超过时间会出错误 spring.datasource.tomcat.max-wait=10000 #数据库连接池初始化连接数 spring.datasource.tomcat.initial-size=6
这样就完成了springboot的数据源配置,
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
注释掉驱动类的配置,springboot会尽可能的去判断数据什么类型,然后根据默认的情况
去匹配驱动类,
上面还使用了自带的数据库连接池
####################################################
使用第三方的数据源,就是连接数据库的工具,可以产生数据源
例子:配置DBCP2数据源
org.apache.commons commons-dbcp2 2.7.0
spring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB spring.datasource.username=root spring.datasource.password=1997 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ##最大等待连接中的数量,设置为0为没有限制 #spring.datasource.tomcat.max-idle=10 ##最大活动连接数 #spring.datasource.tomcat.max-active=50 ##最大等待毫秒数,单位ms,超过时间会出错误 #spring.datasource.tomcat.max-wait=10000 ##数据库连接池初始化连接数 #spring.datasource.tomcat.initial-size=6 ##使用第三方数据源 dbcp数据源,spring.datasource.type指定数据源 spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource spring.datasource.dbcp2.max-idle=10 spring.datasource.dbcp2.max-total=40 spring.datasource.dbcp2.max-wait-millis=10000 spring.datasource.dbcp2.initial-size=6
通过spring.datasource.type 属性指定数据库连接池的类型
spring.datasource.dbcp2.* 去配置连接池信息,
##############################
利用bean的生命周期查看使用的数据源
@Component public class DatasourceShow implements ApplicationContextAware { ApplicationContext applicationContext = null; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; DataSource dataSource = applicationContext.getBean(DataSource.class); System.out.println("#####################################"); System.out.println(dataSource); System.out.println("#####################################"); } }
配置为dcbp数据源时
因为实现了接口ApplicationContextAware的方法setApplicationContext()
生命周期可以知道,初始化的时候就会被调用了,所以获取IOC容器上下文
通过getBean方法得到数据库连接词,最后打出全限定类名
前期准备
使用JdbcTemplate操作数据库
在配置数据源后, Spring Boot 通过其自动配置机制配置好了JdbcTemplate, JdbcTemplate 模板是spring框架提供的
工作中还是用myBatis比较多