三分钟学会spring boot整合mongodb

mongodb的安装在这就不累述了,win版本的去官网下载,然后一直下一步即可,安装完之后需要db位置,类似命令如下mkdir db,然后进入到mongodb安装目录MongoDB\Server\4.0\bin,执行命令mongod --dbpath XX路径/db

然后再MongoDB\Server\4.0\bin目录下执行命令mongo.exe,即可进入mongodb语句输入栏

 


我们在mongo命令栏中输入show databases;看到默认有三个数据库,也可以使用命令 show dbs

 

下面我们直接进入代码操作

先看一下pom.xml文件新增依赖项

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

再看下代码结构和涉及到的代码分布

 

从上到下依次是MongoTestC.java,MongoTestDao.java,MongoTest.java,application.yml

分别对应着页面跳转类,操作mongodb数据库的类和实体类以及配置文件(此处只是做个demo,所以没有写service层,相关操作都写到了Controller中去了)

MongoTestC.java

@RestController
public class MongoTestC {

    @Autowired
    private MongoTestDao mtdao;

    @GetMapping(value="/test1")
    public void saveTest() throws Exception {
        MongoTest mgtest=new MongoTest();
        mgtest.setId(11);
        mgtest.setAge(33);
        mgtest.setName("ceshi");
        mtdao.saveTest(mgtest);
    }

    @GetMapping(value="/test2")
    public MongoTest findTestByName(){
        MongoTest mgtest= mtdao.findTestByName("ceshi");
        System.out.println("mgtest is "+mgtest);
        return mgtest;
    }

    @GetMapping(value="/test3")
    public void updateTest(){
        MongoTest mgtest=new MongoTest();
        mgtest.setId(11);
        mgtest.setAge(44);
        mgtest.setName("ceshi2");
        mtdao.updateTest(mgtest);
    }

    @GetMapping(value="/test4")
    public void deleteTestById(){
        mtdao.deleteTestById(11);
    }
}

MongoTestDao.java

@Component
public class MongoTestDao {


    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 创建对象
     */
    public void saveTest(MongoTest test) {
        mongoTemplate.save(test);
    }

    /**
     * 根据用户名查询对象
     * @return
     */
    public MongoTest findTestByName(String name) {
        Query query=new Query(Criteria.where("name").is(name));
        MongoTest mgt =  mongoTemplate.findOne(query , MongoTest.class);
        return mgt;
    }

    /**
     * 更新对象
     */
    public void updateTest(MongoTest test) {
        Query query=new Query(Criteria.where("id").is(test.getId()));
        Update update= new Update().set("age", test.getAge()).set("name", test.getName());
        //更新查询返回结果集的第一条
        mongoTemplate.updateFirst(query,update,MongoTest.class);
        //更新查询返回结果集的所有
        // mongoTemplate.updateMulti(query,update,TestEntity.class);
    }

    /**
     * 删除对象
     * @param id
     */
    public void deleteTestById(Integer id) {
        Query query=new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query,MongoTest.class);
    }
}

MongoTest.java

public class MongoTest {
    private Integer id;
    private Integer age;
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

application.properties
spring.data.mongodb.uri=mongodb://localhost:27017/test

此处我用的是本地安装的mongodb,所以没有用户名和密码,有用户名和密码的格式是

spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test,其中name是用户名,pass是密码

如果要配置多个数据库,则中间用","分割,例如

spring.data.mongodb.uri=mongodb://192.168.1.1:20000,192.168.1.2:20000,192.168.252.12:20000/test
下面我们启动程序进行测试

1)新增

我们先在浏览器输入http://localhost:1234/test1

调用了controller中的新增方法,此时数据库应该有值,我们执行相关命令看一下

 


我们发现,我们使用use test命令创建新库的时候,当库里还没有表的时候,我们使用show dbs是看不到这个库的,

 

当我们在浏览器敲了回车之后,我们发现可以看到test库了,同时test库中也有了mongoTest表,使用db.mongoTest.find()命令就可以看到数据了,符合要求

2)查询

我们在浏览器输入http://localhost:1234/test2

即可查看到刚才插入的那条数据

 


3)修改

 

我们在浏览器输入http://localhost:1234/test3

然后去数据库看一下

 


果然发生了变化

 

4)删除

我们在浏览器输入http://localhost:1234/test4

然后去数据库看一下

 


我们发现,数据没有了,因为已经被删掉了,但是表还是存在的,库也可以看到

 

 

喜欢本文的朋友们,欢迎关注微信公众号“Java面试达人”,收看更多精彩内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值