在idea裏建立一個spring-boot工程 選依賴的時候把web裏的web勾上,sql裏的mysql和mybatis也勾上 ,這樣就會自動幫咱們生成依賴 在其中咱們須要給mysql的依賴加上版本,否則它會自動去用最新版的(目前mysql最新版已經到了八以上了),咱們如今用五點幾的就好,有錯誤也能在網上找到解決方法,採用最新版的若是出現錯誤,那麼解決起來也麻煩java
而後在加上druid依賴, 若是是要用到多數據源,就得用 druid-spring-boot-startermysql
而後在build裏設置下配置文件的掃描路徑,pom.xml具體依賴以下web
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.liy</groupId> <artifactId>mybatisProject</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybatisProject</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>5.1.30</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>`
而後在application.properties配置文件中配置數據源信息(我這裏打算用兩個數據源)spring
spring.datasource.one.username=root spring.datasource.one.password=root spring.datasource.one.url=jdbc:mysql:///again spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.one.driver-class-name=com.mysql.jdbc.Driver spring.datasource.two.username=root spring.datasource.two.password=root spring.datasource.two.url=jdbc:mysql:///demo spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.two.driver-class-name=com.mysql.jdbc.Driver
若是隻是一個數據源 前綴是spring.datasource.username
這也是默認的掃描前綴sql
由於咱們這裏採用兩個數據源,因此爲了區別兩個數據源咱們分別給他們加上了 spring.datasource.**one.**username=root
數據庫
spring.datasource.**two.**username=root
springboot
可是咱們把前綴改了,那麼spring-boot也就找不到默認的前綴,那麼這兩個數據源的配置信息也就不會去掃描mybatis
因此咱們得本身去寫個配置類,來獲取和區別這兩個數據源 DatasourceConfig.javaapp
@Configuration public class DataSourceConfig { @Bean @ConfigurationProperties("spring.datasource.one") DataSource dsOne(){ return DruidDataSourceBuilder.create().build(); } @Bean @ConfigurationProperties("spring.datasource.two") DataSource dsTwo(){ return DruidDataSourceBuilder.create().build(); } }
而後得把數據源分別弄給咱們的mybatis配置類去 寫兩個mybatis配置類,內容基本同樣,可是用於區分兩個數據源 MybatisConfig1maven
@Configuration @MapperScan(basePackages = "com.liy.mapper",sqlSessionFactoryRef = "sqlSessionFactoryBean1", sqlSessionTemplateRef = "sqlSessionTemplate1") public class MyBatisConfig1 { @Resource(name = "dsOne") DataSource dsOne; @Bean SqlSessionFactory sqlSessionFactoryBean1(){ SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dsOne); SqlSessionFactory factory = null; try { factory = factoryBean.getObject(); } catch (Exception e) { e.printStackTrace(); } return factory; } @Bean SqlSessionTemplate sqlSessionTemplate1(){ return new SqlSessionTemplate(sqlSessionFactoryBean1()); } }
MybatisConfig1
@Configuration @MapperScan(basePackages = "com.liy.mapper2",sqlSessionFactoryRef = "sqlSessionFactoryBean2", sqlSessionTemplateRef = "sqlSessionTemplate2") public class MyBatisConfig2 { @Resource(name = "dsTwo") DataSource dsTwo; @Bean SqlSessionFactory sqlSessionFactoryBean2(){ SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dsTwo); SqlSessionFactory factory = null; try { factory = factoryBean.getObject(); } catch (Exception e) { e.printStackTrace(); } return factory; } @Bean SqlSessionTemplate sqlSessionTemplate2(){ return new SqlSessionTemplate(sqlSessionFactoryBean2()); } }
而後分別寫兩個mapper包裏對應的接口和映射文件
咱們就只測試一下,那就分別查詢下
UserMapper 普通的sql語句也能夠直接用註解來,不過不推薦
public interface UserMapper { //@Select("select * from user") public List<User> selectAll(); }
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.liy.mapper.UserMapper"> <select id="selectAll" resultType="com.liy.bean.User"> select * from user </select> </mapper>
另外一個mapper2的代碼也就不發了,也是基本和mapper裏的同樣
只是些路徑和數據庫查詢的表名不太同樣
記得寫個bean類接收 , 我找了兩個類似的表來查詢,全部就只用寫一個bean類來接收就行
setter和getter方法就省略了
public class User { private int id; private String name; private int age; private String address;
基本都準備好了,那麼就開始測試吧
直接在spring-boot工程自帶的測試類裏測試便可
@RunWith(SpringRunner.class) @SpringBootTest public class MybatisApplicationTests { @Autowired UserMapper um; @Autowired UserMapper2 um2; @Test public void contextLoads() { List<User> user = um.selectAll(); System.out.println(user); List<User> users = um2.selectAll(); System.out.println(users); } }
um 和 um2上應該都有紅色波浪線,只是springboot未找到仍是啥的,可是仍是注入進來了
兩個表的數據也都查詢出來了