最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring boot怎么整合Mybatis

 更新時(shí)間:2017年07月11日 11:02:45   作者:茶爸爸  
spring boot的簡(jiǎn)配置方便的開發(fā),下面通過本文給大家分享Spring boot整合Mybatis的方法,需要的朋友參考下

 最近剛接觸spring boot,正是因?yàn)樗募昂?jiǎn)配置方便開發(fā),促使我下定決心要用它把之前寫的項(xiàng)目重構(gòu),那么問題來了,spring boot怎么整合mybatis呢,下面幾個(gè)配置類來搞定。

在我的代碼當(dāng)中是實(shí)現(xiàn)了數(shù)據(jù)庫讀寫分離的,所以代碼僅做參考,如有需要可以加我微信:benyzhous

【后續(xù)更新】

1、文件結(jié)構(gòu)

DataBaseConfiguration.Java用來獲取數(shù)據(jù)庫連接配置信息,配置從application.properties中讀取

MybatisConfiguration.java也就是MyBatis配置核心入口,構(gòu)建連接創(chuàng)建SqlSessionFactory

2、下面直接貼代碼,有問題的話可以留言或者加我的微信公眾號(hào):cha-baba,或者個(gè)人微信號(hào):benyzhous

application.yml 相關(guān)配置

# 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<DataSource> readDataSources(){ 
  List<DataSource> dataSources = new ArrayList<DataSource>(); 
  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; 
/** 
 * 
 * 獲取第二個(gè)數(shù)據(jù)庫的連接信息,在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<Object> 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 相關(guān)依賴[我是基于我的多模塊依賴,這里只是一個(gè)示意],其中配置了jrebel熱部署插件,需要搭配jrebel6.2.1,具體配置和下載請(qǐng)轉(zhuǎn)向 http://blog.csdn.net/xiaoyu411502/article/details/48047369

<?xml version="1.0"?> 
<project 
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
 <modelVersion>4.0.0</modelVersion> 
 <parent> 
  <groupId>com.modou.weixin</groupId> 
  <artifactId>weixin-boot-parent</artifactId> 
  <version>0.0.1-SNAPSHOT</version> 
  <relativePath>../weixin-boot-parent</relativePath> 
 </parent> 
 <artifactId>weixin-boot-services</artifactId> 
 <name>weixin-boot-services</name> 
 <url>http://maven.apache.org</url> 
 <properties> 
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
  <springloaded.version>1.2.4.RELEASE</springloaded.version> 
 </properties> 
 <dependencies> 
  <dependency> 
   <groupId>com.modou.weixin</groupId> 
   <artifactId>weixin-boot-sdk</artifactId> 
   <version>${project.version}</version> 
  </dependency> 
  <dependency> 
   <groupId>com.modou.weixin</groupId> 
   <artifactId>mybatis-plugin-rw</artifactId> 
   <version>${project.version}</version> 
  </dependency> 
  <dependency> 
   <groupId>org.springframework.boot</groupId> 
   <artifactId>spring-boot-starter-web</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>org.springframework.boot</groupId> 
   <artifactId>spring-boot-starter-actuator</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>org.springframework.boot</groupId> 
   <artifactId>spring-boot-starter-thymeleaf</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>org.springframework</groupId> 
   <artifactId>spring-jdbc</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>javax.persistence</groupId> 
   <artifactId>persistence-api</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>org.mybatis</groupId> 
   <artifactId>mybatis</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>org.mybatis</groupId> 
   <artifactId>mybatis-spring</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>com.alibaba</groupId> 
   <artifactId>druid</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>mysql</groupId> 
   <artifactId>mysql-connector-java</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>com.github.pagehelper</groupId> 
   <artifactId>pagehelper</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>tk.mybatis</groupId> 
   <artifactId>mapper</artifactId> 
  </dependency> 
  <dependency> 
   <groupId>org.mybatis.generator</groupId> 
   <artifactId>mybatis-generator-core</artifactId> 
  </dependency> 
 </dependencies> 
</project> 

以上所述是小編給大家介紹的Spring boot整合Mybatis的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • SpringCloud服務(wù)的平滑上下線的方法

    SpringCloud服務(wù)的平滑上下線的方法

    這篇文章主要介紹了SpringCloud服務(wù)的平滑上下線的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • Struts2實(shí)現(xiàn)生成動(dòng)態(tài)驗(yàn)證碼并驗(yàn)證實(shí)例代碼

    Struts2實(shí)現(xiàn)生成動(dòng)態(tài)驗(yàn)證碼并驗(yàn)證實(shí)例代碼

    這篇文章主要介紹了Struts2實(shí)現(xiàn)生成動(dòng)態(tài)驗(yàn)證碼并驗(yàn)證實(shí)例代碼的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Effective Java (異常處理)

    Effective Java (異常處理)

    Effective Java (異常處理),需要的朋友可以參考一下
    2013-02-02
  • MyBatis一二級(jí)緩存

    MyBatis一二級(jí)緩存

    這篇文章主要介紹了MyBatis一二級(jí)緩存的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-06-06
  • IntelliJ IDEA遠(yuǎn)程Debug Linux的Java程序,找問題不要只會(huì)看日志了(推薦)

    IntelliJ IDEA遠(yuǎn)程Debug Linux的Java程序,找問題不要只會(huì)看日志了(推薦)

    這篇文章主要介紹了IntelliJ IDEA遠(yuǎn)程Debug Linux的Java程序,找問題不要只會(huì)看日志了,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java繪圖庫JFreeChart的使用教程

    Java繪圖庫JFreeChart的使用教程

    圖表是一種以簡(jiǎn)單方式顯示信息的圖形,JFreeChart允許創(chuàng)建各種交互式和非交互式圖表,本文主要介紹了Java繪圖庫JFreeChart的使用教程,感興趣的可以了解一下
    2023-09-09
  • Springboot RocketMq實(shí)現(xiàn)過程詳解

    Springboot RocketMq實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了Springboot RocketMq實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Spring事務(wù)失效場(chǎng)景的詳細(xì)整理

    Spring事務(wù)失效場(chǎng)景的詳細(xì)整理

    Spring 事務(wù)的傳播特性說的是,當(dāng)多個(gè)事務(wù)同時(shí)存在的時(shí)候,Spring 如何處理這些事務(wù)的特性,下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)失效場(chǎng)景的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • springboot使用Mybatis(xml和注解)過程全解析

    springboot使用Mybatis(xml和注解)過程全解析

    這篇文章主要介紹了springboot使用Mybatis(xml和注解)過程全解析 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • SpringBoot整合阿里云短信服務(wù)的案例代碼

    SpringBoot整合阿里云短信服務(wù)的案例代碼

    這篇文章主要介紹了SpringBoot整合阿里云短信服務(wù)的案例代碼,在Spring Boot項(xiàng)目的pom.xml文件中添加阿里云短信服務(wù)SDK的依賴,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-06-06

最新評(píng)論

绵阳市| 安丘市| 襄城县| 玉林市| 建德市| 榆树市| 府谷县| 阳春市| 阿巴嘎旗| 杭州市| 广西| 克什克腾旗| 印江| 涟水县| 安徽省| 平乐县| 晋宁县| 如皋市| 大竹县| 清河县| 宜兰市| 长子县| 耿马| 阿鲁科尔沁旗| 绥芬河市| 仙居县| 上栗县| 屏东市| 凤山市| 元氏县| 邵阳市| 新密市| 阳信县| 临澧县| 西吉县| 微博| 若羌县| 保康县| 岳西县| 大洼县| 鄂伦春自治旗|