Spring Boot 集成Mybaits 有两种方式,一是Spring Boot整合包实现的(MyBatis-Spring-Boot-Starter),另一种是自定义实现的 个人比较喜欢使用自定实现的方式,因为可以控制Mybaits的各种配置
第一种方式
1.目录
2.pom.xml依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<mybatis-spring-boot.version>1.2.0</mybatis-spring-boot.version>
<mysql-connector.version>5.1.39</mysql-connector.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>${mybatis-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
3.application.properties文件的配置
spring.servlet-path=*.do
server.port=8088
spring.mvc.view.prefix=/page/
spring.mvc.view.suffix=.jsp
spring.datasource.url=数据库地址
spring.datasource.username=数据库账号
spring.datasource.password=数据库密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#扫描的实体bean
mybatis.typeAliasesPackage=com.springboot.dome.bean
#mapper.xml的位置
mybatis.mapperLocations=classpath:mapper/*.xml
4.Spring Boot 的 Application 启动类
@MapperScan("com.springboot.dome.dao")//DAO接口路径
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
二、第二种方式
1.目录和前面一样
2.pom.xml依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<mybatis-spring-boot.version>1.2.0</mybatis-spring-boot.version>
<mysql-connector.version>5.1.39</mysql-connector.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>${mybatis-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
3.数据源配置
@Configuration
@ComponentScan("com.springboot.dome.service")
@PropertySource(value={"classpath:jdbc.properties"})
public class DataSourceConfig {
@Value("${c3p0.driverClass}")
private String driverClass;
@Value("${c3p0.jdbcUrl}")
private String jdbcUrl;
@Value("${c3p0.user}")
private String user;
@Value("${c3p0.password}")
private String password;
@Bean
public DataSource dataSource(){
try {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driverClass);
dataSource.setJdbcUrl(jdbcUrl);
dataSource.setUser(user);
dataSource.setPassword(password);
dataSource.setMaxPoolSize(30);
dataSource.setMinPoolSize(20);
dataSource.setAutoCommitOnClose(false);
dataSource.setCheckoutTimeout(2000);
dataSource.setAcquireIncrement(2);
return dataSource;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
4.Mybaits配置
package com.springboot.dome.mybait;
import javax.sql.DataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
@Configuration
@AutoConfigureAfter(DataSourceConfig.class) //保证在MyBatisConfig实例化之后再实例化该类
public class MyBatisConfig {
@Bean
@ConditionalOnMissingBean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
try {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource mybatisConfigXml = resolver.getResource("classpath:mybait-config.xml");
sessionFactoryBean.setConfigLocation(mybatisConfigXml);
sessionFactoryBean.setTypeAliasesPackage("com.springboot.dome.bean");
Resource[] mapperConfigXml = resolver.getResources("classpath:mapper1/*.xml");
sessionFactoryBean.setMapperLocations(mapperConfigXml);
System.out.println("aaa");
return sessionFactoryBean;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
5. Mapper 配置
@Configuration
@AutoConfigureAfter(MyBatisConfig.class) //保证在MyBatisConfig实例化之后再实例化该类
public class MapperScannerConfig {
// mapper接口的扫描器
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
mapperScannerConfigurer.setBasePackage("com.springboot.dome.dao");
System.out.println("bbb");
return mapperScannerConfigurer;
}
}
6.Spring Boot 的 Application 启动类
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
注:这边具体的DAO实现方法、业务层方法以及控制层方法就不写了,相信对于熟悉Spring SpringMVC Mybaits的你应该是轻而易举的