Springboot-Jpa多数据库配置-2.0+版本

pom.xml增加:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

配置表同JdbcTemplate配置.

主数据源:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactoryPrimary",
transactionManagerRef = "transactionManagerPrimary",
basePackages = {"com.example.demo.p"})
public class PrimaryConfig {
@Bean(name = "primaryDataSource")
@Primary
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}

@Autowired
@Qualifier("primaryDataSource")
private DataSource primaryDatasource;

//@Primary
//@Bean(name = "entityManagerPrimary")
//public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
// return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
//}

//@Autowired
//private JpaProperties jpaProperties;

//private Map<String, Object> getVendorProperties() {
// return jpaProperties.getHibernateProperties(new HibernateSettings());//与1.5版本不同,注意.
//}

@Primary
@Bean(name = "entityManagerFactoryPrimary")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) {
return builder.
dataSource(primaryDatasource)
//.properties(getVendorProperties())
.packages("com.example.demo.p")
.persistenceUnit("primaryPersistenceUnit")
.build();
}

@Primary
@Bean(name = "transactionManagerPrimary")
public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
}
}

主Entity:

@Entity
@Table(name = "xx")
public class Dtl {
@Id
@Column(name = "id")
private Long id;

@Column(name = "TICKER_SYMBOL")
private String tickerSymbol;

public Dtl() {}

public Dtl(String tickerSymbol) {
this.tickerSymbol = tickerSymbol;
}

public Long getId() {
return id;
}

public String getTickerSymbol() {
return tickerSymbol;
}

public void setTickerSymbol(String tickerSymbol) {
this.tickerSymbol = tickerSymbol;
}
}

主Repository:

public interface GetDtlP extends JpaRepository<Dtl, Long> {
List<Dtl> findByTickerSymbol(String tickerSymbol);
}

次数据源:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactorySecondary",
transactionManagerRef = "transactionManagerSecondary",
basePackages = {"com.example.demo.s"})
public class SecondaryConfig {
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}

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

@Autowired
private JpaProperties jpaProperties;

private Map<String, Object> getVendorProperties() {
return jpaProperties.getHibernateProperties(new HibernateSettings());
}

@Bean(name = "entityManagerFactorySecondary")
public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary(EntityManagerFactoryBuilder builder) {
return builder.
dataSource(secondaryDataSource)
.properties(getVendorProperties())
.packages("com.example.demo.s")
.persistenceUnit("SecondaryPersistenceUnit")
.build();
}

@Bean(name = "entityManagerSecondary")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactorySecondary(builder).getObject().createEntityManager();
}

@Bean(name = "transactionManagerSecondary")
public PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());
}
}

次Entity:

@Entity
@Table(name = "xx")
public class Dtl {
@Id
@Column(name = "id")
private Long id;

@Column(name = "TICKER_SYMBOL")
private String tickerSymbol;

public Dtl() {}

public Dtl(String tickerSymbol) {
this.tickerSymbol = tickerSymbol;
}

public Long getId() {
return id;
}

public String getTickerSymbol() {
return tickerSymbol;
}

public void setTickerSymbol(String tickerSymbol) {
this.tickerSymbol = tickerSymbol;
}
}

次Repository:

public interface GetDtlS extends JpaRepository<Dtl, Long> {
List<Dtl> findByTickerSymbol(String tickerSymbol);
}

测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class JpaTest {

@Autowired
protected GetDtlP getDtlP;

@Autowired
protected GetDtlS getDtlS;

@Test
public void test() throws Exception {
List a = getDtlP.findByTickerSymbol("3");
List b = getDtlS.findByTickerSymbol("3");
Assert.assertEquals(a, b);
}
}

转载于:https://www.cnblogs.com/ylpb/p/9209802.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)

By Lthis 上个月就想写了&#xff0c;一直没时间...网上大概搜了一下&#xff0c;原理与操作倒是一大堆&#xff0c;一直没看到源码实现&#xff0c;总得有人动手&#xff0c;这回轮到我了。东西写得很烂&#xff0c;请大牛勿喷。一直觉得靠源码的方式驱动学习是非常好的一种学…

python装饰器的使用

借用装饰器&#xff0c;我们可以批量的对老的函数进行改造或扩展老函数功能&#xff0c;比如需要对函数的接收参数进行过滤&#xff0c;Flash的url路由功能就是使用的这个方式 def dropoushu(): # 这一层函数可以去掉&#xff0c;如果去掉了&#xff0c;则使用checkjiou这种方…

7_文件上传漏洞

文件上传漏洞 当文件上传时&#xff0c;若服务端脚本语言未对上传的文件进行严格验证和过滤&#xff0c;若恶意用户上传恶意的脚本文件时&#xff0c;就有可能控制整个网站甚至是服务器&#xff0c;这就是文件上传漏洞。 权限 1.网站后台权限&#xff1a;登陆了后台&#xff0…

mysql数据库如何实现分页查询_不同数据库的分页查询实现方法总结

分页查询是数据库查询中经常用到的一项操作&#xff0c;对查询出来的结果进行分页查询可以方便浏览。那么Oracle、SQL Server、MySQL是如何实现查询的呢&#xff1f;本文我们就来介绍这一部分内容。首先我们先看一下SQL Server 数据库中SQL语句查询分页数据的解决方案&#xff…

POJ - 3842 An Industrial Spy dfs(水)

题意:给你一串数字&#xff0c;最少一个&#xff0c;最多七个&#xff0c;问用这里面的数字能组成多少素数&#xff0c;不重复。 思路&#xff1a;之前还遍历10000000的每一个素数&#xff0c;结果超时&#xff0c;后来发现直接dfs就可以了&#xff0c;只是标记一下做过的数。 …

飞机大战小游戏1.0版本

小时候大家应该都玩过飞机大战吧&#xff0c;这就是仿的一个飞机大战&#xff0c;但是没有写的很全&#xff0c;只能玩一次&#xff0c;死掉之后需要刷新页面玩第二次&#xff0c;话不说多&#xff0c;上代码&#xff1a; 初始页面&#xff1a; 整个的html代码还是很少&#xf…

记一次Jquery获取值的典型错误

直接上代码&#xff1a; 代码很简单&#xff0c;通过Post的形式提交参数&#xff0c;但是发现提交的data总是空&#xff0c;昨晚有点纳闷&#xff0c;今天一看才发现。。。 获取值得时候的顺序有问题&#xff0c;获取值应该是在onclick事件中。 综上&#xff1a;写Jquery的时间…

android 调用java接口_android调用java的web service接口

android中通过webservice调用服务器端其实还是很简单的&#xff0c;只要按部就班的按照下面步骤进行即可&#xff1a;(1)创建HttpTransportSE对象&#xff0c;该对象用于调用WebService操作代码如下:HttpTransportSE ht new HttpTransportSE(SERVICE_URL);(2)创建SoapSerializ…

iOS: TableView如何刷新指定的cell 或section

/一个section刷新 NSIndexSet *indexSet[[NSIndexSet alloc]initWithIndex:2]; [tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic]; //一个cell刷新 NSIndexPath *indexPath[NSIndexPath indexPathForRow:3 inSection:0…

Skype For Business 2015实战系列14:创建Office Web App服务器场

Skype For Business 2015实战系列14&#xff1a;创建Office Web App服务器场前面的操作中我们已经成功的安装了Office Web App Server&#xff0c;今天我们将创建Office Web App服务器场。具体步骤如下:配置证书&#xff1a;登陆到OWA服务器,打开服务器管理器&#xff0c;点击“…

https://cwiki.apache.org/confluence/display/FLINK/FLIP-24+-+SQL+Client

https://cwiki.apache.org/confluence/display/FLINK/FLIP-24-SQLClient转载于:https://www.cnblogs.com/WCFGROUP/p/9214589.html

java ee me se_java EE ME SE有什么关系

1. Java SE(Java Platform&#xff0c;Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类&#xff0c;为 Java Platform&#xff0c;Enterprise Edition(Jav…

Android第三夜

Paint的设置方法 setAntiAlias&#xff1a;这是画笔的锯齿效 setColor setARGB setAlpha setTextSize setStyle setStrokeWidth getColor getAlpha Canvas绘制常见图形的方法 1&#xff0c;绘制直线 左上角是0.0点 drawLine(float startX,float startY,float stopX,float stopY…

JavaScript websocket 实例

实例: 即时通讯聊天室demo可以打开两个页面互相发送消息查看。 websocket.js /* 判断浏览器是否内置了websocket */if (WebSocket in window) {websocket new WebSocket(ws://180.76.144.202:19910/websocket);}websocket->onerror onerror;websocket->onopen onopen…

SQL Server 2008 基础

SQL Server 2008 基础SQL流程TDS是一种协议&#xff0c;一系列描述两个计算机间如何传输数据的规则。象别的协议一样&#xff0c;它定义了传输信息的类型和他们传输的顺序。总之&#xff0c;协议描述了“线上的位”&#xff0c;即数据如何流动。表格数据流协议是建立在TCP/IP N…

python异步处理请求_如何一次在python中发送异步http请求?

1)创建一个Queue.Queue对象2)根据您的喜好制作尽可能多的“工作”线程,从Queue.Queue读取3)将作业提供给Queue.Queue工作线程将按照它们放置的顺序读取Queue.Queue从文件中读取行并将它们放入Queue.Queue的示例import sysimport urllib2import urllibfrom Queue import Queueim…

如何通过Git GUI将自己本地的项目上传至Github

ithud是一个程序员以后成长都会使用到的&#xff0c;先不说很多优秀的开源框架都在这上面发布&#xff0c;光是用来管理自己的demo都已经让人感到很方便&#xff0c;用得也很顺畅。而真正让我下定决心使用github的原因是因为两次误操作&#xff0c;将自己所有的学习demo全都删除…

lucene解决全文检索word2003,word2007的办法

在上一篇文章中 &#xff0c;lucene只能全文检索word2003&#xff0c;无法检索2007&#xff0c;并且只能加载部分内容&#xff0c;无法加载全文内容。为解决此问题&#xff0c;找到了如下方法 POI 读取word (word 2003 和 word 2007) 最近在给客户做系统的时候&#xff0c;用户…

【JSP笔记】第三章 JSP内置对象【上】

2019独角兽企业重金招聘Python工程师标准>>> 1.内置对象简介&#xff1a;JSP内置对象是WEB容器创建的一组对象&#xff0c;不使用new关键就可以是用的对象。 <% out.println(123); %> 2.九大内置对象&#xff1a; outrequestresponsesessionapplication Page …

自定义标签 —— 实现时间转换和输出功能

第一步&#xff1a;导入jar包 jsp-api-2.2-sources.jar <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api --> <dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.…