Advertisement

spring boot 连接mongodb,多数据源

阅读量:

pom

复制代码
     <dependency>

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

2.yml

复制代码
 server:

    
   port: 8088
    
  
    
 spring:
    
   data:
    
     mongodb:
    
       primary:
    
     uri: mongodb://name:passward123@192.168.34.160:27017/test_1?slaveOk=true
    
       secondary:
    
     uri: mongodb://name:passward123@192.168.34.160:27017/test_2?slaveOk=true

如果出现,uri中使用特殊字符。使用16进制进行URL编码代替。(@被使用,%40替换。:被使用,%3A替换)

3.目录结构

4. game实体类

复制代码
 @Document(collection = "info_account")

    
 @Accessors(chain = true)
    
 @Data
    
 public class AccountInfo {
    
  
    
     @Id
    
     private String account;
    
  
    
     private int gameId;
    
  
    
     private String passWord;
    
  
    
     private String token;
    
  
    
     private long createTime;
    
     /*机器码,手机唯一*/
    
     private String machineId;
    
     /*最后登陆时间*/
    
     private long lastLoginTime;
    
     /*最后登陆的服务器id*/
    
     private int lastLoginServerId;
    
     /*解封时间*/
    
     private long disableTime;
    
     /*最后登陆的ip*/
    
     private long lastLoginIp;
    
  
    
 }

game repository

复制代码
 public interface AccountRepository extends MongoRepository<AccountInfo,String> {

    
  
    
     List<AccountInfo> findAllByAccount(String account);
    
 }

game 数据源配置

复制代码
 @Configuration

    
 @EnableMongoRepositories(basePackages = "com.gray.database.game",
    
     mongoTemplateRef = "gameDBTemplate")
    
 public class GameDBConfig {
    
  
    
     @Bean
    
     @Primary
    
     @ConfigurationProperties(prefix="spring.data.mongodb.primary")
    
     public MongoProperties primaryMongoProperties() {
    
     return new MongoProperties();
    
     }
    
  
    
     @Primary
    
     @Bean(name = "gameDBTemplate")
    
     public MongoTemplate primaryMongoTemplate() throws Exception {
    
     return new MongoTemplate(primaryFactory(primaryMongoProperties()));
    
     }
    
  
    
     @Bean
    
     @Primary
    
     public MongoDbFactory primaryFactory(MongoProperties mongoProperties) throws Exception {
    
     ConnectionString connectionString = new ConnectionString(mongoProperties.getUri());
    
     return new SimpleMongoClientDbFactory(connectionString);
    
     }
    
 }

5. gm实体类

复制代码
 @Document(collection = "gm_player_items_change")

    
 @Accessors(chain = true)
    
 @Data
    
 public class GmPlayerItemsChange {
    
  
    
     @Id
    
     private ObjectId id;
    
  
    
     private String playerId;
    
  
    
     private int itemId;
    
  
    
     private UseTypeEnum useType = UseTypeEnum.NONE;
    
     /*变动前数量*/
    
     private long lastNumber;
    
     /*变动后数量一*/
    
     private long presentNumber;
    
     /*创建时间*/
    
     private long createTime;
    
  
    
 }

gm repository

复制代码
 public interface GmPlayerItemsChangeRepository extends MongoRepository<GmPlayerItemsChange,String> {

    
     
    
 }

gm数据源配置

复制代码
 @Configuration

    
 @EnableMongoRepositories(basePackages = "com.gray.database.gm",
    
     mongoTemplateRef = "gmDBTemplate")
    
 public class GmDBConfig {
    
  
    
     @Bean
    
     @ConfigurationProperties(prefix="spring.data.mongodb.secondary")
    
     public MongoProperties secondaryMongoProperties() {
    
     return new MongoProperties();
    
     }
    
  
    
     @Bean(name = "gmDBTemplate")
    
     public MongoTemplate secondaryMongoTemplate() throws Exception {
    
     return new MongoTemplate(secondaryFactory(secondaryMongoProperties()));
    
     }
    
  
    
     @Bean
    
     public MongoDbFactory secondaryFactory(MongoProperties mongoProperties) throws Exception {
    
     ConnectionString connectionString = new ConnectionString(mongoProperties.getUri());
    
     return new SimpleMongoClientDbFactory(connectionString);
    
     }
    
 }

6.测试类

复制代码
 @RestController

    
 public class TestController {
    
  
    
  
    
     @Autowired
    
     AccountRepository studentRepository;
    
  
    
     @Autowired
    
     GmPlayerItemsChangeRepository changeRepository;
    
  
    
     @GetMapping("/addMongo")
    
     public Object addMongo(){
    
     AccountInfo accountInfo = new AccountInfo();
    
  
    
     int id = (int)(System.currentTimeMillis() % 100000);
    
     accountInfo.setAccount("setAccount" + id);
    
     accountInfo.setCreateTime(System.currentTimeMillis());
    
     accountInfo.setGameId(id);
    
     studentRepository.save(accountInfo);
    
  
    
     return studentRepository.findAll();
    
     }
    
  
    
     @GetMapping("/addItemChange")
    
     public Object addItemChange(){
    
     GmPlayerItemsChange itemsChange = new GmPlayerItemsChange();
    
  
    
     int id = (int)(System.currentTimeMillis() % 100000);
    
     itemsChange.setItemId(id);
    
     itemsChange.setLastNumber(123);
    
     itemsChange.setPlayerId("playerId");
    
     itemsChange.setUseType(UseTypeEnum.SHOP);
    
     changeRepository.save(itemsChange);
    
  
    
     return changeRepository.findAll();
    
     }
    
 }

全部评论 (0)

还没有任何评论哟~