SpringBoot学习(五)——整合MyBatis

来源:互联网 发布:找男妓的体验知乎 编辑:程序博客网 时间:2024/06/05 11:52

一.环境搭建

1.创建maven工程

  创建一个简单的maven工程,其中pom.xml配置如下:

<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.xin</groupId>    <artifactId>SpringBoot_ConnectDB</artifactId>    <version>0.0.1-SNAPSHOT</version>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencyManagement>        <!-- 如果父工程不是spring-boot-starter-parent则通过该方式引入SpringBoot的依赖 -->        <dependencies>            <dependency>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-dependencies</artifactId>                <version>1.5.2.RELEASE</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>    <dependencies>        <dependency>        <!-- SpringBoot的整合Web -->            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>        <!-- SpringBoot的整合jdbc -->            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-jdbc</artifactId>        </dependency>        <dependency>        <!-- alibaba的druid连接池 -->            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.0.9</version>        </dependency>        <dependency>            <!-- 引入MyBatis的依赖 -->            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.3.0</version>        </dependency>        <dependency>            <!-- MyBatis整合Spring容器 -->            <groupId>org.mybatis</groupId>            <artifactId>mybatis-spring</artifactId>            <version>1.2.3</version>        </dependency>        <dependency>            <!-- 引入MySql的依赖 -->            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <!-- 指定编译环境 -->                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <version>3.2</version>                <configuration>                    <source>1.8</source>                    <target>1.8</target>                    <encoding>UTF-8</encoding>                </configuration>            </plugin>        </plugins>    </build></project>

  此处使用引入SpringBoot而非继承spring-boot-starter-parent
  关于spring-boot-starter-parent不继承的SpringBoot项目参考SpringBoot的官方文档

2.创建配置文件

  (1).SpringBoot统一的配置文件application.yml
spring: mvc:  servlet.load-on-startup: 3jdbc: driverClass: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8 username: root password: rootmybatis:   typeAliasesPackage: com.xin.pojo mapperLocations: classpath:/sqlmap/*.xml   configLocation: classpath:/mybatis/sqlMapConfig.xmllogging: level:  org:   springframework: INFO   mybatis: INFO
  (2).MyBatis的主配置文件sqlMapConfig.xml

   虽然配置文件中没有写任何配置,但是还是需要有该文件,否则报错。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC  "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <settings>        <!-- 控制台输出sql语句 -->        <setting name="logImpl" value="STDOUT_LOGGING" />    </settings></configuration>

3.创建配置类

  (1).数据源的配置类DatabaseConfig.java
package com.xin.config;import javax.sql.DataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Component;import com.alibaba.druid.pool.DruidDataSource;@Component@ConfigurationProperties(prefix="jdbc")public class DatabaseConfig {    private String driverClass;    private String url;    private String username;    private String password;    public void setDriverClass(String driverClass) {        this.driverClass = driverClass;    }    public void setUrl(String url) {        this.url = url;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    private static Logger log = LoggerFactory.getLogger(DatabaseConfig.class);     @Bean    public DataSource createDataSource(){        DruidDataSource dataSource = new DruidDataSource();        dataSource.setDriverClassName(driverClass);        dataSource.setUrl(url);        dataSource.setUsername(username);        dataSource.setPassword(password);        log.info("创建连接池成功");        return dataSource;    }}
  (2).MyBatis的配置类MybatisConfig.java
package com.xin.config;import java.io.IOException;import javax.sql.DataSource;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.autoconfigure.AutoConfigureAfter;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.core.io.DefaultResourceLoader;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.stereotype.Component;@Component@ConfigurationProperties(prefix="mybatis")@AutoConfigureAfter(DatabaseConfig.class)@MapperScan("com.xin.mapper")public class MybatisConfig {    private String typeAliasesPackage;    private String configLocation;    private String mapperLocations;    public void setTypeAliasesPackage(String typeAliasesPackage) {        this.typeAliasesPackage = typeAliasesPackage;    }    public void setConfigLocation(String configLocation) {        this.configLocation = configLocation;    }    public void setMapperLocations(String mapperLocations) {        this.mapperLocations = mapperLocations;    }    private static Logger log = LoggerFactory.getLogger(MybatisConfig.class);     @Bean    @ConditionalOnMissingBean//当容器没有SqlSessionFactoryBean时创建    public SqlSessionFactoryBean createSqlSessionFactoryBean(DataSource dataSource) throws IOException{        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();        //设置数据源        sqlSessionFactoryBean.setDataSource(dataSource);        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();        //设置mybatis的主配置文件        sqlSessionFactoryBean.setConfigLocation(resolver.getResource(configLocation));        //指定mapper.xml的路径。如果mapper.xml的路径如相应的mapper接口所在的路径在同一目录(打包运行时)下且名字相同时则可以省略该步骤        sqlSessionFactoryBean.setMapperLocations(resolver.getResources(mapperLocations));        //设置包的别名        sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);        log.info("成功创建SqlSessionFactory:"+sqlSessionFactoryBean);        return sqlSessionFactoryBean;    }}

  注意:由于使用@ConfigurationProperties来自动引入配置文件application.yml中的属性,所以需要提供相应的setter方法。

4.创建的Mapper接口及相应的xml配置

  由于该步骤需要根据业务不同做出的配置也不同,故省略。

5.创建Controller

  由于该步骤需要根据业务不同做出的处理也不同,故省略。

6.创建入口类(即含有main方法的类)

package com.xin;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

7.项目目录结构如下:

  

原创粉丝点击