springboot整合mybatis

相比spring和springmvc,springboot在两者中集合了相对强大的功能,提供了大量整合各种技术的方法,整合起来非常的便捷,接下来就是整合mybatis的实现过程。

引入依赖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 应用开发,包含 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 访问数据库-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!--添加适用于生产环境的功能,如性能指标和监测等功能。 -->
    <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默认配置的配置项目。
@ComponentScan :扫描controller层和service层中所有类上的注解(这个注解可以不加,因为组合注解@SpringBootApplication已经可以扫描)。
@MapperScan("com.zxz.mapper") :管理mybatis中所有mapper接口的代理对象。
@EnableTransactionManagement(proxyTargetClass = true):开启事务管理的注解。
如:

 /**
 * 整个项目的入口
 */
@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 ===========");
    }
}

配置连接池

首先得配置好连接数据库的一些参数,之前我们是通常配置在某资源文件中,然后通过spring的配置文件进行加载到的,这里我们也需要将连接参数配置到SpringBoot规定的文件application.properties中,最后在入口类中通过注解加载即可。
application.properties配置内容:

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文件中    的数据库连接参数
public DataSource dataSource(){
    return new DataSource();
}

事务管理器配置:

 //配置transactionManager
    @Bean
  public PlatformTransactionManager transactionManager() throws SQLException{
       return new DataSourceTransactionManager(druidDataSource());
   }

配置mapper.xml文件的映射

和mybatis的整合,免不了mapper.xml的加载和映射,springboot提供了专门的方式来加载它们,对于mapper.xml文件可以使用之前学习写好的,这里就不提供了。

  //提供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就搞定了,虽然很多详细没有写,但起码知道代码是怎么整合实现的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容