Spring boot下的对MongoDB的相关操作
来源:互联网 发布:手机淘宝体检中心登录 编辑:程序博客网 时间:2024/06/13 23:11
最近完成了在spring boot下完成了对mongoDB数据库的相关操作,对于一些常用的操作做出如下的总结。
1.首先我们完成MongoDB数据库的下载和启动。
2.接下来我们在项目中完成对MongoDB的相关配置。
在Spring context.xml文件中我们完成如下的配置:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="UserInfoRepository" class="com.lyf.user.UserInfoRepositoryImpl"> <property name="mongoTemplate" ref="mongoTemplate" /> </bean> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongo" ref="mongo" /> <constructor-arg name="databaseName" value="user" /> </bean> <!-- Factory bean that creates the Mongo instance --> <bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean"> <property name="host" value="localhost" /> <property name="port" value="27017" /> </bean> <!-- Activate annotation configured components --> <context:annotation-config /> <!-- Scan components for annotations within the configured package --> <context:component-scan base-package="com.lyf.user"> <context:exclude-filter type="annotation" expression="org.springframework.context.annotation.Configuration" /> </context:component-scan></beans>
3.接下来我们需要设置我们的实体类
代码如下:
package com.lyf.user;import java.io.Serializable;import java.util.Arrays;import java.util.List;import com.alibaba.fastjson.JSONObject;import lombok.AllArgsConstructor;import lombok.Getter;import lombok.Setter;import org.springframework.data.annotation.Id;import org.springframework.data.repository.CrudRepository;import org.springframework.data.repository.query.Param;import org.springframework.stereotype.Repository;@Getter@Setterpublic class User implements Serializable { private static final long serialVersionUID = 1L; @Id private String uid; private String name; private int age; private String address; private String[] hobby; private JSONObject description; public User() { } public User(String uid, String name, int age,String address,String hobby[],JSONObject description) { this.uid = uid; this.name = name; this.age = age; this.address= address; this.hobby = hobby; this.description = description; } @Override public String toString() { return "User{" + "uid='" + uid + '\'' + ", name='" + name + '\'' + ", age=" + age + ", address='" + address + '\'' + ", hobby=" + Arrays.toString(hobby) + ", description='" + description + '\'' + '}'; }}
4.配置好实体类后,接下来我们编写一个简单的接口,定义我们要实现的功能
代码如下:
package com.lyf.user;import com.mongodb.WriteResult;import org.springframework.data.mongodb.repository.MongoRepository;import org.springframework.data.repository.CrudRepository;import org.springframework.data.repository.query.Param;import org.springframework.stereotype.Repository;import java.util.List;/** * Created by flyfy on 2017/7/13. *///@Repository public interface UserInfoRepository<T>{ public void saveObject(T object); public void deleteObject(String id); public List<T> queryByName(String name,Class<T> tClass); public List<T> queryByAddress(String address,Class<T> tClass); public String queryByDescriptionRealname(String descriptionParam,Class<T> tClass); public List<T> queryAll(Class<T> tClass); }
5.然后设计一个接口实现类
代码如下:
package com.lyf.user;import com.alibaba.fastjson.JSONObject;import com.fasterxml.jackson.core.JsonParser;import com.mongodb.WriteResult;import lombok.extern.java.Log;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.repository.Query;import java.util.*;/** * Created by flyfy on 2017/7/14. */public class UserInfoRepositoryImpl implements UserInfoRepository<User>{ MongoTemplate mongoTemplate; public void setMongoTemplate(MongoTemplate mongoTemplate){ this.mongoTemplate = mongoTemplate; } public void saveObject(User user) { mongoTemplate.insert(user); } public void deleteObject(String id) { mongoTemplate.remove(new org.springframework.data.mongodb.core.query.Query(Criteria.where("uid").is(id))); } public List<User> queryByName(String name,Class<User> userClass){ List<User> list = mongoTemplate.find(new org.springframework.data.mongodb.core.query.Query(Criteria.where("name").is(name)),userClass); return list; } public List<User> queryByAddress(String address,Class<User> userClass){ List<User> queryUser = mongoTemplate.find(new org.springframework.data.mongodb.core.query.Query(Criteria.where("address").is(address)),userClass); return queryUser; } public List<User> queryAll(Class<User> userClass){ List<User> queryUsers = mongoTemplate.findAll(userClass); return queryUsers; } public String queryByDescriptionRealname(String descriptionParam,Class<User> userClass){ List<User> queryUsers = queryAll(userClass); System.out.println(queryUsers.size()); List<User> queryUser = new ArrayList<User>(); if(queryUsers.size()>0) { for (User list : queryUsers) { JSONObject jsonObject = list.getDescription(); if(null!=jsonObject) { if (jsonObject.containsValue(descriptionParam)) { queryUser.add(list); } else { System.out.println("该条记录里不包含descriptpParam"); } }else{ continue; } } } if(queryUser.size()== 0){ return "not exist"; }else{ System.out.println("取到的内容:"+queryUser.toString()); return queryUser.toString(); } }}
6.接下来我们将方法的调用写入controller类(这里我们其实应该将具体的方法实现放到service里)
代码如下:
package com.lyf.user;/** * Created by flyfy on 2017/7/12. */import com.alibaba.fastjson.JSONObject;import com.lyf.MongoQuery.mongoQuery;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Configurable;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.repository.query.Param;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import com.lyf.user.UserInfoRepository;import static org.springframework.web.bind.annotation.RequestMethod.GET;import static org.springframework.web.bind.annotation.RequestMethod.POST;@RestController@RequestMapping(value = {"/users"}, produces = "application/json;charset=UTF-8")public class UserController { /** * 向MongoDB中插入数据 * */ @RequestMapping(value = {"/save"}, method = POST) @ResponseBody public String save() { String hobby[] ={"youyong","huachuan"}; JSONObject description = new JSONObject(); String realname ="flyfy"; String realhobby[] ={"cuiyanwen","chat"}; description.put("realname",realname); description.put("realhobby",realhobby); User user = new User("flyfy_02","liyifei",23,"beijing",hobby,description); ConfigurableApplicationContext context = new ClassPathXmlApplicationContext( "classpath:Spring context.xml"); UserInfoRepository userInfoRepository = context.getBean(UserInfoRepositoryImpl.class); userInfoRepository.saveObject(user); JSONObject ret = new JSONObject(); ret.put("code", 200); ret.put("codeStatus", "ok"); ret.put("detailedMsg", "success"); return ret.toJSONString(); } /* * * 根据name属性进行查询 * */ @RequestMapping(value = {"/queryByName"}, method = GET) @ResponseBody public String queryByName(@Param("name") String name) { ConfigurableApplicationContext context = new ClassPathXmlApplicationContext( "classpath:Spring context.xml"); UserInfoRepository userInfoRepository = context.getBean(UserInfoRepositoryImpl.class); userInfoRepository.queryByName(name,User.class); JSONObject ret = new JSONObject(); ret.put("code", 200); ret.put("codeStatus", "ok"); ret.put("detailedMsg", "success"); return ret.toJSONString(); } /* * * 根据address属性查询 * */ @RequestMapping(value = {"/queryByAddress"}, method = GET) @ResponseBody public String queryByAddress(@Param("address") String address) { ConfigurableApplicationContext context = new ClassPathXmlApplicationContext( "classpath:Spring context.xml"); UserInfoRepository userInfoRepository = context.getBean(UserInfoRepositoryImpl.class); userInfoRepository.queryByAddress(address,User.class); JSONObject ret = new JSONObject(); ret.put("code", 200); ret.put("codeStatus", "ok"); ret.put("detailedMsg", "success"); return ret.toJSONString(); } /* * * 根据description字段下的二级字段realname进行查询 * */ @RequestMapping(value = {"/queryByDescriptionRealname"}, method = GET) @ResponseBody public String queryByDescription(@Param("descriptionParamRealname") String descriptionParam) { ConfigurableApplicationContext context = new ClassPathXmlApplicationContext( "classpath:Spring context.xml"); UserInfoRepository userInfoRepository = context.getBean(UserInfoRepositoryImpl.class); userInfoRepository.queryByDescriptionRealname(descriptionParam,User.class); JSONObject ret = new JSONObject(); ret.put("code", 200); ret.put("codeStatus", "ok"); ret.put("detailedMsg", "success"); return ret.toJSONString(); } /* * * 根据uid完成数据的删除 * */ @RequestMapping(value = {"/delete"}, method = POST) @ResponseBody public String delete(String id) { if(null!=id){ ConfigurableApplicationContext context = new ClassPathXmlApplicationContext( "classpath:Spring context.xml"); UserInfoRepository userInfoRepository = context.getBean(UserInfoRepositoryImpl.class); userInfoRepository.deleteObject(id); } JSONObject ret = new JSONObject(); ret.put("code", 200); ret.put("codeStatus", "ok"); ret.put("detailedMsg", "success"); return ret.toJSONString(); }}
7.当然你也可以参照官网的文档,利用官方的MongoRepository接口,内部自带了很多常用的方法,但是对于提取二级字段属性值的话,就需要我们自己编写实现方法。
下面附上官网文档地址:http://docs.spring.io/spring-data/data-mongo/docs/current/reference/html/
阅读全文
1 0
- Spring boot下的对MongoDB的相关操作
- spring boot整合Morphia对MongoDB进行操作
- spring boot的相关配置
- Spring对MongoDB的简单集成及数据操作
- 转载:Spring Boot (十一):Spring boot中mongodb的使用
- mongoDB的update相关操作
- Spring boot中mongodb的使用
- MongoDB整合Spring Boot 的logback
- MongoDB整合Spring Boot 的logback
- java对mongodb的操作
- Spring Boot对Spring MVC的配置
- MongoDB整合Spring的操作
- java windows 下对进程的相关的操作
- Spring Boot Web的相关配置
- Linux下对文件权限的相关操作
- Spring boot连接和操作mongoDB
- spring boot 对nosql的支持
- Spring Boot对Web开发的支持
- HTML5 Form Data 对象的使用
- 深入Spring Cloud源码设计-eureka一篇就够
- 【LectCode】102. Binary Tree Level Order Traversal
- 12特殊符号的使用
- RXJAVA2引用理解
- Spring boot下的对MongoDB的相关操作
- 整合ssm框架要点
- spring+springMVC+mybatis 框架整合
- 14样式基础
- leetcode算法题1: 两个二进制数有多少位不相同?异或、位移、与运算的主场
- java页面后台数据交互(2)
- JavaSE基础
- VMware安装VMtools,有/mnt/hgfs但没有共享文件的解决方法,已成功
- SpringMVC基础入门,创建一个HelloWorld程序