创建工程,引入坐标
    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.6.RELEASE</version>
        </dependency>
    </dependencies>
创建配置文件
<?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"
       xmlns:mongo="http://www.springframework.org/schema/data/mongo"
       xsi:schemaLocation="http://www.springframework.org/schema/context
          https://www.springframework.org/schema/context/spring-context.xsd
          http://www.springframework.org/schema/data/mongo
          http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
          http://www.springframework.org/schema/beans
          https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--包扫描-->
    <context:component-scan base-package="com.topcheer" />
    <mongo:repositories base-package="com.topcheer"/>
    <context:property-placeholder location="db.properties" />
    <mongo:mongo-client host="47.110.91.230" port="27017" id="mongoClient" credentials="test:123456@test">
            <mongo:client-options connections-per-host="8"
                                  threads-allowed-to-block-for-connection-multiplier="4"
                                  connect-timeout="1000"
                                  max-wait-time="1500"
                                  write-concern="SAFE"
                                  socket-keep-alive="true"
                                  socket-timeout="1500"/>
    </mongo:mongo-client>
    <mongo:db-factory dbname="test" mongo-ref="mongoClient" id="mongoDbFactory"/>
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
    </bean>
</beans>
创建实体类
//使用@Document建立的是实体类和collection的关系
@Document(collection = "article")
public class Article {
    @Id//用来标识主键
    private Integer id;
    //使用@Field建立实体类中属性跟collection中字段的映射关系,如果省略,代表两个名称一致
    //@Field
    private String name;
    private String content;
    private Integer hits;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Integer getHits() {
        return hits;
    }
    public void setHits(Integer hits) {
        this.hits = hits;
    }
    @Override
    public String toString() {
        return "Article{" +
                "id=" + id +
                ", name=‘" + name + ‘\‘‘ +
                ", content=‘" + content + ‘\‘‘ +
                ", hits=" + hits +
                ‘}‘;
    }
}
自定义 dao接口
public interface ArticleDao extends MongoRepository<Article, Integer> {
    //根据标题查询
    List<Article> findByNameLike(String name);
    //根据点击量查询
    List<Article> findByHitsGreaterThan(Integer hits);
}
测试方法:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-mgo2.xml")
public class ArticleDaoTest {
    @Autowired
    private ArticleDao articleDao;
    //保存
    @Test
    public void testSave() {
        Article article = new Article();
        article.setId(1);
        article.setName("dalianpai");
        article.setContent("dalianpai123");
        article.setHits(100);
        articleDao.save(article);
    }
    //修改
    @Test
    public void testUpdate() {
        Article article = new Article();
        article.setId(1);
        article.setName("dalianpai2");
        article.setContent("dalianpai2123");
        article.setHits(200);
        articleDao.save(article);
    }
    //修改
    @Test
    public void testDelete() {
        articleDao.deleteById(1);
    }
    //做数据
    @Test
    public void makeData() {
        for (int i = 1; i <= 10; i++) {
            Article article = new Article();
            article.setId(i);
            article.setName("dalianpai" + i);
            article.setContent("dalianpai" + i);
            article.setHits(100 + i);
            articleDao.save(article);
        }
    }
    //查询所有
    @Test
    public void testFindAll() {
        List<Article> articles = articleDao.findAll();
        for (Article article : articles) {
            System.out.println(article);
        }
    }
    //主键查询
    @Test
    public void testFindById() {
        Optional<Article> opt = articleDao.findById(1);
        System.out.println(opt.get());
    }
    //分页和排序
    @Test
    public void testFindAllWithPageAndSort() {
        //设置排序条件
        Sort sort = Sort.by(Sort.Order.desc("hits"));
        //设置分页条件
        Pageable pageable = PageRequest.of(1, 3, sort);
        Page<Article> page = articleDao.findAll(pageable);
        for (Article article : page.getContent()) {
            System.out.println(article);
        }
    }
    //根据标题查询
    @Test
    public void testFindByName() {
        List<Article> articles = articleDao.findByNameLike("dalianpai1");
        for (Article article : articles) {
            System.out.println(article);
        }
    }
    //根据标题查询
    @Test
    public void testFindByHitsGreaterThan() {
        List<Article> articles = articleDao.findByHitsGreaterThan(105);
        for (Article article : articles) {
            System.out.println(article);
        }
    }
}


原文:https://www.cnblogs.com/dalianpai/p/13803621.html