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)
还没有任何评论哟~
