SpringBoot 入门:整合MongoDB,做简单查找功能

接着昨天来,今日整合入MongoDB,做个简单的查找功能出来。多说无用,开搞~
今日目标:加入MongoDB支持。写一个简单的查询。
首先,搭建环境、学习MongoDB这都不提了,这里只说java相关,顺嘴提一句,比起繁琐的SQL来说,感觉要简单不少。可能是还没有深入了解的原因。
步骤一:在pom.xml中加入对MongoDB的支持,配置相关properties:

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

application.properties:
spring.data.mongodb.uri=mongodb://simon:123456@192.168.150.128:27017/MongoDemo

步骤二:添加相应实体类(根据数据库中表字段添加)

package com.simon.pojo;


import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.mapping.Document;

/**
 * @Author Simon
 * @Date 2017/5/9 23:07
 */
@Document
public class Users {
    private ObjectId id;
    private String name;
    private String sex;
    private String age;

    public Users(Long id, String name, String sex, String age) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
//Getter Setter省略。
}

步骤三:创建与数据库交互的Dao类和Services类

package com.simon.dao;

import com.simon.pojo.Users;
import org.springframework.data.mongodb.repository.MongoRepository;

/**
 * @Author Simon
 * @Date 2017/5/9 23:20
 */
@Component
public interface UsersDao extends MongoRepository<Users, Long> {
    //自定义方法
    List<Users> findByName(String name);
}
package com.simon.services;

import com.simon.pojo.Users;

import java.util.List;

/**
 * @Author Simon
 * @Date 2017/5/9 23:33
 */
public interface UsersServices {
    List<Users> findByName(String name);

    void save(Users users);

    void delete(Users users);

    void udate(Users users);

    List<Users> findAll();
}
package com.simon.services.impl;

import com.simon.dao.UsersDao;
import com.simon.pojo.Users;
import com.simon.services.UsersServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class UsersServicesImpl implements UsersServices {

    @Autowired
    UsersDao usersDao;

    @Override
    public List<Users> findByName(String name){
        return usersDao.findByName(name);
    }

    @Override
    public void save(Users users){
        usersDao.insert(users);
    }

    @Override
    public void delete(Users users){
        usersDao.delete(users);
    }

    @Override
    public void udate(Users users){
        usersDao.save(users);
    }

    @Override
    public List<Users> findAll(){
        return usersDao.findAll();
    }
}

步骤三:Controller类:

package com.simon.controller;

import com.simon.pojo.Users;
import com.simon.services.UsersServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @Author Simon
 * @Date 2017/5/9 0:02
 */
@Controller
public class HelloController {

    @Autowired
    UsersServices usersServices;

    @RequestMapping("/findAllUsers")
    @ResponseBody
    public String findAll(){
        List<Users> list = usersServices.findAll();
        StringBuffer sb = new StringBuffer();
        for (Users users : list){
            sb.append(users.getName());
        }
        return sb.toString();
    }

    @RequestMapping("/findByName")
    @ResponseBody
    public String findByName(@RequestParam(value = "name")String name){
        List<Users> list = usersServices.findByName(name);
        StringBuffer sb = new StringBuffer();
        for (Users users : list){
            sb.append(users.getName());
        }
        return sb.toString();
    }
}

此处只写两个查询,增删改留到junit中测试。
运行结果如下:
查询所有:
查询所有
根据姓名查询:
根据姓名查询

问题1:增删改差只有接口,并没有实现类,怎么实现的。按字段查找也没有实现类,怎么实现的。
答:目前只知道是org.springframework.data.mongodb.repository包下的接口类MongoRepository有实现类,是他实现的,但是按照字段查找目前仍未找到原因,明天深查。

问题2:在pojo类Users中,id字段原本使用的是long类型,结果报错No converter found capable of converting from type org.bson.types.ObjectId to type Long
,后改为org.bson.types.ObjectId类型才解决。
答:仍未找到答案,后续补充。

明日目标:测试增删改,增加SpringBoot热部署功能。查找今日问题。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值