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

网站建设类的职位取名网站怎么做

网站建设类的职位,取名网站怎么做,企业信息管理系统案例,旅社网站怎么建立要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…

       要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。

       spring提供了一个注解@EnableMongoRepositories 用来注释在某些路径下的MongoRepositor实现类使用哪个MongoTemplate实例。当然如果我们是直接使用MongoTemplate操作,那么只需要使用于数据库对应的MongoTemplate即可。

代码结果如下:

首先实现两个config,实现对MongoTemplate和MongoDbFactory的配置

  • mongoTemplate1和mongoDbFactory1:并使用@EnableMongoRepositories指定在“com.zhong.springdemo.mangodbdome.mongodb1”目录下的MongoRepositor使用这些配置。
@Configuration
//指定com.zhong.springdemo.mangodbdome.mongodb1路径下的MongoRepository使用 容器中的  mongoTemplate1实例
@EnableMongoRepositories(mongoTemplateRef = "mongoTemplate1",basePackages = {"com.zhong.springdemo.mangodbdome.mongodb1"})
public class MongoDbConfigure {@AutowiredMongoDbFactoryProperties mongoDbFactoryProperties;/*** 自定义 mongoTemplate 实现多数据源配置*/@Bean("mongoTemplate1")public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory1, MongoMappingContext context){MappingMongoConverter mappingMongoConverter = mappingMongoConverter(mongoDbFactory1, context);MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory1, mappingMongoConverter);return mongoTemplate;}/*** 自定义mongo连接池* @param properties 私有配置* @return*/@Bean("mongoDbFactory1")public MongoDbFactory mongoDbFactory(MongoDbProperties properties) {//创建客户端参数MongoClientOptions options = mongoClientOptions(properties);//解析地址List<ServerAddress> serverAddresses = new ArrayList<>();for (String address : properties.getAddress().split(",")) {String[] hostAndPort = address.split(":");String host = hostAndPort[0];Integer port = Integer.parseInt(hostAndPort[1]);ServerAddress serverAddress = new ServerAddress(host, port);serverAddresses.add(serverAddress);}//创建认证客户端MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(properties.getUsername(),properties.getAuthenticationDatabase() != null ? properties.getAuthenticationDatabase() : properties.getDatabase(),properties.getPassword().toCharArray());MongoClient mongoClient = new MongoClient(serverAddresses.get(0), mongoCredential, options);//集群模式if (serverAddresses.size() > 1) {mongoClient = new MongoClient(serverAddresses, mongoCredential, null);}/** 创建非认证客户端*///MongoClient mongoClient = new MongoClient(serverAddresses, mongoClientOptions);return new SimpleMongoDbFactory(mongoClient, properties.getDatabase());}/*** mongo客户端参数配置* @return*/private MongoClientOptions mongoClientOptions(MongoDbProperties properties) {MongoDbFactoryProperties factoryProperties = this.mongoDbFactoryProperties;return MongoClientOptions.builder().connectTimeout(factoryProperties.getConnectionTimeoutMs()).socketTimeout(factoryProperties.getReadTimeoutMs()).applicationName(factoryProperties.getApplicationName()).heartbeatConnectTimeout(factoryProperties.getHeartbeatConnectionTimeoutMs()).heartbeatSocketTimeout(factoryProperties.getHeartbeatReadTimeoutMs()).heartbeatFrequency(factoryProperties.getHeartbeatFrequencyMs()).minHeartbeatFrequency(factoryProperties.getMinHeartbeatFrequencyMs()).maxConnectionIdleTime(factoryProperties.getConnectionMaxIdleTimeMs()).maxConnectionLifeTime(factoryProperties.getConnectionMaxLifeTimeMs()).maxWaitTime(factoryProperties.getPoolMaxWaitTimeMs()).connectionsPerHost(factoryProperties.getConnectionsPerHost()).threadsAllowedToBlockForConnectionMultiplier(factoryProperties.getThreadsAllowedToBlockForConnectionMultiplier()).minConnectionsPerHost(factoryProperties.getMinConnectionsPerHost()).build();}/*** monogo 转换器* @return*/private MappingMongoConverter mappingMongoConverter(MongoDbFactory mongoDbFactory1, MongoMappingContext context) {DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory1);MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);//此处是去除插入数据库的 _class 字段mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));return mappingConverter;}
}
  • mongoTemplate2和mongoDbFactory2:并使用@EnableMongoRepositories指定在“com.zhong.springdemo.mangodbdome.mongodb2”目录下的MongoRepositor使用这些配置。
