spring boot学习(07):mongodb实战

前言

此片文章只介绍spring boot环境下使用mongodb,其他如简介,linux安装,基本操作请参考:mongodb

MongoDB 有两种比较流行的使用方法,一种是直接将 MongoTemplate 直接注入到 Dao 中使用,一种是继承 MongoRepository,MongoRepository 内置了很多方法可直接使用。下面分别介绍。

MongoTemplate 的使用

1.添加依赖

<dependencies>
    <dependency> 
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency> 
</dependencies>

2.application.properties 中添加配置(2.4以上版本)

spring.data.mongodb.uri=mongodb://root(userName):root(password)@localhost(ip地址):27017(端口号)/gis(collections/数据库)

我们这里没有密码简单配置,选择demo数据库
spring.data.mongodb.uri=mongodb://localhost:27017/demo

3.创建实体类, 简化操作

public class UserEntity implements Serializable {
        private static final long serialVersionUID = -3258839839160856613L;
        private Long id;
        private String userName;
        private String passWord;

      //getter、setter省略
}

4.dao实现了UserEntity 对象的增删改查:

@Component
public class UserDaoImpl implements UserDao {

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 创建对象
     * @param user
     */
    @Override
    public void saveUser(UserEntity user) {
        mongoTemplate.save(user);
    }

    /**
     * 根据用户名查询对象
     * @param userName
     * @return
     */
    @Override
    public UserEntity findUserByUserName(String userName) {
        Query query=new Query(Criteria.where("userName").is(userName));
        UserEntity user =  mongoTemplate.findOne(query , UserEntity.class);
        return user;
    }
       /**
     * 更新对象
     * @param user
     */
    @Override
    public void updateUser(UserEntity user) {
        Query query=new Query(Criteria.where("id").is(user.getId()));
        Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
        //更新查询返回结果集的第一条
        mongoTemplate.updateFirst(query,update,UserEntity.class);
        //更新查询返回结果集的所有
        // mongoTemplate.updateMulti(query,update,UserEntity.class);
    }

    /**
     * 删除对象
     * @param id
     */
    @Override
    public void deleteUserById(Long id) {
        Query query=new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query,UserEntity.class);
    }
}

5.可以测试了

MongoRepository 的使用

和jpa的使用很相似

public interface UserRepository extends MongoRepository<UserEntity, Long> {
    UserEntity findByUserName(String userName);
}

新建 UserRepository 需要继承 MongoRepository,这样就可直接使用 MongoRepository 的内置方法。

使用 UserRepository 进行增删改查。

使用分页:

Page<UserEntity> findAll(Pageable var1);

测试:

@Test
public void testPage(){
    Sort sort = new Sort(Sort.Direction.DESC, "id");
    Pageable pageable = new PageRequest(2, 10, sort);
    Page page=userRepository.findAll(pageable);
    System.out.println("users: "+page.getContent().toString());
}

多数据源 MongoDB 的使用

猜你喜欢

转载自blog.csdn.net/weixin_41555736/article/details/81013137