zoukankan      html  css  js  c++  java
  • Spring data mongodb使用

    一、添加依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-mongodb</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>

    二、创建实体类

    import org.springframework.data.annotation.Id;
    
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     * @Description 吐槽实体类
     * @Author bofeng
     * @Date 2019/3/15 12:52
     * @Version 1.0
     */
    public class Spit implements Serializable {
        @Id
        private String _id;
        private String content;
        private Date publishtime;
        private String userid;
        private String nickname;
        private Integer visits;
        private Integer thumbup;
        private Integer share;
        private Integer comment;
        private String state;
        private String parentid;
    //getter and setter }

    三、定义接口继承MongoRepository

    /**
     * 吐槽数据访问层
     */
    public interface SpitDao extends MongoRepository<Spit,String> {
    }

    四、引用接口

    @Autowired
    private SpitDao spitDao;

    五、默认基础方法

    ● 添加

    @Test
    public void testInsert(){
    //定义实体类
    CmsPage cmsPage = new CmsPage();
    cmsPage.setSiteId("s01");
    cmsPage.setTemplateId("t01");
    cmsPage.setPageName("测试页面");
    cmsPage.setPageCreateTime(new Date());
    List<CmsPageParam> cmsPageParams = new ArrayList<>();
    CmsPageParam cmsPageParam = new CmsPageParam();
    cmsPageParam.setPageParamName("param1");
    cmsPageParam.setPageParamValue("value1");
    cmsPageParams.add(cmsPageParam);
    cmsPage.setPageParams(cmsPageParams);
    cmsPageRepository.save(cmsPage);
    System.out.println(cmsPage);
    }

    ● 删除

    //删除
    @Test
    public void testDelete() {
         cmsPageRepository.deleteById("5b17a2c511fe5e0c409e5eb3");
    }

    ● 修改

        @Test
        public void testUpdate() {
            Optional<CmsPage> optional = cmsPageRepository.findById("5abefd525b05aa293098fca6");
            //optional是jdk1.8引入的对象,作用是自带的isPresent方法可以非空判断
            if (optional.isPresent()) {
                CmsPage cmsPage = optional.get();
                cmsPage.setPageAliase("ccc");
                CmsPage save = cmsPageRepository.save(cmsPage);
                System.out.println(save);
            }
        }

    ● 查所有

        @Test
        public void testFindAll() {
            List<CmsPage> list = cmsPageRepository.findAll();
            System.out.println(list);
        }

    ● 分页查询

        @Test
        public void testFindPage() {
            int page = 0; //从0开始
            int size = 10;
            Pageable pageable = PageRequest.of(page, size);
            Page<CmsPage> all = cmsPageRepository.findAll(pageable);
            System.out.println(all);
        }

    ● 自定义Dao方法。和SpringDataJpa一样

    如下: 按照findByXXX,findByXXXAndYYY、countByXXXAndYYY等规则定义方法,实现查询操作。

    public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
    //根据页面名称查询
    CmsPage findByPageName(String pageName);
    //根据页面名称和类型查询
    CmsPage findByPageNameAndPageType(String pageName,String pageType);
    //根据站点和页面类型查询记录数
    int countBySiteIdAndPageType(String siteId,String pageType);
    //根据站点和页面类型分页查询
    Page<CmsPage> findBySiteIdAndPageType(String siteId,String pageType, Pageable pageable);
    }

     ● 使用原生mongodb命令操作

    1.引入MongoTemplate

        @Autowired
        private MongoTemplate mongoTemplate;

    2.操作mongodb。例:用原生命令实现自增,防止执行多个语句影响效率

     public void thumbUp(String spitId) {
            Query query = new Query();
            query.addCriteria(Criteria.where("_id").is(spitId));
            Update update = new Update();
            update.inc("thumbup", 1);
            mongoTemplate.updateFirst(query, update, "spit");
        }
  • 相关阅读:
    Oracle 的merge into 用法
    个人博客作业——结课总结
    个人博客作业week7
    结对项目总结博客
    #个人博客作业week3——微软必应词典的使用
    #个人博客作业week2——结对编程伙伴代码复审
    #个人博客作业week2——关于代码规范的个人观点
    #个人博客作业——目前流行的源程序版本管理软件和项目管理软件优缺点
    个人项目——四则运算题目的随机生成
    #个人博客作业Week1——浏览教材后提出的六个问题及软件与软件工程的提出。
  • 原文地址:https://www.cnblogs.com/naixin007/p/10460393.html
Copyright © 2011-2022 走看看