引入jar
<!--mongodb依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置文件
spring:
data:
mongodb:
host: 106.52.96.91
port: 85
database: micromall
继承MongoRepository接口
fingBy后面可跟多个查询条件用and或or进行连接
public interface MemberReadHistoryRepository extends MongoRepository<MemberReadHistory,String> {
//根据memberId和创建时间降序排序进行查找数据
List<MemberReadHistory> findByMemberIdOrderByCreateTimeDesc(Long memberId);
}
实现实例:
@Document
public class MemberReadHistory {
@Id //主键
private String id;
@Indexed //索引
private Long memberId;
private String memberNickname;
private String memberIcon;
@Indexed //索引
private Long productId;
private String productName;
private String productPic;
private String productSubTitle;
private String productPrice;
private Date createTime;
}
@Service
public class MemberReadHistoryServiceImpl implements MemberReadHistoryService {
@Autowired
private MemberReadHistoryRepository memberReadHistoryRepository;
//插入数据
@Override
public int create(MemberReadHistory memberReadHistory) {
memberReadHistory.setId(null);
memberReadHistory.setCreateTime(new Date());
memberReadHistoryRepository.save(memberReadHistory);
return 1;
}
//删除数据
@Override
public int delete(List<String> ids) {
List<MemberReadHistory> deleteList = new ArrayList<>();
for(String id:ids){
MemberReadHistory memberReadHistory = new MemberReadHistory();
memberReadHistory.setId(id);
deleteList.add(memberReadHistory);
}
memberReadHistoryRepository.deleteAll(deleteList);
return ids.size();
}
//查询列表
@Override
public List<MemberReadHistory> list(Long memberId) {
return memberReadHistoryRepository.findByMemberIdOrderByCreateTimeDesc(memberId);
}
//更新数据
public String updateInfo(MemberReadHistory history) {
Query query = new Query(Criteria.where("_id").is(history.getMemberId()));
Update update = new Update().set("memberNickname", history.getMemberNickname()).set("productName", history.getProductName()).set("updateTime",
new Date());
// updateFirst 更新查询返回结果集的第一条
mongoTemplate.updateFirst(query, update, MemberReadHistory.class);
// updateMulti 更新查询返回结果集的全部
// mongoTemplate.updateMulti(query,update,history.class);
// upsert 更新对象不存在则去添加
// mongoTemplate.upsert(query,update,MemberReadHistory.class);
return "success";
}
/***
* 删除对象
* @return
*/
public String deleteMemberReadHistory(MemberReadHistory history) {
mongoTemplate.remove(history);
return "success";
}
/**
* 模糊查询
* @param search
* @return
*/
public List<MemberReadHistory> findByLikes(String search){
Query query = new Query();
//注意此处千万不要使用创建对象的形式,网上有些是使用下面这种形式
/**
Criteria criteria = new Criteria();
criteria.where("memberNickname").regex(".*" + search + ".*");
这种形式看是没有报错,但是查询时未有该条件,原因是,调用该方法时,是重新创建对象的,源码如下:
public static Criteria where(String key) {
return new Criteria(key);
}
*/
//简单模糊匹配查询
query.addCriteria(Criteria.where("memberNickname").regex(".*" + search + ".*"));
//正则模糊匹配查询
/* Pattern pattern = Pattern.compile("^.*" + search + ".*$" , Pattern.CASE_INSENSITIVE);
query.addCriteria(Criteria.where("memberNickname").regex(pattern));*/
//只查询不删除
List<MemberReadHistory> lists = mongoTemplate.find(query, MemberReadHistory.class);
//查询结果后并移除
//List<MemberReadHistory> lists = mongoTemplate.findAllAndRemove(query, MemberReadHistory.class);
return lists;
}
}