spring boot 1.5.4 整合 mybatis(十二)

上一篇:spring boot 1.5.4 整合log4j2(十一)java

 

Spring Boot集成Mybatis

更多更詳細的配置參考文件:application.propertiesSpringBootapplication配置詳解》(新版本新增屬性缺失)  或參考官網http://projects.spring.io/spring-boot/mysql

 

Spring Boot集成Mybatis有兩種方式:git

 

方式一:傳統的引入外部資源配置的方式,方便對mybatis的控制;github

方式二:mybatis官方提供spring-boot整合的方式。web

 

這裏,仍是使用UserMapper類和userMapper.xml文件分離的作法。關於mapper.xmlsql語句能夠直接集成到Mapper接口中。詳見第4章節:將SQL語句集成到UserMapper接口類中redis

 

1      方式一:整合mybatis資源

1.1    新建spring-boot-mybatis項目

spring-boot-mybatis項目源碼地址:
spring

spring-boot相關項目源碼,sql

碼雲地址:https://git.oschina.net/wyait/springboot1.5.4.gitapache

github地址https://github.com/wyait/spring-boot-1.5.4.git緩存


項目總體結構:

wKioL1nNqVCAi8xuAABEF4cxZ-w299.png

1.2    pom.xml  

<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>

   <parent>

      <!--spring boot項目的parent -->

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>1.5.4.RELEASE</version>

   </parent>

   <groupId>com.wyait.boot</groupId>

   <artifactId>spring-boot-mybatis</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <packaging>war</packaging>

   <dependencies>

      <dependency>

        <!--spring boot 引入Web模塊。自動配置:tomcatspringmvcjackson -->

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

        <exclusions>

           <exclusion>

              <artifactId>spring-boot-starter-logging</artifactId>

              <groupId>org.springframework.boot</groupId>

           </exclusion>

        </exclusions>

      </dependency>

      <dependency>

        <!--spring-boot整合mybatis-->

        <groupId>org.mybatis.spring.boot</groupId>

        <artifactId>mybatis-spring-boot-starter</artifactId>

        <version>1.1.1</version>

      </dependency>

      <dependency>

        <groupId>mysql</groupId>

        <artifactId>mysql-connector-java</artifactId>

      </dependency>

      <!--MyBatis提供了攔截器接口,咱們能夠實現本身的攔截器,將其做爲一個plugin裝入到SqlSessionFactory中。 Github上有位開發者寫了一個分頁插件,我以爲使用起來還能夠,挺方便的。

        Github項目地址:https://github.com/pagehelper/Mybatis-PageHelper -->

      <dependency>

        <groupId>com.github.pagehelper</groupId>

        <artifactId>pagehelper</artifactId>

        <version>4.1.0</version>

      </dependency>

      <!--tomcat 的支持. -->

      <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-tomcat</artifactId>

        <!--添加<scope>provided</scope>,由於provided代表該包只在編譯和測試的時候用 -->

        <scope>provided</scope>

      </dependency>

      <dependency>

        <!--jsp頁面支持 -->

        <groupId>org.apache.tomcat.embed</groupId>

        <artifactId>tomcat-embed-jasper</artifactId>

        <scope>provided</scope>

      </dependency>

      <dependency>

        <groupId>javax.servlet</groupId>

        <artifactId>jstl</artifactId>

      </dependency>

      <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-log4j</artifactId>

        <!--這裏須要指定版本,不然報錯【有多是spring-boot-1.5.4.RELEASE版本沒有管理log4j版本的緣由】 -->

        <version>1.3.2.RELEASE</version>

      </dependency>

 

      <!--spring boot集成Swagger2-->

      <dependency>

        <groupId>io.springfox</groupId>

        <artifactId>springfox-swagger2</artifactId>

        <version>2.6.1</version>

      </dependency>

      <dependency>

        <groupId>io.springfox</groupId>

        <artifactId>springfox-swagger-ui</artifactId>

        <version>2.6.1</version>

      </dependency>

      <!--devtools能夠實現頁面熱部署(即頁面修改後會當即生效,這個能夠直接在application.properties文件中配置spring.thymeleaf.cache=false或者視圖解析器設置緩存爲false來實現),

        實現類文件熱部署(類文件修改後不會當即生效,待編譯後生效),實現對屬性文件的熱部署。devtools會監聽classpath下的文件變更,而且會當即重啓應用(發生在保存時機),注意:由於其採用的虛擬機機制,該項重啓是很快的 -->

      <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-devtools</artifactId>

        <optional>true</optional>

        <!--optional=true,依賴不會傳遞,該項目依賴devtools;以後依賴SpringBoot1項目的項目若是想要使用devtools,須要從新引入 -->

      </dependency>

   </dependencies>

   <build>

      <plugins>

        <plugin>

           <!--配置spring bootmaven插件 -->

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-maven-plugin</artifactId>

           <!--<configuration> fork : 若是沒有該項配置,devtools不會起做用,即應用不會restart 【實測:能夠不配置】

              <fork>true</fork></configuration> -->

        </plugin>

      </plugins>

   </build>

