Spring boot集成Mybatis
2016-12-12 17:42
387 查看
上一篇文章:SpringMVC集成公用Mybatis Dao,写了Spring怎么集成Mybatis Dao,由于Spring boot的快速发展,现在记录下Spring boot如何集成mybatis。
一、首先项目引入Spring boot
<!-- Spring boot start-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- spring boot 默认的日志框架是Logback,所以在引用log4j2之前,需要先排除该包的依赖,再引入log4j2的依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency> <!-- 引入log4j2依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency> 二、pom中引入Mybatis
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>三、Mybatis 启动config类
@EnableTransactionManagement
@Configuration
@PropertySource({"classpath:jdbc.properties"})
public class DatabaseConfig {
private static final Logger logger = LoggerFactory.getLogger(DatabaseConfig.class);
@Value("${jdbc.driverClassName}")
private String jdbcDriver;
@Value("${jdbc.databaseURL}")
private String dbUrl;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
/**
* 最小连接池数量
*/
@Value("${jdbc.minIdle}")
private Integer minIdle;
/**
* 最小连接池数量
*/
@Value("${jdbc.maxIdle}")
private Integer maxIdle;
/**
* 最大连接池数量,默认8
*/
@Value("${jdbc.maxActive}")
private Integer maxActive;
/**
* 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,
* 并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
*/
@Value("${jdbc.maxWait}")
private Integer maxWait;
@Value("${jdbc.validationQuery}")
private String validationQuery;
@Value("${jdbc.testOnBorrow}")
private boolean testOnBorrow;
@Value("${jdbc.testOnReturn}")
private boolean testOnReturn;
/**
* 描述 : 初始化配置文件必须写的方法,否则获取不到配置文件值
* @return
*/
// @Bean
// public static PropertySourcesPlaceholderConfigurer placehodlerConfigurer() {
// logger.info("初始化配置文件......");
// return new PropertySourcesPlaceholderConfigurer();
// }
@Bean(name = "dataSource")
public DataSource dataSource() {
logger.info("chentian610平台数据库连接池初始化开始:URL:"+dbUrl);
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbcDriver);
dataSource.setUrl(dbUrl);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setMinIdle(minIdle);
dataSource.setMaxActive(maxActive);
dataSource.setMaxWait(maxWait);
dataSource.setValidationQuery(validationQuery);
dataSource.setTestOnBorrow(testOnBorrow);
dataSource.setTestOnReturn(testOnReturn);
return dataSource;
}
@Bean
public DataSourceTransactionManager txManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
logger.info("chentian610平台MyBatis初始化开始.................");
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
// sessionFactory.setConfigLocation(new ClassPathResource("mybatisframework.xml"));
sessionFactory.setTypeAliasesPackage("com.ninesky");
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:com/chentian610/**/config/*.xml");
logger.info("chentian610平台MyBatis成功加载Mapper文件数量:"+resources.length);
sessionFactory.setMapperLocations(resources);
return sessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(sqlSessionFactory());
}
四、jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.databaseURL=jdbc:mysql://192.168.2.186:3306/db_name?useUnicode=true&autoReconnect=true&characterEncoding=utf8
jdbc.username=db_user
jdbc.password=db_password
jdbc.jdbc_dbname=APP4
#最大空闲数:空闲链接数大于maxIdle时,将进行回收
jdbc.maxIdle=100
jdbc.minIdle=10
#最大连接数:能够同时建立的“最大链接个数”
jdbc.maxActive=300
#最大等待时间:单位ms
jdbc.maxWait=1000
#使用连接时,检测连接是否成功
jdbc.testOnBorrow=true
jdbc.testOnReturn=true
#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
jdbc.timeout=10000
jdbc.validationQuery=select 1 from dual五、OK,欢迎大家讨论留言,一起交流
一、首先项目引入Spring boot
<!-- Spring boot start-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- spring boot 默认的日志框架是Logback,所以在引用log4j2之前,需要先排除该包的依赖,再引入log4j2的依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency> <!-- 引入log4j2依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency> 二、pom中引入Mybatis
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>三、Mybatis 启动config类
@EnableTransactionManagement
@Configuration
@PropertySource({"classpath:jdbc.properties"})
public class DatabaseConfig {
private static final Logger logger = LoggerFactory.getLogger(DatabaseConfig.class);
@Value("${jdbc.driverClassName}")
private String jdbcDriver;
@Value("${jdbc.databaseURL}")
private String dbUrl;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
/**
* 最小连接池数量
*/
@Value("${jdbc.minIdle}")
private Integer minIdle;
/**
* 最小连接池数量
*/
@Value("${jdbc.maxIdle}")
private Integer maxIdle;
/**
* 最大连接池数量,默认8
*/
@Value("${jdbc.maxActive}")
private Integer maxActive;
/**
* 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,
* 并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
*/
@Value("${jdbc.maxWait}")
private Integer maxWait;
@Value("${jdbc.validationQuery}")
private String validationQuery;
@Value("${jdbc.testOnBorrow}")
private boolean testOnBorrow;
@Value("${jdbc.testOnReturn}")
private boolean testOnReturn;
/**
* 描述 : 初始化配置文件必须写的方法,否则获取不到配置文件值
* @return
*/
// @Bean
// public static PropertySourcesPlaceholderConfigurer placehodlerConfigurer() {
// logger.info("初始化配置文件......");
// return new PropertySourcesPlaceholderConfigurer();
// }
@Bean(name = "dataSource")
public DataSource dataSource() {
logger.info("chentian610平台数据库连接池初始化开始:URL:"+dbUrl);
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbcDriver);
dataSource.setUrl(dbUrl);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setMinIdle(minIdle);
dataSource.setMaxActive(maxActive);
dataSource.setMaxWait(maxWait);
dataSource.setValidationQuery(validationQuery);
dataSource.setTestOnBorrow(testOnBorrow);
dataSource.setTestOnReturn(testOnReturn);
return dataSource;
}
@Bean
public DataSourceTransactionManager txManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
logger.info("chentian610平台MyBatis初始化开始.................");
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
// sessionFactory.setConfigLocation(new ClassPathResource("mybatisframework.xml"));
sessionFactory.setTypeAliasesPackage("com.ninesky");
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:com/chentian610/**/config/*.xml");
logger.info("chentian610平台MyBatis成功加载Mapper文件数量:"+resources.length);
sessionFactory.setMapperLocations(resources);
return sessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(sqlSessionFactory());
}
四、jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.databaseURL=jdbc:mysql://192.168.2.186:3306/db_name?useUnicode=true&autoReconnect=true&characterEncoding=utf8
jdbc.username=db_user
jdbc.password=db_password
jdbc.jdbc_dbname=APP4
#最大空闲数:空闲链接数大于maxIdle时,将进行回收
jdbc.maxIdle=100
jdbc.minIdle=10
#最大连接数:能够同时建立的“最大链接个数”
jdbc.maxActive=300
#最大等待时间:单位ms
jdbc.maxWait=1000
#使用连接时,检测连接是否成功
jdbc.testOnBorrow=true
jdbc.testOnReturn=true
#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
jdbc.timeout=10000
jdbc.validationQuery=select 1 from dual五、OK,欢迎大家讨论留言,一起交流
相关文章推荐
- Spring Boot集成Mybatis
- spring boot集成mybatis-generator-maven-plugin和通用mapper
- Spring Boot 实践折腾记(二):切入点,Spring MVC集成Mybatis的经典例子
- SpringBoot学习之路:04.Spring Boot集成Mybatis操作数据库
- Spring Boot 集成MyBatis
- Spring Boot 集成Mybatis操作数据库
- spring boot(三) 集成mybatis
- Spring Boot (教程十一: 集成Mybatis)
- Spring Boot 集成MyBatis 访问Hbase-Phoenix
- Spring Boot(二): 集成Mybatis
- spring boot集成mybatis,枚举类型字段注册通用
- 016,spring boot集成Mybatis之多数据源
- Spring Boot 集成mybatis
- spring boot 集成 mybatis:如何优雅的使用mybatis
- spring boot集成mybatis
- spring boot 集成mybatis 通用mapper与分页插件
- spring boot (三) 集成 mybatis
- Spring Boot 集成MyBatis
- Spring Boot 集成Mybatis,@MapperScan不能解析占位符问题
- spring boot 集成mybatis报错