集成多数据源

This commit is contained in:
xiangwbs
2018-06-03 12:26:14 +08:00
parent 36b0a6b371
commit ec545fb481
12 changed files with 102 additions and 49 deletions
@@ -1,18 +1,17 @@
package com.xwbing.datasource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
@@ -20,12 +19,13 @@ import javax.sql.DataSource;
import java.util.Map;
/**
* 项目名称: boot-module-demo
* 创建时间: 2018/5/31 21:38
* 作者: xiangwb
* 说明: JpaDataSourceConfig
* 项目名称: boot-module-demo
* 创建时间: 2017/12/10 16:36
* 作者: xiangwb
*/
@Configuration
@EnableTransactionManagement
@PropertySource("classpath:druid.properties")
@EnableJpaRepositories(
entityManagerFactoryRef = "jpaEntityManagerFactory",
@@ -41,21 +41,39 @@ public class JpaDataSourceConfig {
return DruidDataSourceBuilder.create().build();
}
/**
* 配置entityManagerFactory
*
* @param builder
* @return
*/
@Bean(name = "jpaEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(dataSource())
.properties(getProperties(dataSource()))
.properties(getVendorProperties(dataSource()))
.packages("com.xwbing.domain.entity")
.persistenceUnit("jpaPersistenceUnit")
.build();
}
/**
* 配置entityManager
*
* @param builder
* @return
*/
@Bean(name = "japEntityManager")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactory(builder).getObject().createEntityManager();
}
/**
* 配置事务
*
* @param builder
* @return
*/
@Bean(name = "jpaTransactionManager")
public PlatformTransactionManager dataSourceTransactionManager(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(entityManagerFactory(builder).getObject());
@@ -67,7 +85,7 @@ public class JpaDataSourceConfig {
* @param dataSource
* @return
*/
private Map<String, String> getProperties(DataSource dataSource) {
private Map<String, String> getVendorProperties(DataSource dataSource) {
return jpaProperties.getHibernateProperties(dataSource);
}
}
}
@@ -26,28 +26,28 @@ import java.util.List;
public class SysUser extends BaseEntity {
private static final long serialVersionUID = -2447528751353457021L;
public static String table = "sys_user_info";
@ApiModelProperty(value = "用户名",example = "xxx",required = true)
@NotBlank(message = "用户名不能为空")
@Length(min = 1, max = 20, message = "用户名长度为1-20")
@ApiModelProperty(value = "用户名", required = true)
@Column(name = "user_name")
private String userName;
@ApiModelProperty(value = "姓名",example = "xxx",required = true)
@NotBlank(message = "姓名不能为空")
@Length(min = 1, max = 5, message = "姓名长度为1-5")
@Length(min = 1, max = 20, message = "姓名长度为1-5")
@ApiModelProperty(value = "姓名", required = true)
private String name;
@ApiModelProperty(value = "邮箱",example = "@163.com",required = true)
@NotBlank(message = "邮箱不能为空")
@Email(message = "邮箱格式有误")
@ApiModelProperty(value = "邮箱", example = "@163.com", required = true)
private String mail;
@ApiModelProperty(value = "性别",example = "1",required = true)
@NotBlank(message = "性别不能为空")
@Pattern(regexp = "[01]", message = "性别格式为0|1,0代表女,1代表男")
@ApiModelProperty(value = "性别(0|1)", example = "1", required = true)
private String sex;
@ApiModelProperty(value = "盐值",hidden = true)
@ApiModelProperty(value = "盐值", hidden = true)
private String salt;
@ApiModelProperty(value = "密码",hidden = true)
@ApiModelProperty(value = "密码", hidden = true)
private String password;
@ApiModelProperty(value = "是否为管理员",hidden = true)
@ApiModelProperty(value = "是否为管理员", hidden = true)
@Column(name = "is_admin")
private String isAdmin;
//临时字段
@@ -61,5 +61,4 @@ public class SysUser extends BaseEntity {
private transient List<SysAuthority> menus;
@ApiModelProperty(hidden = true)
private transient List<SysAuthority> buttons;
}
@@ -0,0 +1,32 @@
package com.xwbing.domain.mapper;
import java.util.List;
import java.util.Map;
/**
* 项目名称: boot-module-demo
* 创建时间: 2018/6/2 10:32
* 作者: xiangwb
* 说明: 基础mapper
*/
public interface BaseMapper<T> {
int save(T t);
int saveBatch(List<T> list);
int deleteById(String id);
int deleteByIds(String[] ids);
int delete(Map<String, Object> map);
int update(T t);
int updateBatch(List<T> list);
T findById(String id);
List<T> find(Map<String, Object> map);
List<T> findAll();
}
@@ -1,6 +1,7 @@
package com.xwbing.domain.mapper;
package com.xwbing.domain.mapper.sys;
import com.xwbing.domain.entity.sys.SysUser;
import com.xwbing.domain.mapper.BaseMapper;
import java.util.List;
@@ -10,7 +11,7 @@ import java.util.List;
* 作者: xiangwb
* 说明:
*/
public interface SysUserMapper {
public interface SysUserMapper extends BaseMapper<SysUser> {
// @Select("select * from sys_user_info")
List<SysUser> findall();
int save(SysUser sysUser);
@@ -1,9 +1,9 @@
##jdbc配置#####################################
##jdbc配置##
db1.driver-class-name=com.mysql.jdbc.Driver
db1.url=jdbc:mysql://127.0.0.1:3306/xwbing?useUnicode=true&characterEncoding=utf8&useSSL=false
db1.username=root
db1.password=xwbing
##连接池配置###############################
##连接池配置##
# 初始化大小,最小,最大
db1.initial-size=1
db1.min-idle=3
@@ -28,28 +28,6 @@ db1.filters=stat,wall,slf4j
db1.connect-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
#db1.useGlobalDataSourceStat=true
##WebStatFilter配置###################################
db1.web-stat-filter.enabled=false
db1.web-stat-filter.url-pattern=/*
db1.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
#sesison统计
db1.web-stat-filter.session-stat-enable=true
db1.web-stat-filter.session-stat-max-count=1000
db1.web-stat-filter.principal-session-name=
db1.web-stat-filter.principal-cookie-name=
#监控单个url调用的sql列表
db1.web-stat-filter.profile-enable=true
##StatViewServlet配置###############################
db1.stat-view-servlet.enabled=true
db1.stat-view-servlet.url-pattern=/druid/*
#禁用HTML页面上的"Reset All"功能
db1.stat-view-servlet.reset-enable=true
db1.stat-view-servlet.login-username=admin
db1.stat-view-servlet.login-password=123456
#IP白名单(没有配置或者为空,则允许所有访问)
db1.stat-view-servlet.allow=
#IP黑名单(存在共同时,deny优先于allow)
db1.stat-view-servlet.deny=
###########################################################################################################
db2.driver-class-name=com.mysql.jdbc.Driver
db2.url=jdbc:mysql://127.0.0.1:3306/xwbing?useUnicode=true&characterEncoding=utf8&useSSL=false
@@ -69,4 +47,27 @@ db2.pool-prepared-statements=true
db2.max-pool-prepared-statement-per-connection-size=20
db2.filters=stat,wall,slf4j
db2.connect-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
#db2.useGlobalDataSourceStat=true
#db2.useGlobalDataSourceStat=true
###########################################################################################################
##WebStatFilter配置##
spring.datasource.druid.web-stat-filter.enabled=false
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
#sesison统计
spring.datasource.druid.web-stat-filter.session-stat-enable=true
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000
spring.datasource.druid.web-stat-filter.principal-session-name=
spring.datasource.druid.web-stat-filter.principal-cookie-name=
#监控单个url调用的sql列表
spring.datasource.druid.web-stat-filter.profile-enable=true
##StatViewServlet配置##
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
#禁用HTML页面上的"Reset All"功能
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123456
#IP白名单(没有配置或者为空,则允许所有访问)
spring.datasource.druid.stat-view-servlet.allow=
#IP黑名单(存在共同时,deny优先于allow)
spring.datasource.druid.stat-view-servlet.deny=
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xwbing.domain.mapper.SysUserMapper">
<mapper namespace="com.xwbing.domain.mapper.sys.SysUserMapper">
<resultMap id="BaseResultMap" type="sysUser">
<id column="id" property="id"/>
<result column="create_time" property="createTime"/>
@@ -8,7 +8,10 @@
<result column="user_name" property="userName"/>
<result column="is_admin" property="isAdmin"/>
</resultMap>
<sql id="Base_Column_List">
<sql id="table">
sys_user_info
</sql>
<sql id="base_column">
user_id, user_name, password, phone
</sql>
<insert id="save" parameterType="com.xwbing.domain.entity.sys.SysUser" >
@@ -11,7 +11,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@@ -5,8 +5,7 @@ import com.xwbing.annotation.LogInfo;
import com.xwbing.domain.entity.ExpressInfo;
import com.xwbing.domain.entity.sys.SysUser;
import com.xwbing.domain.entity.vo.ExpressInfoVo;
import com.xwbing.domain.mapper.SysUserMapper;
import com.xwbing.exception.BusinessException;
import com.xwbing.domain.mapper.sys.SysUserMapper;
import com.xwbing.rabbit.Sender;
import com.xwbing.redis.RedisService;
import com.xwbing.service.rest.CookieSessionService;
@@ -56,6 +55,7 @@ public class TestControl {
@PostMapping("save")
public void save(@RequestBody SysUser sysUser) {
int save = sysUserMapper.save(sysUser);
sysUserMapper.save(sysUser);
System.out.println("shiwi");
}
@GetMapping("send")