</project>

1.3    Application.java

// 這是一個配置Spring的配置類

@Configuration

// @SpringBootApplicationSpring Boot項目的核心註解,主要目的是開啓自動配置,自動掃描該類同級包以及子包。

@SpringBootApplication

public class Application {

 

   publicstatic void main(String[] args) {

      //啓動spring boot應用

      SpringApplicationsa = new SpringApplication(Application.class);

      //禁用devTools熱部署

      System.setProperty("spring.devtools.restart.enabled","false");

      //禁用命令行更改application.properties屬性

      sa.setAddCommandLineProperties(false);

      sa.run(args);

   }

}

1.4    mybatis相關配置類:集成pageHelper分頁插件,並開啓事務

 

@Configuration

@EnableTransactionManagement

// 開啓註解事務支持

public class MybatisConfigimplements TransactionManagementConfigurer {

   //spring容器管理,能夠直接注入使用

   @Autowired

   DataSourcedataSource;

 

   @Bean(name= "sqlSessionFactory")

   publicSqlSessionFactory sqlSessionFactoryBean() {

      SqlSessionFactoryBeanbean = new SqlSessionFactoryBean();

      bean.setDataSource(dataSource);

      bean.setTypeAliasesPackage("com.wyait.boot.pojo");

 

      //分頁插件

      PageHelperpageHelper = new PageHelper();

      Propertiesproperties = new Properties();

      properties.setProperty("reasonable","true");

      properties.setProperty("supportMethodsArguments","true");

      properties.setProperty("returnPageInfo","check");

      properties.setProperty("params","count=countSql");

      pageHelper.setProperties(properties);

 

      //添加插件

      bean.setPlugins(newInterceptor[] { pageHelper });

 

      //添加XML目錄

      ResourcePatternResolverresolver = new PathMatchingResourcePatternResolver();

      try{

        bean.setMapperLocations(resolver

              .getResources("classpath:mybatis/*.xml"));

        returnbean.getObject();

      }catch (Exception e) {

        e.printStackTrace();

        thrownew RuntimeException(e);

      }

   }

 

   @Bean

   publicSqlSessionTemplate sqlSessionTemplate(

        SqlSessionFactorysqlSessionFactory) {

      returnnew SqlSessionTemplate(sqlSessionFactory);

   }

 

   //開啓註解事務

   @Bean

   @Override

   publicPlatformTransactionManager annotationDrivenTransactionManager() {

      returnnew DataSourceTransactionManager(dataSource);

   }

}

1.5    TODO 編寫實體類、servicemappermapper.xml

1.6    啓動,測試

TODO


 

2      方式二:mybatis整合spring-boot

mybatis-spring-boot項目源碼地址

spring-boot相關項目源碼,

碼雲地址:https://git.oschina.net/wyait/springboot1.5.4.git

github地址https://github.com/wyait/spring-boot-1.5.4.git

2.1    新建mybatis-spring-boot工程

項目結構:

wKiom1nNqZ3zPl2gAABMwU48hU0067.png

