SpringBoot+MongoDB:不一样的快感

 

1、快速创建maven工程:http://start.spring.io/

  pom.xml依赖如下图:

  

2、在applicaiton.properties里引入MongoDB

3、SpringBoot有几种方式可以使用MongoDB,这里介绍使用MongoTemplate这种方式

  3.1 编写User,和Pojo没有什么区别

import java.io.Serializable;

public class User implements Serializable{
    
    private static final long serialVersionUID = 1L;
    
    private int id;
    private String name;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
}
User

  3.2编写UserDao和实现类UserDaoImpl

import java.util.List;

public interface UserDao {
    
    void save(User user);
    
    User findById(int id);
    
    User findOneByOrder();
    
    List<User> findByPageable(int page,int size);

}
UserDao
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;

@Component
public class UserDaoImpl implements UserDao{
    
    @Autowired
    private MongoTemplate template;

    @Override
    public void save(User user) {
        template.save(user);
        
    }

    @Override
    public User findById(int id) {
        Query query = new Query(Criteria.where("id").is(id));
        return template.findOne(query, User.class);
        
    }

    @Override
    public User findOneByOrder() {
        Sort sort = new Sort(new Order(Direction.DESC,"id"));
        Query query = new Query();
        query.with(sort);
        return  template.findOne(query, User.class);
    }

    @Override
    public List<User> findByPageable(int page,int size) {
        Query query = new Query();
        Pageable pageable = new PageRequest(page,size);
        query.with(pageable);
        return  template.find(query, User.class);
    }

}
UserDaoImpl

  3.3编写测试类UserDaoTest

import java.util.List;

import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserDaoTest {
    
    @Autowired
    private UserDao dao;
    
    @Test
    @Ignore
    public void save() {
        User user = new User();
        user.setId(3);
        user.setName("three");
        dao.save(user);
    }
    
    @Test
    @Ignore
    public void findById() {
        User user = dao.findById(1);
        System.out.println(user.getId()+":"+user.getName());
    }
    
    @Test
    @Ignore
    public void findOneByOrder() {
        User user = dao.findOneByOrder();
        System.out.println(user.getId()+":"+user.getName());
    }
    
    @Test
    public void findByPageable() {
        List<User> users = dao.findByPageable(1,2);
        for (User user : users) {
            System.out.println(user.getId()+":"+user.getName());
        }
    }

}
UserDaoTest

  3.4打开mongodb,查看结果

是不是很快很便捷?

MongoTemplate还有很多的方法,几乎包括了所有的CRUD,用的时候可以一一参照API

 

  

posted @ 2017-09-12 20:36  tao.fly  阅读(133)  评论(0)    收藏  举报