SpringBoot整合JDBC之DataSourceInitializer的原理和作用

更新时间:2023-05-24 02:47:16 阅读: 评论:0

SpringBoot整合JDBC之DataSourceInitializer的原理和作⽤
1.1作⽤
1:建表语句 2:运⾏插⼊的sql语句
1.2源码解读
只要两个条件符合就执⾏,DataSourceInitializationMode属性,看起来是通过配置⽂件获取的
private boolean isEnabled() {
DataSourceInitializationMode mode = InitializationMode();
if (mode == DataSourceInitializationMode.NEVER) {
return fal;
} el {
return mode != DataSourceInitializationMode.EMBEDDED || this.isEmbedded();
}
}
private boolean isEmbedded() {
try {
return EmbeddedDatabaConnection.isEmbedded(this.dataSource);
} catch (Exception var2) {
logger.debug("Could not determine if datasource is embedded", var2);
return fal;
}
}
从指定的路径获取脚本
private List<Resource>getScripts(String propertyName, List<String> resources, String fallback){
if(resources != null){
Resources(propertyName, resources,true);
}el{
String platform =Platform();
List<String> fallbackResources =new ArrayList();
fallbackResources.add("classpath*:"+ fallback +"-"+ platform +".sql");
fallbackResources.add("classpath*:"+ fallback +".sql");
Resources(propertyName, fallbackResources,fal);
}
}
初始化Schema.,其第三个参数为data
void initSchema(){
List<Resource> scripts =Scripts("spring.datasource.data",Data(),"data");
if(!scripts.isEmpty()){
if(!this.isEnabled()){
logger.debug("Initialization disabled (not running data scripts)");
return;
}
String urname =DataUrname();
String password =DataPassword();
this.runScripts(scripts, urname, password);
}
}
进⾏判断,其中第三个参数为schema
boolean createSchema(){
List<Resource> scripts =Scripts("spring.datasource.schema",Schema(),"schema");
if(!scripts.isEmpty()){
清闲的意思
if(!this.isEnabled()){
logger.debug("Initialization disabled (not running DDL scripts)");
return fal;
}
中秋节快乐的英语
String urname =SchemaUrname();
String password =SchemaPassword();
this.runScripts(scripts, urname, password);
英文顿号}
return!scripts.isEmpty();
}
从getScripts(....)可知,其中其默认的⽂件路径为
在2个默认路径下实现sql的建表
classpath*:schema-all.sql
或者 classpath*:schema.sql
List<String> fallbackResources = new ArrayList();
fallbackResources.add("classpath*:" + fallback + "-" + platform + ".sql");
fallbackResources.add("classpath*:" + fallback + ".sql");
测试:在路径下新建sql⽂件
sql⽂件:建⽴⼀张普通表.(已实现数据库的连接)
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for departmentvega
-- ----------------------------
DROP TABLE IF EXISTS`department`;
CREATE TABLE`department`(
`id`int(11)NOT NULL AUTO_INCREMENT,
imperative
`departmentName`varchar(255)DEFAULT NULL,
PRIMARY KEY(`id`)
)ENGINE=InnoDB AUTO_INCREMENT=1DEFAULT CHARSET=utf8;
1.1从databa中可以看出已经⽣成了department表注!
2.0必须在配置⽂件中加⼊initialization-mode: always,不然⽆法⽣效.
![在这⾥插⼊图⽚描述](/20200801232005573.PNG)
1.2也可以通过schema指定指定的路径⽽不使⽤其默认的⽂件路径[List]
spring:
i potato you为什么是我喜欢你的意思
datasource:
barkhaun
urname: root
password:12xxsd
url: jdbc:mysql://localhost:xxxx/student?uSSL=fal&urUnicode=true&characterEncoding=utf-8&rverTimezone=UTC    driver-class-name: sql.jdbc.Driver
initialization-mode: always
schema:
2017高考数学答案
- classpath:department.sql
2:同理也可以操作实⾏
从JdbcTemplateConfiguration中看出springboot已⾃动帮我们配置了jdbctemplate,我们可以直接使⽤即可.
@RestController
public class ControllerTest {
@Autowired
JdbcTemplate jdbcTemplate;
@RequestMapping("/hello")
public Map<String, Object>hello(){
List<Map<String, Object>> maps = jdbcTemplate.queryForList("lect *from account");
System.out.println(maps);
(0);//返回第⼀条ups是什么东西
}
}
总结芝加哥大学商学院
1:**在2个默认路径下实现sql的建表**
classpath*:schema-all.sql
或者 classpath*:schema.sql
2必须配置initialization-mode: always
3可修改其访问⽂件名:schema:
- classpath:department.sql
4.springboot已⾃动配置Template可直接使⽤.进⾏执⾏sql

本文发布于:2023-05-24 02:47:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/752984.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:Fall Forward
标签:路径   实现   默认   指定   配置
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图