@Configuration
//指定com.zhong.springdemo.mangodbdome.mongodb2路径下的MongoRepository使用 容器中的  mongoTemplate2实例
@EnableMongoRepositories(mongoTemplateRef = "mongoTemplate2",basePackages = {"com.zhong.springdemo.mangodbdome.mongodb2"})
public class MongoDbConfigure2 {@AutowiredMongoDbFactoryProperties mongoDbFactoryProperties;/*** 自定义 mongoTemplate 实现多数据源配置*/@Bean("mongoTemplate2")public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory2, MongoMappingContext context){MappingMongoConverter mappingMongoConverter = mappingMongoConverter(mongoDbFactory2, context);MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory2, mappingMongoConverter);return mongoTemplate;}/*** 自定义mongo连接池* @param properties 私有配置* @return*/@Bean("mongoDbFactory2")public MongoDbFactory mongoDbFactory2(MongoDbProperties2 properties) {//创建客户端参数MongoClientOptions options = mongoClientOptions(properties);//解析地址List<ServerAddress> serverAddresses = new ArrayList<>();for (String address : properties.getAddress().split(",")) {String[] hostAndPort = address.split(":");String host = hostAndPort[0];Integer port = Integer.parseInt(hostAndPort[1]);ServerAddress serverAddress = new ServerAddress(host, port);serverAddresses.add(serverAddress);}//创建认证客户端MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(properties.getUsername(),properties.getAuthenticationDatabase() != null ? properties.getAuthenticationDatabase() : properties.getDatabase(),properties.getPassword().toCharArray());MongoClient mongoClient = new MongoClient(serverAddresses.get(0), mongoCredential, options);//集群模式if (serverAddresses.size() > 1) {mongoClient = new MongoClient(serverAddresses, mongoCredential, null);}/** 创建非认证客户端*///MongoClient mongoClient = new MongoClient(serverAddresses, mongoClientOptions);return new SimpleMongoDbFactory(mongoClient, properties.getDatabase());}/*** mongo客户端参数配置* @return*/private MongoClientOptions mongoClientOptions(MongoDbProperties2 properties) {MongoDbFactoryProperties factoryProperties = this.mongoDbFactoryProperties;return MongoClientOptions.builder().connectTimeout(factoryProperties.getConnectionTimeoutMs()).socketTimeout(factoryProperties.getReadTimeoutMs()).applicationName(factoryProperties.getApplicationName()).heartbeatConnectTimeout(factoryProperties.getHeartbeatConnectionTimeoutMs()).heartbeatSocketTimeout(factoryProperties.getHeartbeatReadTimeoutMs()).heartbeatFrequency(factoryProperties.getHeartbeatFrequencyMs()).minHeartbeatFrequency(factoryProperties.getMinHeartbeatFrequencyMs()).maxConnectionIdleTime(factoryProperties.getConnectionMaxIdleTimeMs()).maxConnectionLifeTime(factoryProperties.getConnectionMaxLifeTimeMs()).maxWaitTime(factoryProperties.getPoolMaxWaitTimeMs()).connectionsPerHost(factoryProperties.getConnectionsPerHost()).threadsAllowedToBlockForConnectionMultiplier(factoryProperties.getThreadsAllowedToBlockForConnectionMultiplier()).minConnectionsPerHost(factoryProperties.getMinConnectionsPerHost()).build();}/*** monogo 转换器* @return*/private MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context) {DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);//此处是去除插入数据库的 _class 字段mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));return mappingConverter;}
}
  • Repository实现

