• springboot集成mongo


    大家可以关注我的微信公众号“秦川以北” 后续更多精彩实用内容分享

    ​在项目中配置,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    }

    关注公众号秦川以北

    后续更多精彩实用内容分享!

     
  • 相关阅读:
    3.17爸爸要回去了(之十一)
    爸爸丢了 (2013.3.10,确诊五天后,之十)
    Polyline转Polygon
    将一个应用程序添加做成windows服务
    找个输入IPoint在某个FeatureClass上距离最近的要素
    线程间操作无效: 从不是创建控件“label4”的线程访问它。
    删除文件夹下的文件和文件夹
    int组成时间值
    CRONTAB
    NFS
  • 原文地址:https://www.cnblogs.com/qinyuanyuan/p/11380476.html
Copyright © 2020-2023  润新知