springboot + mybatis multi-database support

1. placed application.yml

mybatis:
mapper-locations: classpath:/mybatis/mapping/*.xml
configuration:
map-underscore-to-camel-case: true #开启驼峰命名
database-id: ${database.type}
type-aliases-package:
com.mtwl.entity

Note that the configuration of database-id
2. DatabaseIdProvider disposed in the springboot
@Bean
public DatabaseIdProvider getDatabaseIdProvider(){
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.setProperty("Oracle","oracle");
properties.setProperty("MySQL","mysql");
properties.setProperty("DB2","db2");
properties.setProperty("Derby","derby");
properties.setProperty("H2","h2");
properties.setProperty("HSQL","hsql");
properties.setProperty("Informix","informix");
properties.setProperty("In the Microsoft SQL Server", "sqlserver");
properties.setProperty ( "PostgreSQL", "PostgreSQL");
properties.setProperty ( "Sybase", "Sybase");
properties.setProperty ( "Hana", "hana");
databaseIdProvider.setProperties (Properties);
return databaseIdProvider;
}
Note: the correct version of the database
3. in mapper.xml in
method 1
<select id="selectTop" resultType="java.util.Map" parameterType="java.lang.Integer" databaseId="sqlserver">
select top(#{value})*
from kcjs
</select>

<select id="selectTop" resultType="java.util.Map" parameterType="java.lang.Integer" databaseId="mysql">
select *
from kcjs limit 0,#{value}
</select>



方法2
<select id="selectTop" resultType="java.util.Map" parameterType="java.lang.Integer">
select
<if test="_databaseId==sqlserver">
top(#{value})*
from kcjs
</if>
<if test="_databaseId==mysql">
*
from kcjs limit 0,#{value}
</if>

</select>
 

Guess you like

Origin www.cnblogs.com/binkai/p/12119283.html