spring-boot和mybatis的整合
在idea里创建一个spring-boot工程 选依赖的时候把web里的web勾上,sql里的mysql和mybatis也勾上 ,这样就会自动帮我们生成依赖 在其中我们需要给mysql的依赖加上版本,不然它会自动去用最新版的(目前mysql最新版已经到了八以上了),我们现在用五点几的就好,有错误也能在网上找到解决方法,采用最新版的如果出现错误,那么解决起来也麻烦
然后在加上druid依赖, 如果是要用到多数据源,就得用 druid-spring-boot-starter
然后在build里设置下配置文件的扫描路径,pom.xml具体依赖如下
<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.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
这也是默认的扫描前缀
因为我们这里采用两个数据源,所以为了区别两个数据源我们分别给他们加上了
spring.datasource.**one.**username=root
spring.datasource.**two.**username=root
但是我们把前缀改了,那么spring-boot也就找不到默认的前缀,那么这两个数据源的配置信息也就不会去扫描
所以我们得自己去写个配置类,来获取和区别这两个数据源 DatasourceConfig.java
@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配置类,内容基本一样,但是用于区分两个数据源 MybatisConfig1
@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未找到还是啥的,但是还是注入进来了
两个表的数据也都查询出来了
(adsbygoogle = window.adsbygoogle || []).push({});- Spring Boot整合mybatis使用
- springboot整合mybatis中的问题及出现的一些问题小结
- springboot与mybatis整合操作数据库
- springBoot与MyBatis整合示例
- spring boot整合mybatis+mybatis-plus
- Spring Boot2.0 整合mybatis、分页插件、druid
- idea整合 spring boot jsp mybatis
- Spring boot---整合mybatis (oracle)
- springBoot 整合mybatis
- springboot(3)整合mybatis
- spring boot 与mybatis整合,type-aliases-package、type-handlers-package等配置不起作用,导致类加载失败
- SpringBoot与Mybatis整合
- SpringBoot整合Mybatis多数据源
- Spring Boot 整合 Mybatis 和 MySQL
- 开发框架整合与搭建:spring boot+mybatis+jedis
- spring Boot整合mybatis
- 整合springboot-mybatis提供RESTful风格SaaS服务
- 2.SpringBoot系列-SpringBoot整合MyBatis
- Springboot整合mybatis并配置redis缓存
- Spring boot+Shiro+ spring MVC+swagger UI +Mybatis+mysql+Vue +Element UI 之四 vue 整合Element UI