spring boot 1.5.4 整合 mybatis(十二)

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

 

Spring Boot集成Mybatis

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

 

Spring Boot集成Mybatis有兩種方式:

 

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

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

 

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

 

1      方式一:整合mybatis資源

1.1    新建spring-boot-mybatis項目

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

spring-boot相關項目源碼,

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

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(十九



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章