大家可以关注我的微信公众号“秦川以北” 后续更多精彩实用内容分享
在项目中配置,mongoDB数据库,spring整合
1. 引入pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2. 在配置文件中配置mongo库信息
spring:
data:
mongodb:
database: data
username: data
password: 1xxx
host: localhost
port: 27017
3. 编写你要使用的mongo库中某个collection的实体类,我在这里用的是data
1 @Document(collection = "data") 2 @Data 3 public class DataMongoObject implements Serializable { 4 private static final long serialVersionUID = 1L; 5 /** 6 * objectId,无需设值 7 */ 8 @Id 9 private String id; 10 11 private String token; 12 /** 13 * 数据源名称 14 */ 15 private String sourceName; 16 /** 17 * 数据源描述 18 */ 19 private String sourceDesc; 20 21 private String updateTime; 22 23 private String dataType = "json"; 24 /** 25 * 用户数据 26 */ 27 private Object data; 28 29 }
这个实体类需要实现序列化接口
这里的@Document,说明使用的当前库中的那个collection
下面的@Data是lombok中的功能,根据你定义的字段自动注入setter和getter等方法
4. 编写操作mongo的接口
1 public interface DataRepository extends MongoRepository<DataMongoObject, String> { 2 3 /** 4 * 通过token进行数据查询,非GridFS 5 * 6 * @param token 7 * @return 8 */ 9 DataMongoObject findByToken(String token); 10 11 /** 12 * 通过sourceName进行查询 13 * 14 * @param sourceName 15 * @param pageable 16 * @return 17 */ 18 Page<DataMongoObject> findBySourceName(String sourceName, Pageable pageable); 19 20 @Override 21 @Query(value = "{'updateTime':{'$gte':'1564478681215'}}") 22 Page<DataMongoObject> findAll(Pageable pageable); 23 24 // @Query(value = "{'requestArgs.website':?0}") 25 // Page<DataMongoObject> findByRequestArsWebsite(String website, Pageable pageable); 26 }
编写自己的mongo操作类DataRepository继承MongoRepository
根据自己的需要些一些CRUD
@Query注解中时mongo的查询条件,
上面的意思是查询在1564478681215这个时间之后的数据
5. 编写你的实现类去写具体的CRUD逻辑,以及一些判断条件
如果你只是想使用mongoRepository已经定义好的操作方法,
这个步骤也可以省去,直接看第6步
1 @Slf4j 2 @Service 3 public class GridFsMongoService { 4 5 @Autowired 6 private DataRepository dataRepository; 7 8 public void findAll(int pageNum,int pageSize) { 9 Page<DataMongoObject> all1 = dataRepository.findAll(new PageRequest(--pageNum, pageSize)); 10 } 11 }
@Service注解表明这是一个bean,功能是上面第4步mongo操作接口的实现类
6. 编写controller,对数据进行访问
1 @Slf4j 2 @RestController 3 @RequestMapping("/api/mongo") 4 public class ParsedDataController { 5 @Autowired 6 private DataRepository dataRepository; 7 /** 8 * page从零开始的,这里做了处理,从1开始 9 * 10 * @param pageNum 11 * @param pageSize 12 * @return 13 */ 14 @GetMapping("/data/all") 15 public String findAll(Integer pageNum, Integer pageSize) { 16 ResultInfo resultInfo = new ResultInfo(); 17 try { 18 if (StringUtil.isEmpty(pageNum) || pageNum < 1 || pageNum >= Consts.MAX_SIZE) { 19 pageNum = Consts.DEFAULT_PAGE_NUM; 20 } 21 22 if (StringUtil.isEmpty(pageSize) || pageSize < 1 || pageSize >= Consts.MAX_SIZE) { 23 pageSize = Consts.DEFAULT_PAGE_SIZE; 24 } 25 26 Page<DataMongoObject> all = dataRepository.findAll(new PageRequest(--pageNum, pageSize)); 27 resultInfo.setSuccess(true); 28 resultInfo.setDetail(all); 29 } catch (Exception e) { 30 LOGGER.error(e.getMessage(), e); 31 } 32 return resultInfo.toString(); 33 } 34 }
关注公众号秦川以北
后续更多精彩实用内容分享!