Application.java

// 這是一個配置Spring的配置類

@Configuration

// @SpringBootApplicationSpring Boot項目的核心註解,主要目的是開啓自動配置,自動掃描該類同級包以及子包。

@SpringBootApplication

//@MapperScan(basePackages ="com.wyait.boot.dao")

public class Application {

 

   publicstatic void main(String[] args) {

      //啓動spring boot應用

      SpringApplicationsa = new SpringApplication(Application.class);

      //禁用devTools熱部署

      System.setProperty("spring.devtools.restart.enabled","false");

      //禁用命令行更改application.properties屬性

      sa.setAddCommandLineProperties(false);

      sa.run(args);

   }

}

 

2.2    pom.xml

<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>

   <parent>

      <!--spring boot項目的parent -->

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>1.5.4.RELEASE</version>

   </parent>

   <groupId>com.wyait.mybatis</groupId>

   <artifactId>mybatis-spring-boot</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <packaging>war</packaging>

   <dependencies>

      <dependency>

        <!--spring boot 引入Web模塊。自動配置:tomcatspringmvcjackson -->

         <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

        <exclusions>

           <exclusion>

              <artifactId>spring-boot-starter-logging</artifactId>

              <groupId>org.springframework.boot</groupId>

           </exclusion>

         </exclusions>

      </dependency>

      <dependency>

        <!--spring-boot整合mybatis-->

        <groupId>org.mybatis.spring.boot</groupId>

        <artifactId>mybatis-spring-boot-starter</artifactId>

        <version>1.1.1</version>

      </dependency>

      <dependency>

        <groupId>mysql</groupId>

        <artifactId>mysql-connector-java</artifactId>

      </dependency>

      <dependency>

      <!--pageHelper分頁插件 -->

        <groupId>com.github.pagehelper</groupId>

        <artifactId>pagehelper-spring-boot-starter</artifactId>

        <version>1.1.1</version>

      </dependency>

      <!-- MyBatis提供了攔截器接口,咱們能夠實現本身的攔截器,將其做爲一個plugin裝入到SqlSessionFactory中。 Github上有位開發者寫了一個分頁插件,我以爲使用起來還能夠,挺方便的。

        Github項目地址:https://github.com/pagehelper/Mybatis-PageHelper -->

      <!--<dependency>

        <groupId>com.github.pagehelper</groupId>

        <artifactId>pagehelper</artifactId>

        <version>4.1.0</version>

      </dependency>-->

      <!--tomcat 的支持. -->

      <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-tomcat</artifactId>

        <!--添加<scope>provided</scope>,由於provided代表該包只在編譯和測試的時候用 -->

        <scope>provided</scope>

      </dependency>

      <dependency>

        <!--jsp頁面支持 -->

        <groupId>org.apache.tomcat.embed</groupId>

        <artifactId>tomcat-embed-jasper</artifactId>

        <scope>provided</scope>

      </dependency>

      <dependency>

        <groupId>javax.servlet</groupId>

        <artifactId>jstl</artifactId>

      </dependency>

      <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-log4j</artifactId>

        <!--這裏須要指定版本,不然報錯【有多是spring-boot-1.5.4.RELEASE版本沒有管理log4j版本的緣由】 -->

        <version>1.3.2.RELEASE</version>

      </dependency>

 

      <!--spring boot集成Swagger2-->

      <dependency>

        <groupId>io.springfox</groupId>

        <artifactId>springfox-swagger2</artifactId>

        <version>2.6.1</version>

      </dependency>

      <dependency>

        <groupId>io.springfox</groupId>

        <artifactId>springfox-swagger-ui</artifactId>

        <version>2.6.1</version>

      </dependency>

      <!--devtools能夠實現頁面熱部署(即頁面修改後會當即生效,這個能夠直接在application.properties文件中配置spring.thymeleaf.cache=false或者視圖解析器設置緩存爲false來實現),

        實現類文件熱部署(類文件修改後不會當即生效,待編譯後生效),實現對屬性文件的熱部署。devtools會監聽classpath下的文件變更,而且會當即重啓應用(發生在保存時機),注意:由於其採用的虛擬機機制,該項重啓是很快的 -->

      <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-devtools</artifactId>

        <optional>true</optional>

        <!--optional=true,依賴不會傳遞,該項目依賴devtools;以後依賴SpringBoot1項目的項目若是想要使用devtools,須要從新引入 -->

      </dependency>

   </dependencies>

   <build>

      <plugins>

        <plugin>

           <!--配置spring bootmaven插件 -->

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-maven-plugin</artifactId>

           <!--<configuration> fork : 若是沒有該項配置,devtools不會起做用,即應用不會restart 【實測:能夠不配置】

              <fork>true</fork></configuration> -->

        </plugin>

      </plugins>

   </build>

