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

Spring-boot集成pg、mongo多數(shù)據(jù)源過程詳解

 更新時間:2019年10月12日 10:07:48   投稿:yaominghui  
這篇文章主要介紹了Spring-boot集成pg、mongo多數(shù)據(jù)源過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了Spring-boot集成pg、mongo多數(shù)據(jù)源過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

修改POM文件,增加相應(yīng)Jar包

<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-mongodb</artifactId>
	</dependency>
<dependency>
		<groupId>org.postgresql</groupId>
		<artifactId>postgresql</artifactId>
		<scope>runtime</scope>
	</dependency>
<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

修改啟動類,去除原有的數(shù)據(jù)源自動加載機(jī)制

@SpringBootApplication(
    exclude = {DataSourceAutoConfiguration.class, 
          PageHelperAutoConfiguration.class ,
    		  MongoAutoConfiguration.class, MongoDataAutoConfiguration.class//禁用數(shù)據(jù)源自動配置
    })
@EnableEurekaClient
public class MainApplication {、、、

編寫application.yml文件,增加配置信息

spring:
  # 默認(rèn)的postgreSQL庫
 datasource:
  pg:
   url: jdbc:postgresql://127.0.0.1:5432/pgdb
   username: us_wu
   password: netcool@919
   driver-class-name: org.postgresql.Driver
  mg:
   host: 127.0.0.1
   username: aaa
   password: aaa
   database: mgdb
   port: 27017

分別手動增加PG、mongo的數(shù)據(jù)源以及使用樣例

pg

1、手動加載數(shù)據(jù)源

@Configuration
public class DataSourceConfig {
  final String cmspg="spring.datasource.pg";

  @Bean(name = "pgDS")
  @ConfigurationProperties(prefix =pg) 
  public DataSource dataSource() {
    return DataSourceBuilder.create().build();
  }

2、創(chuàng)建pg配置文件,指定SqlSessionFactory以及要掃描的Dao

@Configuration
@MapperScan(basePackages = {"com.**.mapper.pg"}, sqlSessionFactoryRef = "sqlSessionFactory")
public class PostgresDBConfig {

  @Autowired
  @Qualifier("pgDS")
  private DataSource pgDS;


  @Bean
  public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
    factoryBean.setDataSource(pgDS);  
    return factoryBean.getObject();

  }
  @Bean
  public SqlSessionTemplate sqlSessionTemplate() throws Exception {
    SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory()); // 使用上面配置的Factory
    return template;
  }
}

3、編寫Dao--注解形式

@Repository
@Mapper
public interface StCableFiberMapper {

  @Select("SELECT * FROM st_cable_fiber WHERE id = #{id}")
  St_cable_fiber findById(@Param("id") String id);

mongo

1、加載mongo配置信息

public abstract class AbstractMongoConfigure {

		private String host, database, username, password;
		private int port;
		// Setter methods go here..
	 
		/*
		 * Method that creates MongoDbFactory Common to both of the MongoDb
		 * connections
		 */
		public MongoDbFactory mongoDbFactory() throws Exception {
			ServerAddress serverAddress = new ServerAddress(host, port);
			List<MongoCredential> mongoCredentialList = new ArrayList<>();
			mongoCredentialList.add(MongoCredential.createScramSha1Credential(username, database, password.toCharArray()));
			return new SimpleMongoDbFactory(new MongoClient(serverAddress,mongoCredentialList), database);
		}
	 
		/*
		 * Factory method to create the MongoTemplate
		 */
		abstract public MongoTemplate getMongoTemplate() throws Exception;
}

@Configuration
@EnableMongoRepositories(basePackages = {"com.**.mapper.mg"},mongoTemplateRef = "mongoTemplate") 
@ComponentScan
@ConfigurationProperties(prefix = "spring.datasource.mg")
public class MongoMasterConfig extends AbstractMongoConfigure{

	@Override
	@Bean("mongoTemplate")
	public MongoTemplate getMongoTemplate() throws Exception {
		return new MongoTemplate(mongoDbFactory()); 
	}

}

編寫Dao MongoTemplate模式

@Repository
public class CmCableDetailRepo{

	@Autowired
	private MongoTemplate mongoTemplate;

