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

来源:互联网 发布:ubuntu snmpwalk 编辑:程序博客网 时间:2024/06/06 02:33

接着昨天来,今日整合入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 */@Documentpublic 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 */@Componentpublic 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;@Componentpublic 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 */@Controllerpublic 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 0
原创粉丝点击