相比spring和springmvc,springboot在兩者中集合了相對強大的功能身腻,提供了大量整合各種技術(shù)的方法,整合起來非常的便捷,接下來就是整合mybatis的實現(xiàn)過程鸵贬。
引入依賴POM文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zxz.boot</groupId>
<artifactId>springboot_mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.4.RELEASE</version>
</parent>
<dependencies>
<!--Spring Boot-->
<!--支持 Web 應(yīng)用開發(fā),包含 Tomcat 和 spring-mvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--支持使用 JDBC 訪問數(shù)據(jù)庫-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--添加適用于生產(chǎn)環(huán)境的功能脖捻,如性能指標(biāo)和監(jiān)測等功能阔逼。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- springboot的熱部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!--Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!--Mysql / DataSource-->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
<!--Json Support-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.43</version>
</dependency>
<!--Swagger support-->
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>0.9.5</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<!-- 使用插件來運行springboot(運行springboot的方式有2種:main方法運行或使用下面的插件運行) -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestone</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestone</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>
程序入口注解解析
先介紹一下在入口類中需要用到的常用注解:
@SpringBootApplication:這是一個組合注解,聚合了多個注解的功能地沮,包含:排除自啟動項嗜浮、排除自啟動項的beanname、掃描包和掃描類摩疑。
@EnableAutoConfiguration:這個注解是用來啟動springboot中的自動配置項目危融,必須的加上,否則無法正常使用springboot默認(rèn)配置的配置項目雷袋。
@ComponentScan :掃描controller層和service層中所有類上的注解(這個注解可以不加吉殃,因為組合注解@SpringBootApplication已經(jīng)可以掃描)。
@MapperScan("com.zxz.mapper") :管理mybatis中所有mapper接口的代理對象。
@EnableTransactionManagement(proxyTargetClass = true):開啟事務(wù)管理的注解蛋勺。
如:
/**
* 整個項目的入口
*/
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
@MapperScan("com.zxz.mapper")
@EnableTransactionManagement(proxyTargetClass = true)
public class Application {
private static Logger logger = Logger.getLogger(Application.class);
//啟動類
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
logger.info("======spring boot start success ===========");
}
}
配置連接池
首先得配置好連接數(shù)據(jù)庫的一些參數(shù)瓦灶,之前我們是通常配置在某資源文件中,然后通過spring的配置文件進(jìn)行加載到的迫卢,這里我們也需要將連接參數(shù)配置到SpringBoot規(guī)定的文件application.properties中倚搬,最后在入口類中通過注解加載即可。
application.properties配置內(nèi)容:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/zxz
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
logging.level.com.zxz.mapper=debug
在入口類中通過注解加載:
@Bean
@ConfigurationProperties(prefix = "spring.datasource") //作用:加載application.properties文件中 的數(shù)據(jù)庫連接參數(shù)
public DataSource dataSource(){
return new DataSource();
}
事務(wù)管理器配置:
//配置transactionManager
@Bean
public PlatformTransactionManager transactionManager() throws SQLException{
return new DataSourceTransactionManager(druidDataSource());
}
配置mapper.xml文件的映射
和mybatis的整合乾蛤,免不了mapper.xml的加載和映射每界,springboot提供了專門的方式來加載它們,對于mapper.xml文件可以使用之前學(xué)習(xí)寫好的家卖,這里就不提供了眨层。
//提供sqlSession
@Bean
public SqlSessionFactory sqlSessionFactory(PageHelper pageHelper)throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(druidDataSource());
sqlSessionFactoryBean.setPlugins(new Interceptor[] {pageHelper});
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis/*.xml"));
return sqlSessionFactoryBean.getObject();
}
好了,到這里springboot整合mybatis就搞定了上荡,雖然很多詳細(xì)沒有寫趴樱,但起碼知道代碼是怎么整合實現(xiàn)的。