在项目中配置,mongoDB数据库,spring整合
- 引入pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
- 在配置文件中配置mongo库信息
spring:
data:
mongodb:
database: data
username: data
password: 1xxx
host: localhost
port: 27017
@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等方法
- 编写操作mongo的接口
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这个时间之后的数据
- 编写你的实现类去写具体的CRUD逻辑,以及一些判断条件
如果你只是想使用mongoRepository已经定义好的操作方法,
这个步骤也可以省去,直接看第6步
@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操作接口的实现类
- 编写controller,对数据进行访问
@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 }
关注公众号秦川以北
后续更多精彩实用内容分享!