您的位置:首页 > 编程语言 > Java开发

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,欢迎大家讨论留言,一起交流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: