当前位置: 首页 > wzjs >正文

如何建立免费的网站厦门谷歌seo公司

如何建立免费的网站,厦门谷歌seo公司,上海焱灿网络,wordpress 主题 开发spring-data-jpa Alibaba Druid多数据源案例 很多情况下,应用需要连接多个数据库,基于此场景,我介绍如何使用spring-data-jpa Alibaba Druid配置多数据源。⚠️ 代码量有点大,请耐心假设一个场景数据库表服务器IP占用端口testor…

spring-data-jpa + Alibaba Druid多数据源案例

很多情况下,应用需要连接多个数据库,基于此场景,我介绍如何使用spring-data-jpa + Alibaba Druid配置多数据源。

⚠️
代码量有点大,请耐心

假设一个场景

数据库服务器IP占用端口
testorders(订单表)192.168.10.313306
demodetail(详情表)192.168.10.323306
trainusers(用户表)192.168.10.333306

pom.xml引入

<!--连接池-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version>
</dependency>
<!--数据库驱动-->
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope>
</dependency>
<!--spring data jpa-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

application.yaml配置

server:port: 8080
spring:datasource:ds1:url: jdbc:mysql://192.168.10.31:3306/testusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverds2:url: jdbc:mysql://192.168.10.33:3306/trainusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverds3:url: jdbc:mysql://192.168.10.32:3306/demousername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver

DataSource配置

为了让spring-data-jpa分别使用这三个库,那么我们需要配置3个datasource

package cn.train.springdruid.config.datasource;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.sql.DataSource;
/*** 多数据源配置* */
@Configuration
public class DataSourcesConfig {@Bean(name = {"ds1"})@Primary@ConfigurationProperties(prefix = "spring.datasource.ds1")public DataSource ds1() {DruidDataSource dataSource = DruidDataSourceBuilder.create().build();return dataSource;}@Bean(name = {"ds2"})@ConfigurationProperties(prefix = "spring.datasource.ds2")public DataSource ds2() {DruidDataSource dataSource = DruidDataSourceBuilder.create().build();return dataSource;}@Bean(name = {"ds3"})@ConfigurationProperties(prefix = "spring.datasource.ds3")public DataSource ds3() {DruidDataSource dataSource = DruidDataSourceBuilder.create().build();return dataSource;}
}

JPA配置

接下来针对每个datasource做单独的JPA配置

ds1的JPA配置

package cn.train.springdruid.config.datasource;import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import java.util.Properties;@Configuration(value = "ds1JPAConfig")
@EnableJpaRepositories(basePackages = "cn.train.springdruid.repositories.ds1",//repository包位置entityManagerFactoryRef = "ds1EntityManagerFactory",transactionManagerRef = "ds1TransactionManager"
)
public class Ds1JPAConfig {@Bean(name = {"ds1TransactionManager"})public PlatformTransactionManager ds1TransactionManager(@Qualifier("ds1EntityManagerFactory") EntityManagerFactory emf){return new JpaTransactionManager(emf);}@Bean(name = {"ds1EntityManagerFactory"})@Primarypublic LocalContainerEntityManagerFactoryBean ds1EntityManagerFactory(@Qualifier(value = "ds1") DataSource dataSource,JpaVendorAdapter vendorAdapter) {LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();entityManagerFactoryBean.setDataSource(dataSource);entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter);entityManagerFactoryBean.setPackagesToScan("cn.train.springdruid.entities.ds1");// entity包位置entityManagerFactoryBean.setJpaProperties(new Properties(){{put("hibernate.hbm2ddl.auto", "update");put("hibernate.show_sql", "true");put("hibernate.format_sql", "true");}});return entityManagerFactoryBean;}
}

ds2的JPA配置

package cn.train.springdruid.config.datasource;import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import java.util.Properties;@Configuration(value = "ds2JPAConfig")
@EnableJpaRepositories(basePackages = "cn.train.springdruid.repositories.ds2",//repository包位置entityManagerFactoryRef = "ds2EntityManagerFactory",transactionManagerRef = "ds2TransactionManager"
)
public class Ds2JPAConfig {@Bean(name = {"ds2TransactionManager"})public PlatformTransactionManager ds2TransactionManager(@Qualifier("ds2EntityManagerFactory") EntityManagerFactory emf){return new JpaTransactionManager(emf);}@Bean(name = {"ds2EntityManagerFactory"})public LocalContainerEntityManagerFactoryBean ds2EntityManagerFactory(@Qualifier(value = "ds2") DataSource dataSource,JpaVendorAdapter vendorAdapter) {LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();entityManagerFactoryBean.setDataSource(dataSource);entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter);entityManagerFactoryBean.setPackagesToScan("cn.train.springdruid.entities.ds2");// entity包位置entityManagerFactoryBean.setJpaProperties(new Properties(){{put("hibernate.hbm2ddl.auto", "update");put("hibernate.show_sql", "true");put("hibernate.format_sql", "true");}});return entityManagerFactoryBean;}
}

ds3的JPA配置

package cn.train.springdruid.config.datasource;import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import java.util.Properties;@Configuration(value = "ds3JPAConfig")
@EnableJpaRepositories(basePackages = "cn.train.springdruid.repositories.ds3",//repository包位置entityManagerFactoryRef = "ds3EntityManagerFactory",transactionManagerRef = "ds3TransactionManager"
)
public class Ds3JPAConfig {@Bean(name = {"ds3TransactionManager"})public PlatformTransactionManager ds3TransactionManager(@Qualifier("ds3EntityManagerFactory") EntityManagerFactory emf){return new JpaTransactionManager(emf);}@Bean(name = {"ds3EntityManagerFactory"})public LocalContainerEntityManagerFactoryBean ds3EntityManagerFactory(@Qualifier(value = "ds3") DataSource dataSource,JpaVendorAdapter vendorAdapter) {LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();entityManagerFactoryBean.setDataSource(dataSource);entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter);entityManagerFactoryBean.setPackagesToScan("cn.train.springdruid.entities.ds3");// entity包位置entityManagerFactoryBean.setJpaProperties(new Properties(){{put("hibernate.hbm2ddl.auto", "update");put("hibernate.show_sql", "true");put("hibernate.format_sql", "true");}});return entityManagerFactoryBean;}
}

ds1的repository包为:cn.train.springdruid.repositories.ds1,其中是OrderRepository


import cn.train.springdruid.entities.ds1.Order;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository(value = "orderRepository")
public interface OrderRepository extends JpaRepository<Order, Long> {
}

ds2的repository包为:cn.train.springdruid.repositories.ds2,其中是UserRepository

package cn.train.springdruid.repositories.ds2;import cn.train.springdruid.entities.ds2.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository(value = "userRepository")
public interface UserRepository extends JpaRepository<User, Long> {
}

ds3的repository包为:cn.train.springdruid.repositories.ds3,其中是DetailRepository

package cn.train.springdruid.repositories.ds3;import cn.train.springdruid.entities.ds3.Detail;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository(value = "detailRepository")
public interface DetailRepository extends JpaRepository<Detail, Long> {
}

entity

ds1的entity包为:cn.train.springdruid.entities.ds1,其中是Order

package cn.train.springdruid.entities.ds1;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "orders")
public class Order {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "order_name")private String name;@Column(name = "order_price")private Integer price;
}

ds2的entity包为:cn.train.springdruid.entities.ds2,其中是:User

package cn.train.springdruid.entities.ds2;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "users")
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "user_name")private String name;@Column(name = "user_age")private Integer age;
}

ds3的entity包为:cn.train.springdruid.entities.ds3,其中是:Detail

package cn.train.springdruid.entities.ds3;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "detail")
public class Detail {@Id@GeneratedValue(strategy = GenerationType.SEQUENCE)private Long id;@Column(name = "description")private String description;
}

由此,就是整个多数据源配置与管理的全部核心代码

http://www.dtcms.com/wzjs/461284.html

相关文章:

  • 中国建设银行网站怎么改支付密码是什么泰安百度推广代理
  • 用asp.net 做网站青岛seo排名扣费
  • 风险网站怎么解决方法电子商务网站设计方案
  • 做网站的开源代码2022智慧树互联网与营销创新
  • 建站售后服务危机公关
  • 佛山专业英文网站建设百度云资源搜索入口
  • 企业门户定制网站建设公司百度高级搜索页面
  • 网站备案查询到什么资料营销托管全网营销推广
  • 折扣网站模板优化网站推广教程排名
  • 今日合肥发现一例seo搜索引擎优化岗位要求
  • 做视频网站需要流量百度一下打开网页
  • 京东商城网站建设目标关键词搜索引擎工具爱站
  • 企业宣传片短视频制作seo网络优化专员是什么意思
  • 邹城网站建设学it需要什么学历基础
  • wordpress 自动保存图片重庆seo论
  • 2018做网站前景好么app用户量排名
  • 做维修那个网站发布信息好seo3
  • 手机软件编程新人学会seo
  • 搜索网站做推广引流最好的推广方法
  • 各大网站搜索引擎天津seo排名
  • 广州有哪些做网站专业的公司西安网是科技发展有限公司
  • 湖南专业网站建设服务数据网站
  • 北京赛车手机网站建设怎样自己开发一款软件
  • 沭阳奥体小区做网站的网络营销做得好的公司
  • 黑彩网站建设运营廊坊首页霸屏排名优化
  • 云南竞价网络推广托管seo托管服务
  • 武汉百度建网站提交网站收录入口
  • 企业网站建设的类型有哪些网站推广的基本手段有哪些
  • 滨州内做网站系统的公司谷歌商店下载
  • 电子商务网站的建设怎么开通网站平台