	public Page<Cm_Cable> findByLevelAndName(String areacode, int level,String name,int pageNum, int pageSize){

		PageRequest page = new PageRequest(pageNum, pageSize);
		Query query = new Query();
		Criteria criteria = new Criteria();
		criteria.and("areacode").regex("^"+areacode);
		if(level > -1){
			criteria.and("cableSegment_level").is(level);
		}
		if(null != name && name.trim().length() > 0){
			criteria.and("zh_label").regex(".*?"+name+".*");
		}
		query.addCriteria(criteria);
		Long count = mongoTemplate.count(query, Cm_Cable.class);

		List<Cm_Cable> list = mongoTemplate.find(query.with(page), Cm_Cable.class);
		return new PageImpl<Cm_Cable>(list, page, count);
	}

MongoRepository模式

@Repository
public interface CmCableDetailMapper extends MongoRepository<Cm_Cable, String>{
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • HashMap源碼中的位運(yùn)算符&詳解

    HashMap源碼中的位運(yùn)算符&詳解

    這篇文章主要介紹了HashMap源碼中的位運(yùn)算符&詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解Java中Comparable和Comparator接口的區(qū)別

    詳解Java中Comparable和Comparator接口的區(qū)別

    這篇文章主要介紹了詳解Java中Comparable和Comparator接口的區(qū)別的相關(guān)資料,希望通過本文大家能徹底掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • java中的分布式事務(wù)解決方式

    java中的分布式事務(wù)解決方式

    分布式事務(wù)是分布式系統(tǒng)中確保數(shù)據(jù)一致性的重要機(jī)制,它涉及多個數(shù)據(jù)源或參與者,要么所有操作全部成功,要么全部失敗,常見的解決方案包括2PC(兩階段提交協(xié)議)、3PC(三階段提交協(xié)議)和TCC(Try-Confirm-Cancel),2PC雖然簡單但存在單點(diǎn)故障等問題
    2024-09-09
  • Java使用AOP技術(shù)實(shí)現(xiàn)通用接口驗簽工具

    Java使用AOP技術(shù)實(shí)現(xiàn)通用接口驗簽工具

    這篇文章主要為大家詳細(xì)介紹了Java如何使用AOP技術(shù)實(shí)現(xiàn)通用接口驗簽工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下吧
    2025-03-03
  • 使用java springboot設(shè)計實(shí)現(xiàn)的圖書管理系統(tǒng)(建議收藏)

    使用java springboot設(shè)計實(shí)現(xiàn)的圖書管理系統(tǒng)(建議收藏)

    這篇文章主要介紹了使用java springboot設(shè)計實(shí)現(xiàn)的圖書管理系統(tǒng),包含了整個的開發(fā)過程,以及過程中遇到的問題和解決方法,對大家的學(xué)習(xí)和工作具有借鑒意義,建議收藏一下
    2021-08-08
  • Java?17的一些新特性介紹

    Java?17的一些新特性介紹

    這篇文章主要介紹了Java?17的一些新特性介紹,Java添加了許多Java開發(fā)人員渴望的特性和改進(jìn),下文就來學(xué)習(xí)一下這些特性吧,需要的朋友可以參考一下
    2022-04-04
  • 代碼分析Java中線程的等待與喚醒

    代碼分析Java中線程的等待與喚醒

    本篇文章給大家分享了關(guān)于Java中線程的等待與喚醒的知識點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2018-10-10
  • Java異常處理 如何跟蹤異常的傳播路徑

    Java異常處理 如何跟蹤異常的傳播路徑

    這篇文章主要介紹了Java異常處理 如何跟蹤異常的傳播路徑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 詳解SpringBoot程序啟動時執(zhí)行初始化代碼

    詳解SpringBoot程序啟動時執(zhí)行初始化代碼

    這篇文章主要介紹了詳解SpringBoot程序啟動時執(zhí)行初始化代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • JDK源碼白話解讀之ThreadLocal篇

    JDK源碼白話解讀之ThreadLocal篇

    其實(shí)網(wǎng)上有很多關(guān)于ThreadLocal的文章了,有不少文章也已經(jīng)寫的非常好了。但是很多同學(xué)反應(yīng)還有一些部分沒有講解的十分清楚,還是有一定的疑惑沒有想的十分清楚
    2022-02-02

最新評論

黄陵县| 兴安盟| 大埔县| 新绛县| 白水县| 宝清县| 会宁县| 山西省| 筠连县| 甘谷县| 勃利县| 巢湖市| 垫江县| 新平| 四平市| 交城县| 武平县| 宜良县| 通榆县| 云和县| 闻喜县| 武鸣县| 永定县| 阿坝| 定西市| 怀化市| 陵川县| 兰坪| 封丘县| 汝城县| 枞阳县| 伊吾县| 合肥市| 息烽县| 镇宁| 平和县| 海口市| 福清市| 环江| 南丹县| 金门县|