</project>

2.3    application.properties配置:集成pageHelper,指定mapper.xml路徑

# mysql

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username=root

spring.datasource.password=123456

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# 使用druid鏈接池  須要注意的是:spring.datasource.type舊的spring boot版本是不能識別的。

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# mybatis

mybatis.type-aliases-package=com.wyait.boot.pojo

mybatis.mapper-locations=classpath:mapper/*.xml

# 通用mapper配置

#mapper.mappers=com.wyait.boot.dao

#mapper.not-empty=false

#mapper.identity=MYSQL

# pagehelper

pagehelper.helperDialect=mysql

pagehelper.reasonable=true

pagehelper.supportMethodsArguments=true

pagehelper.returnPageInfo=check

pagehelper.params=count=countSql

2.4    UserMapper

TODO 詳見項目

mybatis-spring-boot項目源碼地址:https://git.oschina.net/wyait/springboot1.5.4.git


在接口上添加@Mapper註解便可或者在Application上添加掃描:@MapperScan(basePackages = "com.wyait.boot.dao")

2.5    啓動,測試結果

wKiom1nNqazwtE-3AAC5wRqZyxM274.png

3      SQL語句集成到UserMapperXML接口類中

寫法:

@Mapper

public interface UserMapperXML {

  @Select("SELECT * FROM USERWHERE NAME = #{name}")

  public UserfindUser(@Param("name") String name);

 

  @Select("SELECT * FROMUSER")

  public List<User>findAllUser();

 

  /**

   *

   * @描述:更新用戶信息

   * @建立人:wyait

   * @建立時間:2017629下午1:33:09

   * @param user

   * @return

   */

  @Update("update user setage=#{age} where id=#{id}")

  public int update(User user);

}

 

更多用法可進行百度。

4      總結

項目:mybatis-spring-boot整合了Mapper接口分離Sqlxml中的寫法和註解sql寫法。詳見項目源碼。


spring-boot相關項目源碼,

碼雲地址:https://git.oschina.net/wyait/springboot1.5.4.git

github地址https://github.com/wyait/spring-boot-1.5.4.git

 

spring boot系列文章:

spring boot 1.5.4 概述(一)

spring boot 1.5.4 入門和原理(二)

spring boot 1.5.4 之web開發(三)

spring boot 1.5.4 整合JSP(四)

spring boot 1.5.4 集成devTools(五)

spring boot 1.5.4 集成JdbcTemplate(六)

spring boot 1.5.4 集成spring-Data-JPA(七)

spring boot 1.5.4 配置文件詳解(八)

spring boot 1.5.4 統一異常處理(九)

spring boot 1.5.4 定時任務和異步調用(十)

spring boot 1.5.4 整合log4j2(十一)

spring boot 1.5.4 整合 mybatis(十二)

spring boot 1.5.4 整合 druid(十三)

spring boot 1.5.4 之監控Actuator(十四)

spring boot 1.5.4 整合webService(十五)

spring boot 1.5.4 整合redis、攔截器、過濾器、監聽器、靜態資源配置(十六)

spring boot 1.5.4 整合rabbitMQ(十七)

spring boot 1.5.4 集成Swagger2構建Restful API(十八)

spring boot 1.5.9 整合redis(十九

相關文章
相關標籤/搜索