第一步:
排除数据源的自动配置类:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
第二步:
定义好两个数据源的配置文件
#mysql数据库配置 mysql.spring.datasource.jdbc-url =jdbc:mysql://localhost/ts?characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2b8 mysql.spring.datasource.username=root mysql.spring.datasource.password=root #sqlite数据库的配置 sqlite.spring.datasource.url = jdbc:sqlite:C:/Users/haonan/Desktop/i-workspace/ss/src/main/resources/idatasrv.db sqlite.spring.datasource.driver-class-name = org.sqlite.JDBC sqlite.spring.datasource.username = sqlite.spring.datasource.password = #mybatis mybatis.configuration.map-underscore-to-camel-case=true logging.level.com.tl.ss.mapper=debug
第三步:
定义数据源Bean,注意配置文件的key要与数据源实例的属性一一对应,否则,肯定失败
@Bean(name = "sqliteDataSource") @Qualifier(value = "sqliteDataSource") @ConfigurationProperties(prefix = "sqlite.spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().type(SQLiteDataSource.class).build(); } @Bean(name = "mysqlDataSource") @Qualifier(value = "mysqlDataSource") @ConfigurationProperties(prefix = "mysql.spring.datasource") public DataSource mysqlDataSource() { return DataSourceBuilder.create().build(); }
第四步:
定义执行sql或者获取mapper的sqlSessionTemplate/或者sqlSessionFactory
mybatis的基本原理是通过sqlSession去执行sql语句操作数据库,或者通过sqlSession获取mapper来操作数据库[个人理解,可能不对]另外,模板构造一般需要Factory实例。
MySql使用:sqlSessionTemplate方式
Sqlite使用:sqlSessionFactory方式
代码1MySql:
@Configuration @MapperScan(basePackages = {"com.tl.ss.mapper.mysql"}, sqlSessionTemplateRef = "mysqlSqlSessionTemplate") public class MysqlSqlSessionTemplateConfig { @Bean(name = "mysqlSqlSessionFactory") public SqlSessionFactory testSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath*:mapper/mysql/*.xml")); return sessionFactoryBean.getObject(); } @Bean(name = "mysqlSqlSessionTemplate") public SqlSessionTemplate testSqlSessionTemplate( @Qualifier("mysqlSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }
代码2Sqlite:
@Configuration @MapperScan(basePackages = {"com.tl.ss.mapper.sqlite"}, sqlSessionFactoryRef = "sqliteSqlSessionFactory") public class SqliteSqlSessionFactoryConfig { @Bean(name = "sqliteSqlSessionFactory") public SqlSessionFactory testSqlSessionFactory(@Qualifier("sqliteDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath*:mapper/sqlite/*.xml")); return bean.getObject(); } }
第五步:
通过工具生成代码,可以开始干了。
其他:
代码示例:
补充:
org.apache.ibatis.session.Configuration conf = new org.apache.ibatis.session.Configuration(); conf.setMapUnderscoreToCamelCase(true);
把这个conf设置到sqlSessionFactoryBean实例,开启驼峰转换,当然这个方式并不优雅。