Spring boot怎么整合Mybatis

spring boot的简配置方便的开发,下面通过本文给大家分享Spring boot整合Mybatis的方法,需要的朋友参考下

 最近刚接触spring boot,正是因为他的及简配置方便开发,促使我下定决心要用它把之前写的项目重构,那么问题来了,spring boot怎么整合mybatis呢,下面几个配置类来搞定。

在我的代码当中是实现了数据库读写分离的,所以代码仅做参考,如有需要可以加我微信:benyzhous

【后续更新】

1、文件结构

DataBaseConfiguration.Java用来获取数据库连接配置信息,配置从application.properties中读取

MybatisConfiguration.java也就是MyBatis配置核心入口,构建连接创建SqlSessionFactory

2、下面直接贴代码,有问题的话可以留言或者加我的微信公众号:cha-baba,或者个人微信号:benyzhous

application.yml 相关配置

 # Server settings server: port:8080 address:localhost # DATASOURCE jdbc: driverClass: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/local-kaishustory?useUnicode=true&characterEncoding=utf-8 username: root password: root # SPRING PROFILES spring: # HTTP ENCODING http: encoding.charset: UTF-8 encoding.enable: true encoding.force: true # WeiXin Configuration weixin: mp: appid: xx secret: ee token: weixin aeskey: # MyBatis mybatis: typeAliasesPackage: com.modou.**.domain mapperLocations: classpath:/com/modou/**/mapper/*.xml configLocation: classpath:/mybatis-config.xml # LOGGING logging: level: com.ibatis:DEBUG 

DataBaseConfiguration.java

 package com.modou.conf.mybatis; import java.util.ArrayList; import java.util.List; import javax.sql.DataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.bind.RelaxedPropertyResolver; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.env.Environment; import org.springframework.transaction.annotation.EnableTransactionManagement; import com.alibaba.druid.pool.DruidDataSource; @Configuration @EnableTransactionManagement public class DataBaseConfiguration implements EnvironmentAware { private RelaxedPropertyResolver propertyResolver; private static Logger log = LoggerFactory.getLogger(DataBaseConfiguration.class); @Override public void setEnvironment(Environment env) { this.propertyResolver = new RelaxedPropertyResolver(env, "jdbc."); } @Bean(name="writeDataSource", destroyMethod = "close", initMethod="init") @Primary public DataSource writeDataSource() { log.debug("Configruing Write DataSource"); DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(propertyResolver.getProperty("url")); datasource.setDriverClassName(propertyResolver.getProperty("driverClassName")); datasource.setUsername(propertyResolver.getProperty("username")); datasource.setPassword(propertyResolver.getProperty("password")); return datasource; } @Bean(name="readOneDataSource", destroyMethod = "close", initMethod="init") public DataSource readOneDataSource() { log.debug("Configruing Read One DataSource"); DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(propertyResolver.getProperty("url")); datasource.setDriverClassName(propertyResolver.getProperty("driverClassName")); datasource.setUsername(propertyResolver.getProperty("username")); datasource.setPassword(propertyResolver.getProperty("password")); return datasource; } @Bean(name="readTowDataSource", destroyMethod = "close", initMethod="init") public DataSource readTowDataSource() { log.debug("Configruing Read Two DataSource"); DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(propertyResolver.getProperty("url")); datasource.setDriverClassName(propertyResolver.getProperty("driverClassName")); datasource.setUsername(propertyResolver.getProperty("username")); datasource.setPassword(propertyResolver.getProperty("password")); return datasource; } @Bean(name="readDataSources") public List readDataSources(){ List dataSources = new ArrayList(); dataSources.add(readOneDataSource()); dataSources.add(readTowDataSource()); return dataSources; } } 

MyBatisConfiguration.java

 package com.modou.conf.mybatis; import java.util.List; import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.plugin.rw.RoundRobinRWRoutingDataSourceProxy; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.bind.RelaxedPropertyResolver; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * * 获取第二个数据库的连接信息,在application.yml中配置,并指定特定的前缀 * */ @Configuration @ConditionalOnClass({ EnableTransactionManagement.class, EntityManager.class }) @AutoConfigureAfter({ DataBaseConfiguration.class }) @MapperScan(basePackages={"com.modou.**.mapper","com.github.abel533.entity.mapper"}) public class MybatisConfiguration implements EnvironmentAware{ private static Log logger = LogFactory.getLog(MybatisConfiguration.class); private RelaxedPropertyResolver propertyResolver; @Resource(name="writeDataSource") private DataSource writeDataSource; @Resource(name="readDataSources") private List readDataSources; @Override public void setEnvironment(Environment environment) { this.propertyResolver = new RelaxedPropertyResolver(environment,"mybatis."); } @Bean @ConditionalOnMissingBean public SqlSessionFactory sqlSessionFactory() { try { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(roundRobinDataSouceProxy()); sessionFactory.setTypeAliasesPackage(propertyResolver .getProperty("typeAliasesPackage")); sessionFactory .setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(propertyResolver .getProperty("mapperLocations"))); sessionFactory .setConfigLocation(new DefaultResourceLoader() .getResource(propertyResolver .getProperty("configLocation"))); return sessionFactory.getObject(); } catch (Exception e) { logger.warn("Could not confiure mybatis session factory"); return null; } } @Bean public RoundRobinRWRoutingDataSourceProxy roundRobinDataSouceProxy(){ RoundRobinRWRoutingDataSourceProxy proxy = new RoundRobinRWRoutingDataSourceProxy(); proxy.setWriteDataSource(writeDataSource); proxy.setReadDataSoures(readDataSources); proxy.setReadKey("READ"); proxy.setWriteKey("WRITE"); return proxy; } @Bean @ConditionalOnMissingBean public DataSourceTransactionManager transactionManager() { return new DataSourceTransactionManager(writeDataSource); } } 

Application.java

 package com.modou.weixin; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import com.modou.weixin.service.HelloWorldService; /** * Created by chababa on 15/8/22. */ @Configuration @ComponentScan(basePackages={"com.modou.conf","com.modou.weixin"}) @EnableAutoConfiguration public class Application implements CommandLineRunner{ @Autowired HelloWorldService helloWorldService; public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override public void run(String... args) throws Exception { System.out.println(this.helloWorldService.print()); } } 

3、maven pom.xml 相关依赖[我是基于我的多模块依赖,这里只是一个示意],其中配置了jrebel热部署插件,需要搭配jrebel6.2.1,具体配置和下载请转向 http://blog.csdn.net/xiaoyu411502/article/details/48047369

   4.0.0 com.modou.weixinweixin-boot-parent0.0.1-SNAPSHOT../weixin-boot-parentweixin-boot-servicesweixin-boot-serviceshttp://maven.apache.org UTF-81.2.4.RELEASE  com.modou.weixinweixin-boot-sdk${project.version} com.modou.weixinmybatis-plugin-rw${project.version} org.springframework.bootspring-boot-starter-web org.springframework.bootspring-boot-starter-actuator org.springframework.bootspring-boot-starter-thymeleaf org.springframeworkspring-jdbc javax.persistencepersistence-api org.mybatismybatis org.mybatismybatis-spring com.alibabadruid mysqlmysql-connector-java com.github.pagehelperpagehelper tk.mybatismapper org.mybatis.generatormybatis-generator-core

以上所述是小编给大家介绍的Spring boot整合Mybatis的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对html中文网网站的支持!

以上就是Spring boot怎么整合Mybatis的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java