上一篇: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(十七)