本文共 3970 字,大约阅读时间需要 13 分钟。
接着昨天来,今日整合入MongoDB,做个简单的查找功能出来。多说无用,开搞~
今日目标:加入MongoDB支持。写一个简单的查询。 首先,搭建环境、学习MongoDB这都不提了,这里只说java相关,顺嘴提一句,比起繁琐的SQL来说,感觉要简单不少。可能是还没有深入了解的原因。 步骤一:在pom.xml中加入对MongoDB的支持,配置相关properties:pom.xml:application.properties:spring.data.mongodb.uri=mongodb://simon:123456@192.168.150.128:27017/MongoDemo org.springframework.boot spring-boot-starter-data-mongodb
步骤二:添加相应实体类(根据数据库中表字段添加)
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{ //自定义方法 List 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 { ListfindByName(String name); void save(Users users); void delete(Users users); void udate(Users users); List 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 ListfindByName(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 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(){ Listlist = 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 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热部署功能。查找今日问题。