Boot项目原配Mysql数据库 。业务需要加上sqlserver数据库 网上看了两天 趟了不少坑。
其实网上帖子挺全的,我遇到的问题没有太多相关介绍。现在搞好后分享给大家,自己也做个记录。
1.首先 依赖配置
按需配置重点是数据库jar包跟bootjar包。版本无需考虑
<!-- 数据库 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.14</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- jfreechart -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.19</version>
<exclusions>
<exclusion>
<artifactId>xml-apis</artifactId>
<groupId>xml-apis</groupId>
</exclusion>
<exclusion>
<artifactId>bcprov-jdk14</artifactId>
<groupId>bouncycastle</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<!-- JWT -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
<!-- GDS Engine pool -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- JSON -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!-- for pdf start -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
<version>5.4.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.3</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<!-- for pdf end -->
<!-- used by swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- used by kettle -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.2</version>
</dependency>
<!-- used by drools -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>7.16.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>7.16.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-templates</artifactId>
<version>7.16.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>7.16.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-spring</artifactId>
<version>7.16.0.Final</version>
</dependency>
<!--访问静态jsp页面 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
</dependency>
<!-- used by ConfigurationProperties -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
上面是pom (我懒了,不想摘出来。说实话我们单一项目boot 依赖我都没动,手动加了个sqlserver数据库jar包,其他的都没改)
2.yml配置
spring:
datasource:
test1:
jdbc-url: jdbc:mysql://192.168.0.150:3306/gdsdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
username: root
password: ***
driver-class-name: com.mysql.cj.jdbc.Driver
test2:
jdbc-url: jdbc:sqlserver://192.168.0.150:1433;DatabaseName=gdsdb
username: sa
password: ***
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
我这里使用的是yml 不管是yml和另外一直格式都可以。格式不一样而已
介绍: spring:datasource 就不讲了
1. test1 test2 是自定义名称,可以更换
2.数据库路径 名称必须是 jdbc-url 不是这个会报错
3. 类型 boot2.0以后 driver-class-name
3.启动类
//@EnableScheduling
//@SpringBootApplication(exclude={DataSourceAutoConfiguration.class},scanBasePackages = {"com.XXX.XXX","com.XXX.XXX","com.XXX.XXX"})
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class Gds2KApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Gds2KApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Gds2KApplication.class);
}
}
这里要说明一下@EnableScheduling 是定时器相关注解,但是下面有配置取消Boot自动配置 所以会有出入。因为我们目前项目中没用到定时器。所以暂时注掉了,我准备以后有需要再研究怎么开启。
@SpringBootApplication
- 有scanBasePackages 就注掉。 我这边原本同事加上了 。我测这个发现冲突。注释掉后测试好像没问题
- exclude={DataSourceAutoConfiguration.class} 要加上这句,作用是取消Boot自动配置。使用咱们自己配置的信息。
- @MapperScan(basePackages= 这个注解 删掉吧 。因为在那两个文件里面有加,这个位置就不用了。
4.自主配置 文件
在controller同级加个dataconfig(名字可更换)
把这两个文件直接粘进去(我附带文件里面有demo 可直接下载) 因为我是两个数据库。所以两个文件。如果配置多个数据库 可以多配置文件。里面内容是一样的。下面是需要修改的内容
讲解:
1.红框1的位置。是你数据库mapper包的路径
2.红框2的位置。是你yml文件配置的名称
3.里面有个依赖引错了。把上面import删了 再引个boot的就行。
到这里就完成了,可以启动尝试
遇到问题 再缕一缕文章 看看是哪里漏了。实在找不到错误留言给我
有两个都遇到的问题
Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured
可以看我这篇文章 文章链接