前言
此片文章只介绍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());
}