方法一:MongoTemplate
- 使用MongotemPlate直接把dao层代替了,直接在Service写,他的对数据库的操作MongotemPlate的api基本可以满足,并且实习复杂操作,不需要dao层了
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Autowired
private MongoTemplate mongoTemplate;
/**
* 使用MongoTemplate操作数据库
* @param name
*/
public void updateAgeAndCreateOne(String name) {
//主要是查询条件,和跟新条件
//查询条件
Query query = Query.query(Criteria.where("name").is(name));
//更新条件
Update update = new Update();
Update age = update.inc("age", 10);
System.out.println(age);
//重点代码
mongoTemplate.updateFirst(query, update, User.class);
}
}
方法二:DAO
- 有dao层,继承MongoRepository<User,String>,里面有自动实现关于增删改查的api,可以直接调用,自己写api注意命名格式规范(eg:分页查询)
// 继承MongoRepository<User,String> user实体类,String主键id的类型
public interface UserRepository extends MongoRepository<User,String> {
//根据Sex进行分页查询,注意固定语法格式findBy,参数Pageable会帮你分页
Page<User> findBySex(String sex, Pageable pageable);
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
/**
* 分页查询
*
* @param sex
* @param page 第几页
* @param size
*/
public Page<User> findBySexByPage(String sex, int page, int size) {
//page:表示当前页,PageRequest.of(page-1,size):其实在里面new了一个PageRequest对象
return userRepository.findBySex(sex, PageRequest.of(page - 1, size));
}
public void addUser(User user) {
User insert = userRepository.insert(user);
System.out.println(insert);
}
yaml
server:
port: 8001
spring:
data:
mongodb:
host: 127.0.0.1
database: articledb
port: 27017
#也可以使用uri链接
#uri: mongodb://127.0.0.1:27017/articledb