上一篇:spring boot 1.5.4 整合log4j2(十一)java
更多更詳細的配置參考文件:application.properties和《SpringBoot之application配置詳解》(新版本新增屬性缺失) 或參考官網http://projects.spring.io/spring-boot/mysql
Spring Boot集成Mybatis有兩種方式:git
方式一:傳統的引入外部資源配置的方式,方便對mybatis的控制;github
方式二:mybatis官方提供spring-boot整合的方式。web
這裏,仍是使用UserMapper類和userMapper.xml文件分離的作法。關於mapper.xml的sql語句能夠直接集成到Mapper接口中。詳見第4章節:將SQL語句集成到UserMapper接口類中redis
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緩存
項目總體結構:
<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模塊。自動配置:tomcat、springmvc、jackson等 -->
<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 boot之maven插件 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--<configuration> fork : 若是沒有該項配置,devtools不會起做用,即應用不會restart 【實測:能夠不配置】
<fork>true</fork></configuration> -->
</plugin>
</plugins>
</build>
</project>
// 這是一個配置Spring的配置類
@Configuration
// @SpringBootApplication:Spring 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);
}
}
@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);
}
}
TODO
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
項目結構:
Application.java
// 這是一個配置Spring的配置類
@Configuration
// @SpringBootApplication:Spring 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);
}
}
<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模塊。自動配置:tomcat、springmvc、jackson等 -->
<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 boot之maven插件 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--<configuration> fork : 若是沒有該項配置,devtools不會起做用,即應用不會restart 【實測:能夠不配置】
<fork>true</fork></configuration> -->
</plugin>
</plugins>
</build>
</project>
# 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
TODO 詳見項目
mybatis-spring-boot項目源碼地址:https://git.oschina.net/wyait/springboot1.5.4.git
在接口上添加@Mapper註解便可或者在Application上添加掃描:@MapperScan(basePackages = "com.wyait.boot.dao")
寫法:
@Mapper
public interface UserMapperXML {
@Select("SELECT * FROM USERWHERE NAME = #{name}")
public UserfindUser(@Param("name") String name);
@Select("SELECT * FROMUSER")
public List<User>findAllUser();
/**
*
* @描述:更新用戶信息
* @建立人:wyait
* @建立時間:2017年6月29日下午1:33:09
* @param user
* @return
*/
@Update("update user setage=#{age} where id=#{id}")
public int update(User user);
}
更多用法可進行百度。
項目:mybatis-spring-boot整合了Mapper接口分離Sql在xml中的寫法和註解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 集成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 整合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(十七)