Spring Boot + MongoDB uses examples

In this paper, using a simple and MongoTemplate CRUD MongoRepository achieve the MongoDB

As used herein, docker install MongoDB :

Examples of Use

application.yml:

spring:
  data:
    mongodb:
      uri: mongodb://test:[email protected]:27017/test

entity:

public class User {
    @Id
    private String id;
    private String name;
    private Integer gender;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthday;

    /*getter setter*/
}

service:

public interface UserService {

    User save(User user);

    void deleteById(String id);

    void deleteAll();

    Iterable<User> findAll();

    Iterable<User> findAll(Integer pageNum, Integer pageSize);

    List<User> findAllByName(String name);

    Page<User> findAllByName(Integer pageNum, Integer pageSize, String name);
}

1.1 use MongoRepository

1.1.1 New UserMongoRepository

public interface UserMongoRepository extends MongoRepository<User, String> {

    List<User> findByName(String name);
}

1.1.2 New UserServiceMongoRepository

@Profile("MongoRepository")
@Service
public class UserServiceMongoRepository implements UserService {

    @Autowired
    private UserMongoRepository userMongoRepository;

    @Override
    public User save(User user) {
        return userMongoRepository.save(user);
    }

    @Override
    public void deleteById(String id) {
        userMongoRepository.deleteById(id);
    }

    @Override
    public void deleteAll() {
        userMongoRepository.deleteAll();
    }

    @Override
    public Iterable<User> findAll() {
        return userMongoRepository.findAll();
    }

    @Override
    public Iterable<User> findAll(Integer pageNum, Integer pageSize) {

        Pageable pageable = PageRequest.of(pageNum, pageSize);
        return userMongoRepository.findAll(pageable);
    }

    @Override
    public List<User> findAllByName(String name) {
        return userMongoRepository.findByName(name);
    }

    @Override
    public Page<User> findAllByName(Integer pageNum, Integer pageSize, String name) {

        User user = new User();
        user.setName(name);

        ExampleMatcher matcher = ExampleMatcher.matching();
        Example<User> userExample = Example.of(user, matcher);

        Pageable pageable = PageRequest.of(pageNum, pageSize);

        return userMongoRepository.findAll(userExample, pageable);
    }
}

1.2 MongoTemplate

1.2.1 New UserServiceMongoTemplate

@Profile("MongoTemplate")
@Service
public class UserServiceMongoTemplate implements UserService {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public User save(User user) {
        return mongoTemplate.save(user);
    }

    @Override
    public void deleteById(String id) {
        Query query = new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query);
    }

    @Override
    public void deleteAll() {
        mongoTemplate.remove(User.class);
    }

    @Override
    public Iterable<User> findAll() {
        return mongoTemplate.findAll(User.class);
    }

    @Override
    public Iterable<User> findAll(Integer pageNum, Integer pageSize) {
        Query query = new Query();
        query.skip(pageNum * pageSize);
        query.limit(pageSize);

        return mongoTemplate.find(query, User.class);
    }

    @Override
    public List<User> findAllByName(String name) {
        Query query = new Query(Criteria.where("name").is(name));
        return mongoTemplate.find(query, User.class);
    }

    @Override
    public Page<User> findAllByName(Integer pageNum, Integer pageSize, String name) {

        Query query = new Query();
        query.skip(pageNum * pageSize);
        query.limit(pageSize);

        Criteria criteria = new Criteria();
        criteria.and("name").equals(name);

        query.addCriteria(criteria);

        List<User> userList = mongoTemplate.find(query, User.class);

        long total = mongoTemplate.count(query, User.class);

        Pageable pageable = PageRequest.of(pageNum, pageSize);

        Page<User> userPage = new PageImpl(userList, pageable, total);
        return userPage;
    }
}

Complete code: GitHub

There is a problem

MongoRepository in deleteById and MongoTemplate in deleteById, deleteAll not take effect, temporarily I do not know the reason

Guess you like

Origin www.cnblogs.com/victorbu/p/11266806.html