MongoRepository使用
@Repository
public interface SysMenuRepository extends MongoRepository {
/**
* 模糊查询
* StartsWith 起始位置开始匹配
* EndsWith 结束位置
* @param code 匹配内容
* @return
*/
List findByCodeStartsWith(String code);
}
示例
@Service
public class SysMenuService {
@Autowired
private SysMenuRepository sysMenuRepository;
@Autowired
private MgRepository mgRepository;
/**
* 新增
* @param sysMenu
* @return
*/
public SysMenu save(SysMenu sysMenu){
return sysMenuRepository.save(sysMenu);
}
/**
* 查询所有并分页
* @return
*/
public Page findAll(Pageable pageable) {
return sysMenuRepository.findAll(pageable);
}
/**
* 模糊查询所有 分页
* @param pageable
* @return
*/
public Page findPag(Pageable pageable) {
SysMenu sysMenu = new SysMenu();
sysMenu.setCode("e");
sysMenu.setId("e");
sysMenu.setPcode("qqqqq");
Example example = Example.of(sysMenu,generater());
return sysMenuRepository.findAll(example,pageable);
}
/**
* 删除
* @param id
* @return
*/
public String delete(String id){
sysMenuRepository.deleteById(id);
boolean exists = sysMenuRepository.existsById(id);
return exists == false ? "1":"0";
}
/**
* StartsWith 起始位置开始匹配
* EndsWith 结束位置
* @param code
* @return
*/
public List findByCodeStartsWith(String code){
return sysMenuRepository.findByCodeStartsWith(code);
}
private ExampleMatcher generater() {
return ExampleMatcher.matching() //构建对象
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询
.withIgnoreCase(true) //改变默认大小写忽略方式:忽略大小写
.withMatcher("pcode", match->match.exact()) // 精确查询pcode,模糊查询其他
// .withMatcher("code", ExampleMatcher.GenericPropertyMatchers.regex()) // 查询
// .withMatcher("id", ExampleMatcher.GenericPropertyMatchers.regex()) // 查询
// .withMatcher("pcode", ExampleMatcher.GenericPropertyMatchers.regex()) // 查询
.withIgnoreNullValues();//hu忽略null
}
MongoTemplate 使用
public abstract class MongodbBaseDao{
/**
* spring mongodb 集成操作类
*/
@Autowired
private MongoTemplate mongoTemplate;
/**
* 通过条件查询实体(集合)
*
* @param query
*/
public List find(Query query) {
return mongoTemplate.find(query,this.getEntityClass());
}
/**
* 通过一定的条件查询一个实体
*
* @param query
* @return
*/
public T findOne(Query query) {
return mongoTemplate.findOne(query, this.getEntityClass());
}
/**
* 通过条件查询更新数据
*
* @param query
* @param update
* @return
*/
public void update(Query query, Update update) {
mongoTemplate.upsert(query, update, this.getEntityClass());
}
/**
* 保存一个对象到mongodb
*
* @param bean
* @return
*/
public T save(T bean) {
mongoTemplate.save(bean);
return bean;
}
/**
* 通过ID获取记录
*
* @param id
* @return
*/
public T get(String id) {
return mongoTemplate.findById(id, this.getEntityClass());
}
/**
* 通过ID获取记录,并且指定了集合名(表的意思)
*
* @param id
* @param collectionName
* 集合名
* @return
*/
public T get(String id, String collectionName) {
return mongoTemplate.findById(id, this.getEntityClass(), collectionName);
}
/**
* 获取需要操作的实体类class
*
* @return
*/
protected abstract Class getEntityClass();
}
Criteria 说明
示例:
/**
* 使用 Criteria 示例
* @param id
* @return
*/
public SysMenu find(String id){
Criteria criteria = new Criteria();
criteria.where("id").is(id);
Query query = Query.query(criteria);
return mgRepository.findOne(query);
}
详细请看:
https://github.com/Dylan-haiji/javayh-cloud/tree/master/javayh-mongodb
希望对看到的小伙伴有所帮助
小编寄语
小编创建了一个关于Java学习讨论的微信群!想进去的可以联系小编!同时也欢迎大家点赞与转发!
小编微信:372787553
备注为进群,通过后小编会邀请您进群!
Ja
va
有
货
因
您
而
美
原文始发于微信公众号(Java有货):MongoDB学习记录