springboot mybatis 多数据源配置技术
关于 Java 技术,其实 Java 技术不需要有创造力的人,只需要按部就班,死记硬背就可以。Java 技术已经被大型组织和集团给垄断了,大家用的技术大都是 Oracle,Apache 这些组织的代码,所有的东西都已经实现,所以不需要创造力。有些科学家也会吐槽,说 Java 技术是传教性质的,一旦进入,很难出来。
Java 技术缺少的是什么,是傻逼教程,说好听点,就是手把手教程,怎么建立文件夹,怎么创建文件,怎么复制代码。一个程序员熟练了 Java 技术,也就是熟练了这些,真正框架内部的东西是不可能熟练的,因为量太大,人生苦短。
开始手把手教程,希望帮助到大家。
maven 依赖配置:
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.2</version> </dependency>
mybatis config:
package com.lmlphp.nb.config; import com.alibaba.druid.pool.DruidDataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = {"com.lmlphp.nb.mybatis.bar.mapper", "com.lmlphp.nb.mybatis.bar.model"}, sqlSessionFactoryRef = "barSqlSessionFactory") public class MybatisBar { @Value("${bar.datasource.url}") private String url; @Value("${bar.datasource.username}") private String user; @Value("${bar.datasource.password}") private String password; @Bean(name = "barDataSource") public DataSource barDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl(url); dataSource.setUsername(user); dataSource.setPassword(password); return dataSource; } @Bean(name = "masterTransactionManager") public DataSourceTransactionManager masterTransactionManager() { return new DataSourceTransactionManager(barDataSource()); } @Bean(name = "barSqlSessionFactory") public SqlSessionFactory barSqlSessionFactory(@Qualifier("barDataSource") DataSource barDataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(barDataSource); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mybatis/bar/mapper/*.xml")); return sessionFactory.getObject(); } }
调用示例:
TestExample testExample = new TestExample(); Test test = testMapper.selectByPrimaryKey(1);
后面就是如何使用 mybatis generator。配置文件如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <classPathEntry location="/path/to/mysql-connector-java-5.1.41.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.1.122:3306/dbName?useSSL=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true" userId="root" password=""> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <javaModelGenerator targetPackage="com.lmlphp.nb.mybatis.bar.model" targetProject="E:\code\projectName\src\main\java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="mybatis.bar.mapper" targetProject="E:\code\projectName\src\main\resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.lmlphp.nb.mybatis.bar.mapper" targetProject="E:\code\projectName\src\main\java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <table schema="" tableName="test" domainObjectName="Test"> <property name="useActualColumnNames" value="true"/> <generatedKey column="ID" sqlStatement="MySql" identity="true" /> <!--<columnOverride column="DATE_FIELD" property="startDate" /> <ignoreColumn column="FRED" /> <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />--> </table> </context> </generatorConfiguration>
生成代码示例:
java -jar mybatis-generator-core-1.3.5.jar -configfile src\main\resources\mybatis\MBG-bar.xml
SpringBoot 是用来做微服务的,原则上不应该配置多数据源。
相关文章
暂无