11SpringBoot十一Spring boot中mongodb的使用Word文档下载推荐.docx
- 文档编号:5787577
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:11
- 大小:19.19KB
11SpringBoot十一Spring boot中mongodb的使用Word文档下载推荐.docx
《11SpringBoot十一Spring boot中mongodb的使用Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《11SpringBoot十一Spring boot中mongodb的使用Word文档下载推荐.docx(11页珍藏版)》请在冰点文库上搜索。
SpringBoot对各种流行的数据源都进行了封装,当然也包括了mongodb,下面给大家介绍如何在springboot中使用mongodb:
1、pom包配置
pom包里面添加spring-boot-starter-data-mongodb包引用
<
dependencies>
<
dependency>
groupId>
org.springframework.boot<
/groupId>
artifactId>
spring-boot-starter-data-mongodb<
/artifactId>
/dependency>
/dependencies>
2、在application.properties中添加配置
spring.data.mongodb.uri=mongodb:
//name:
pass@localhost:
27017/test
多个IP集群可以采用以下配置:
//user:
pwd@ip1:
port1,ip2:
port2/database
2、创建数据实体
publicclassUserEntityimplementsSerializable{
privatestaticfinallongserialVersionUID=-3258839839160856613L;
privateLongid;
privateStringuserName;
privateStringpassWord;
//getter、setter省略}
3、创建实体dao的增删改查操作
dao层实现了UserEntity对象的增删改查
@ComponentpublicclassUserDaoImplimplementsUserDao{
@Autowired
privateMongoTemplatemongoTemplate;
/**
*创建对象
*@paramuser
*/
@Override
publicvoidsaveUser(UserEntityuser){
mongoTemplate.save(user);
}
*根据用户名查询对象
*@paramuserName
*@return
publicUserEntityfindUserByUserName(StringuserName){
Queryquery=newQuery(Criteria.where("
userName"
).is(userName));
UserEntityuser=mongoTemplate.findOne(query,UserEntity.class);
returnuser;
*更新对象
publicvoidupdateUser(UserEntityuser){
id"
).is(user.getId()));
Updateupdate=newUpdate().set("
user.getUserName()).set("
passWord"
user.getPassWord());
//更新查询返回结果集的第一条
mongoTemplate.updateFirst(query,update,UserEntity.class);
//更新查询返回结果集的所有
//mongoTemplate.updateMulti(query,update,UserEntity.class);
*删除对象
*@paramid
publicvoiddeleteUserById(Longid){
).is(id));
mongoTemplate.remove(query,UserEntity.class);
}}
4、开发对应的测试方法
@RunWith(SpringRunner.class)@SpringBootTestpublicclassUserDaoTest{
privateUserDaouserDao;
@Test
publicvoidtestSaveUser()throwsException{
UserEntityuser=newUserEntity();
user.setId(2l);
user.setUserName("
小明"
);
user.setPassWord("
fffooo123"
userDao.saveUser(user);
publicvoidfindUserByUserName(){
UserEntityuser=userDao.findUserByUserName("
System.out.println("
useris"
+user);
publicvoidupdateUser(){
天空"
fffxxxx"
userDao.updateUser(user);
publicvoiddeleteUserById(){
userDao.deleteUserById(1l);
5、查看验证结果
可以使用工具mongoVUE工具来连接后直接图形化展示查看,也可以登录服务器用命令来查看
1.登录mongos
bin/mongo-hostlocalhost-port20000
2、切换到test库
usetest
3、查询userEntity集合数据
db.userEntity.find()
根据3查询的结果来观察测试用例的执行是否正确。
到此springboot对应mongodb的增删改查功能已经全部实现。
多数据源mongodb的使用
在多mongodb数据源的情况下,我们换种更优雅的方式来实现
添加lombok和spring-boot-autoconfigure包引用
org.projectlombok<
lombok<
spring-boot-autoconfigure<
version>
RELEASE<
/version>
∙
Lombok-是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。
简单试了以下这个工具还挺好玩的,加上注解我们就不用手动写getter\setter、构建方式类似的代码了。
spring-boot-autoconfigure-就是springboot的自动化配置
2、配置文件使用YAML的形式添加两条数据源,如下:
mongodb:
primary:
host:
192.168.9.60
port:
20000
database:
test
secondary:
test1
3、配置两个库的数据源
封装读取以mongodb开头的两个配置文件
@Data@ConfigurationProperties(prefix="
mongodb"
)publicclassMultipleMongoProperties{
privateMongoPropertiesprimary=newMongoProperties();
privateMongoPropertiessecondary=newMongoProperties();
配置不同包路径下使用不同的数据源
第一个库的封装
@Configuration@EnableMongoRepositories(basePackages="
com.neo.model.repository.primary"
mongoTemplateRef=PrimaryMongoConfig.MONGO_TEMPLATE)publicclassPrimaryMongoConfig{
protectedstaticfinalStringMONGO_TEMPLATE="
primaryMongoTemplate"
;
第二个库的封装
com.neo.model.repository.secondary"
mongoTemplateRef=SecondaryMongoConfig.MONGO_TEMPLATE)publicclassSecondaryMongoConfig{
secondaryMongoTemplate"
读取对应的配置信息并且构造对应的MongoTemplate
@ConfigurationpublicclassMultipleMongoConfig{
@Autowired
privateMultipleMongoPropertiesmongoProperties;
@Primary
@Bean(name=PrimaryMongoConfig.MONGO_TEMPLATE)
publicMongoTemplateprimaryMongoTemplate()throwsException{
returnnewMongoTemplate(primaryFactory(this.mongoProperties.getPrimary()));
}
@Bean
@Qualifier(SecondaryMongoConfig.MONGO_TEMPLATE)
publicMongoTemplatesecondaryMongoTemplate()throwsException{
returnnewMongoTemplate(secondaryFactory(this.mongoProperties.getSecondary()));
@Primary
publicMongoDbFactoryprimaryFactory(MongoPropertiesmongo)throwsException{
returnnewSimpleMongoDbFactory(newMongoClient(mongo.getHost(),mongo.getPort()),
mongo.getDatabase());
publicMongoDbFactorysecondaryFactory(MongoPropertiesmongo)throwsException{
}}
两个库的配置信息已经完成。
4、创建两个库分别对应的对象和Repository
借助lombok来构建对象
@Data@AllArgsConstructor@NoArgsConstructor@Document(collection="
first_mongo"
)publicclassPrimaryMongoObject{
@Id
privateStringid;
privateStringvalue;
@Override
publicStringtoString(){
return"
PrimaryMongoObject{"
+"
id='
"
+id+'
\'
'
value='
+value+'
+'
}'
对应的Repository
publicinterfacePrimaryRepositoryextendsMongoRepository<
PrimaryMongoObject,String>
{}
继承了MongoRepository会默认实现很多基本的增删改查,省了很多自己写dao层的代码
Secondary和上面的代码类似就不贴出来了
5、最后测试
@RunWith(SpringRunner.class)@SpringBootTestpublicclassMuliDatabaseTest{
privatePrimaryRepositoryprimaryRepository;
privateSecondaryRepositorysecondaryRepository;
publicvoidTestSave(){
************************************************************"
测试开始"
this.primaryRepository
.save(newPrimaryMongoObject(null,"
第一个库的对象"
));
this.secondaryRepository
.save(newSecondaryMongoObject(null,"
第二个库的对象"
List<
PrimaryMongoObject>
primaries=this.primaryRepository.findAll();
for(PrimaryMongoObjectprimary:
primaries){
System.out.println(primary.toString());
SecondaryMongoObject>
secondaries=this.secondaryRepository.findAll();
for(SecondaryMongoObjectsecondary:
secondaries){
System.out.println(secondary.toString());
测试完成"
到此,mongodb多数据源的使用已经完成。
示例代码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11SpringBoot十一Spring boot中mongodb的使用 11 SpringBoot 十一 Spring boot mongodb 使用
链接地址:https://www.bingdoc.com/p-5787577.html