1、Mybatis系列:databaseIdProvider
databaseIdProvider支持多数据厂商的语句
DatabaseIdProvider作用就是得到数据库厂商的标识(驱动),mybatis就能根据数据库厂商标识来执行不同的sql,
如:MySQL,Oracle,SQL Server,xxx等
1、整合mybatis
<!-- 数据源信息 -->
<!--db库-->
<bean id="authDataSource" class="com.zaxxer.hikari.HikariDataSource" init-method="getConnection"
destroy-method="close" primary="true">
<!-- 基本属性 url、user、password -->
<property name="jdbcUrl" value="${spring.datasource.url}"/>
<property name="username" value="${spring.datasource.username}"/>
<property name="password" value="${spring.datasource.password}"/>
<property name="driverClassName" value="${spring.datasource.driver-class-name}"/>
<!--连接池维护最小空闲连接数-->
<property name="minimumIdle" value="${spring.datasource.hikari.minimum-idle}"/>
<!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) -->
<property name="maximumPoolSize" value="${spring.datasource.hikari.maximum-pool-size}"/>
<!--连接池用户定义名称-->
<property name="poolName" value="${spring.datasource.hikari.pool-name}"/>
<!--测试连接-->
<property name="connectionTestQuery" value="${spring.datasource.hikari.connection-test-query}"/>
<!-- 连接将被测试活动的最大时间量 -->
<property name="validationTimeout" value="${spring.datasource.hikari.validation-timeout}"/>
<!-- 从池中获取的连接是否默认处于只读模式,连接只读数据库时配置为true, 保证安全 -->
<property name="readOnly" value="${spring.datasource.hikari.read-only}"/>
<!--自动提交从池中返回的连接-->
<property name="autoCommit" value="${spring.datasource.hikari.auto-commit}"/>
<!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->
<property name="connectionTimeout" value="${spring.datasource.hikari.connection-timeout}"/>
<!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
<property name="idleTimeout" value="${spring.datasource.hikari.idle-timeout}"/>
<!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL
wait_timeout参数(show variables like '%timeout%';) -->
<property name="maxLifetime" value="${spring.datasource.hikari.max-lifetime}"/>
</bean>
<bean id="authSqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"
primary="true">
<property name="dataSource" ref="authDataSource"/>
<property name="configLocation" value="classpath:sql/mybatis-config.xml"/>
<property name="typeAliasesPackage" value="com.lee.auth.entity,com.lee.common.entity"/>
<property name="mapperLocations">
<array>
<value>classpath*:sql/authMapper/*Mapper.xml</value>
</array>
</property>
<!--分页插件-->
<property name="plugins">
<array>
<!--<bean class="com.lee.common.interceptor.SqlInterceptor"></bean>-->
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=${paging.pagehelper.helperDialect}
reasonable=${paging.pagehelper.reasonable}
supportMethodsArguments=${paging.pagehelper.supportMethodsArguments}
params=${paging.pagehelper.params}
page-size-zero=${paging.pagehelper.page-size-zero}
</value>
</property>
</bean>
</array>
</property>
<!--支持多数据库厂商的语句-->
<property name="databaseIdProvider" ref="databaseIdProvider"/>
</bean>
<!--支持多数据库厂商的语句-->
<!--VendorDatabaseIdProvider作用就是得到数据库厂商的标识(驱动),mybatis就能根据数据库厂商标识来执行不同的sql-->
<!--
使用<select id="getEmployeeById" resultType="employee" databaseId="mysql">
<select id="getEmployeeById" resultType="employee" databaseId="oracle">
-->
<bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
<property name="properties">
<props>
<prop key="MySQL">mysql</prop>
<prop key="Oracle">oracle</prop>
<prop key="SQL Server">sqlserver</prop>
<prop key="DB2">db2</prop>
<prop key="PostgreSQL">postgresql</prop>
</props>
</property>
</bean>
2、Mapper
<mapper namespace="com.mi.dao.EmployeeMapper">
<!--id 为接口的方法名-->
<select id="getEmployeeById" resultType="employee" databaseId="mysql">
select * from employee where id = #{id}
</select>
<select id="getEmployeeById" resultType="employee" databaseId="oracle">
select EMPNO id,ENAME lastName from emp where empno = #{id}
</select>
</mapper>