MongDB之各种查询操作
接口 IMongDaoFind:
package com.net.test.mongdb.dao;public interface IMongDaoFind {
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUsers(); </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserByName(String name); </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserLikeName(String name); </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserPs(); </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserAndOperator(); </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserOrOperator(); </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserOrOperator2();
}
实现类 MongDaoFindImp:
package com.net.test.mongdb.dao.imp;import java.util.ArrayList;
import java.util.List;import javax.annotation.Resource;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;import com.net.test.mongdb.dao.IMongDaoFind;
import com.net.test.mongdb.entity.User;
import com.net.test.mongdb.entity.UserP;
import com.net.test.mongdb.entity.UserPsg;/**
@author ***
@Time:2017 年 8 月 4 日 上午 10:40:33
@version 1.0
Function: TODO
*/
@Repository
public class MongDaoFindImp implements IMongDaoFind{@Resource
protected MongoTemplate mongoTemplate;/**
- @description 查询所有用户信息
*/
@Override
public void findUsers()
{
List<User> list = mongoTemplate.findAll(User.class);
for(User user : list)
{
System.out.println("name :" + user.getName()+ ", age :" + user.getAge() + ", sex :" + user.getSex());
}
}/**
- @description 根据用户名,单条查询用户信息. 如果有重复名称,默认查询第一条
- @param name
*/
public void findUserByName(String name)
{
Query query = Query.query(Criteria.where("name").is(name));
User user = mongoTemplate.findOne(query,User.class);
System.out.println("name :" + user.getName()+ ", age :" + user.getAge() + ", sex :" + user.getSex());
}/**
@description 模糊查询
@param name
*/
@Override
public void findUserLikeName(String name)
{
Query query = new Query();
query.addCriteria(Criteria.where("name").regex(name));List<User> list = mongoTemplate.find(query, User.class);
for(User user : list)
{
System.out.println("name :" + user.getName()+ ", age :" + user.getAge() + ", sex :" + user.getSex());
}
}/**
- @description 表名与 pojo 不相同进行映射
*/
@Override
public void findUserPs()
{
List<UserP> list = mongoTemplate.findAll(UserP.class, "user");
for(UserP user : list)
{
System.out.println("name :" + user.getName()+ ", age :" + user.getAge() +
", sex :" + user.getSex() + ", hobby :" + user.getHobby());
}
}/**
@description 测试多条件进行查询,测试 and 连接符
*/
@Override
public void findUserAndOperator() {Query query = new Query();
Criteria c = new Criteria();
query.addCriteria(c.andOperator(Criteria.where("name").regex("车"),
Criteria.where("age").is(18)));List<User> list = mongoTemplate.find(query, User.class);
for(User user : list)
{
//基础信息
String name = user.getName();
int age = user.getAge();
String sex = user.getSex();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置对象</span> UserPsg psg =<span style="color: rgba(0, 0, 0, 1)"> user.getPsg(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置数组</span> ArrayList<String> listHobby = (ArrayList<String><span style="color: rgba(0, 0, 0, 1)">) user.getHobby(); StringBuffer bf </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuffer(); </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> != listHobby && listHobby.size() > 0<span style="color: rgba(0, 0, 0, 1)">) { </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)">(String hobby : listHobby) { bf.append(hobby </span>+ ","<span style="color: rgba(0, 0, 0, 1)">); } }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { bf.append(</span>""<span style="color: rgba(0, 0, 0, 1)">); } System.out.println( </span>"name : " + name + ", age : " + age + ", sex : " + sex + ", hobby : " + bf.toString() + ", UserPsg : " +<span style="color: rgba(0, 0, 0, 1)"> psg );
}
}/**
@description 测试多条件进行查询,测试平行并列 or
*/
@Override
public void findUserOrOperator()
{
Query query = new Query();
Criteria c = new Criteria();
query.addCriteria(c.orOperator(Criteria.where("name").regex("车"),
Criteria.where("age").is(10)));List<User> list = mongoTemplate.find(query, User.class);
for(User user : list)
{
//基础信息
String name = user.getName();
int age = user.getAge();
String sex = user.getSex();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置对象</span> UserPsg psg =<span style="color: rgba(0, 0, 0, 1)"> user.getPsg(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置数组</span> ArrayList<String> listHobby = (ArrayList<String><span style="color: rgba(0, 0, 0, 1)">) user.getHobby(); StringBuffer bf </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuffer(); </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> != listHobby && listHobby.size() > 0<span style="color: rgba(0, 0, 0, 1)">) { </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)">(String hobby : listHobby) { bf.append(hobby </span>+ ","<span style="color: rgba(0, 0, 0, 1)">); } }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { bf.append(</span>""<span style="color: rgba(0, 0, 0, 1)">); } System.out.println( </span>"name : " + name + ", age : " + age + ", sex : " + sex + ", hobby : " + bf.toString() + ", UserPsg : " +<span style="color: rgba(0, 0, 0, 1)"> psg );
}
}/**
@description 测试多条件进行查询,测试包含关系 or 连接符,此处的 or 和 and 有些相似
*/
@Override
public void findUserOrOperator2()
{
Query query = new Query();
query.addCriteria(Criteria.where("name").regex("车").orOperator(Criteria.where("age").is(19)));List<User> list = mongoTemplate.find(query, User.class);
for(User user : list)
{
//基础信息
String name = user.getName();
int age = user.getAge();
String sex = user.getSex();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置对象</span> UserPsg psg =<span style="color: rgba(0, 0, 0, 1)"> user.getPsg(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置数组</span> ArrayList<String> listHobby = (ArrayList<String><span style="color: rgba(0, 0, 0, 1)">) user.getHobby(); StringBuffer bf </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuffer(); </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> != listHobby && listHobby.size() > 0<span style="color: rgba(0, 0, 0, 1)">) { </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)">(String hobby : listHobby) { bf.append(hobby </span>+ ","<span style="color: rgba(0, 0, 0, 1)">); } }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { bf.append(</span>""<span style="color: rgba(0, 0, 0, 1)">); } System.out.println( </span>"name : " + name + ", age : " + age + ", sex : " + sex + ", hobby : " + bf.toString() + ", UserPsg : " +<span style="color: rgba(0, 0, 0, 1)"> psg );
}
}
}