实现mongdb1下的repository---UserInfoTestRepository,UserInfoTestRepository使用的是mongoTemplate2和mongoDbFactory2

@Repository
public interface UserInfoTestRepository extends MongoRepository<UserInfoEntity, String> {List<UserInfoEntity> findByUserNameLike(String username);List<UserInfoEntity> findByUserName(String username);
}

实现mongdb2下的repository---UserInfRepository, UserInfRepository使用的是mongoTemplate1和mongoDbFactory1

@Repository
public interface UserInfoRepository extends MongoRepository<UserInfoEntity, String> {List<UserInfoEntity> findByUserNameLike(String username);List<UserInfoEntity> findByUserName(String username);
}
  •  实现service

使用Repository实现的访问的service

@Service
public class UserInfoServiceImpl implements UserInfoService {@Autowiredprivate UserInfoRepository userInfoRepository;@Autowiredprivate UserInfoTestRepository userInfoTestRepository;@Overridepublic List<UserInfoEntity> findByUserName(String userName){return userInfoRepository.findByUserName(userName);}@Overridepublic int saveTestUser(List<UserInfoDto> userInfoDtos) {List<UserInfoEntity> userInfoEntities = Lists.newArrayList();for(UserInfoDto userInfoDto : userInfoDtos){UserInfoEntity userInfoEntity = new UserInfoEntity();BeanUtils.copyProperties(userInfoDto, userInfoEntity);userInfoEntities.add(userInfoEntity);}userInfoTestRepository.saveAll(userInfoEntities);return userInfoEntities.size();}@Overridepublic int saveUser(List<UserInfoDto> userInfoDtos) {List<UserInfoEntity> userInfoEntities = Lists.newArrayList();for(UserInfoDto userInfoDto : userInfoDtos){UserInfoEntity userInfoEntity = new UserInfoEntity();BeanUtils.copyProperties(userInfoDto, userInfoEntity);userInfoEntities.add(userInfoEntity);}userInfoRepository.saveAll(userInfoEntities);return userInfoEntities.size();}
}

使用MongoTemplate实现的访问的service

@Service
public class UserInfoMongoTemplateServiceImpl implements UserInfoMongoTemplateService {@AutowiredMongoTemplate mongoTemplate1;@AutowiredMongoTemplate mongoTemplate2;@Overridepublic List<UserInfoEntity> findByUserName(String userName){Criteria criteria = Criteria.where("user_name").is(userName);return mongoTemplate1.find(getQueryFilter(criteria), UserInfoEntity.class);}@Overridepublic int saveTestUser(List<UserInfoDto> userInfoDtos) {List<UserInfoEntity> userInfoEntities = Lists.newArrayList();for(UserInfoDto userInfoDto : userInfoDtos){UserInfoEntity userInfoEntity = new UserInfoEntity();BeanUtils.copyProperties(userInfoDto, userInfoEntity);userInfoEntities.add(userInfoEntity);}mongoTemplate1.insert(userInfoEntities, UserInfoEntity.class);return userInfoEntities.size();}@Overridepublic int saveUser(List<UserInfoDto> userInfoDtos) {List<UserInfoEntity> userInfoEntities = Lists.newArrayList();for(UserInfoDto userInfoDto : userInfoDtos){UserInfoEntity userInfoEntity = new UserInfoEntity();BeanUtils.copyProperties(userInfoDto, userInfoEntity);userInfoEntities.add(userInfoEntity);}mongoTemplate2.insert(userInfoEntities, UserInfoEntity.class);return userInfoEntities.size();}private Query getQueryFilter(Criteria criteria, String  ...parms) {criteria = criteria == null ? new Criteria() : criteria;Query query = new Query();query.addCriteria(criteria);if(parms != null && parms.length > 0){Field fields = query.fields();for(String parm : parms){fields.include(parm);}}return query;}
}

 两个数据源信息配置properties.yaml:

