1、加载SpringBoot
SpringBoot可以在pom文件中使用继承parent的方式,这种方式简便易用。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/>
</parent>
但是这种方式parent就只能有一个,如果项目需要引进其他的parent,就不能用这种方式。可以参考以下的方式。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
departmentManagment,表示申明,并不会把jar包包进来。需要用到具体的依赖才会加载进来。
2、SpringBoot 数据库连接池
SpringFrameWork JDBC 默认使用的是HikariCP连接池,这个是默认的。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
如果想换成其他的链接池可以用一下的方式,如使用alibaba的druid
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<artifactId>HikariCP</artifactId>
<groupId>com.zaxxer</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
但这只限于使用spring-boot-starter-jdbc,如果只是使用spring-jdbc那就不需要。spring-jdbc内部自动化配置连接池,会使用到druid。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.3.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
3、自定义SQL的错误码
各个厂商SQL出错码是各不相同的,Spring整合了各个厂商的错误码,定义在sql-error-codes.xml文件中。根据spring-jdbc的SQLErrorCodesFactory中的定义。先导入Spring集成的错误码xml文件(org/springframework/jdbc/support/sql-error-codes.xml),然后再导入项目定义在 the root of the class path 的 sql-error-codes.xml。自定义的codes会覆盖Spring提供的codes中bean id相同的配置。
如下是自定义sql-error-codes.xml的文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="H2" class="org.springframework.jdbc.support.SQLErrorCodes">
<property name="badSqlGrammarCodes">
<value>42000,42001,42101,42102,42111,42112,42121,42122,42132</value>
</property>
<property name="duplicateKeyCodes">
<value>23001,23505</value>
</property>
<property name="dataIntegrityViolationCodes">
<value>22001,22003,22012,22018,22025,23000,23002,23003,23502,23503,23506,23507,23513</value>
</property>
<property name="dataAccessResourceFailureCodes">
<value>90046,90100,90117,90121,90126</value>
</property>
<property name="cannotAcquireLockCodes">
<value>50200</value>
</property>
<property name="customTranslations">
<bean class="org.springframework.jdbc.support.CustomSQLErrorCodesTranslation">
<property name="errorCodes" value="23001,23505" />
<property name="exceptionClass"
value="com.demo.errorcodedemo.CustomDuplicatedKeyException" />
</bean>
</property>
</bean>
</beans>