zhong:#自定义的mongodb测试data:mongodb:database: zhong-mongopassword: 123456address: 127.0.0.1:27017username: adminauthenticationDatabase: adminmongodb2:database: test-mongopassword: 123456address: 127.0.0.1:27017username: adminauthenticationDatabase: admin

测试类:

@Component
public class MongoStartTest implements CommandLineRunner {@AutowiredUserInfoService userInfoService;@AutowiredUserInfoMongoTemplateService userInfoMongoTemplateService;@Overridepublic void run(String... args) throws Exception {for(int i = 0; i < 25; i++){UserInfoDto userInfoDto = new UserInfoDto();userInfoDto.setUserId(UUID.randomUUID().toString().replace("-", ""));userInfoDto.setUserName("用户名" + i);userInfoDto.setAuthor("登录名" + i);userInfoDto.setPwd("123456" + i);userInfoDto.setCreateTime(new Date());userInfoService.saveTestUser(Lists.newArrayList(userInfoDto));userInfoService.saveUser(Lists.newArrayList(userInfoDto));}for(int i = 100; i < 125; i++){UserInfoDto userInfoDto = new UserInfoDto();userInfoDto.setUserId(UUID.randomUUID().toString().replace("-", ""));userInfoDto.setUserName("用户名" + i);userInfoDto.setAuthor("登录名" + i);userInfoDto.setPwd("123456" + i);userInfoDto.setCreateTime(new Date());userInfoMongoTemplateService.saveTestUser(Lists.newArrayList(userInfoDto));userInfoMongoTemplateService.saveUser(Lists.newArrayList(userInfoDto));}userInfoService.findByUserName("用户名");userInfoMongoTemplateService.findByUserName("用户名");}
}

结果如图:

数据的确被插入到不同的库中了

参考:

http://www.voidcn.com/article/p-zqjtjvhm-bvu.html

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

相关文章:

  • 建立公司网站需要注意什么关键词seo培训
  • 河南便宜网站建设wordpress後台建站
  • 在线安装软件网站开发wordpress 4.8中文
  • 包头网站开发公司软文广告是什么意思
  • 网页设计实训报告总结万能模板沈阳网站关键词优化哪家好
  • 做门户网站怎么赚钱深圳网站建站建设
  • c2c商城网站建设费用微商城怎么做
  • 北京市电力建设公司网站温州网页制作模板
  • 长春火车站电话咨询电话设计师网红cad图库
  • 网站维护需要做那些事建设网站公司需要哪些证件
  • 夜夜做新郎网站在线视频网站开发的结构图
  • 制作软件的网站wordpress编辑可视化
  • 电商网站建设教学总结安徽建设工程信息网官
  • 做水果蔬菜生意网站保定网站建设模板联系方式
  • 建设网站要什么资料网站拥有权
  • 东莞政务网站建设方案网站关键字标签
  • 温州自助模板建站网站建设 工作室
  • iis7 建立网站网站建设教程网
  • 商业网站开发与设计WordPress数据库改名
  • 可信网站认证必须做吧怎么做跟P站一样的网站
  • 网站开发哪个公司好深圳装修招标信息网
  • 网站动态与静态山东官方网站建设
  • 做网站知乎网站建设的基本需求有哪些
  • 高端大气的网站制作建站推广公司
  • wordpress网站更改不见网站开发用什么字体一般
  • 小企业官方网站制作冰雪蜜城店加盟费多少
  • 新密做网站西安网站开发工程师
  • wordpress传不上站点绿色企业网站
  • 找南昌网站开发公司电话友情链接适用网站
  • 网站建设各个模块的功能google seo 营销网站