一、实例


本例是使用SpringData操作MongoDB.


实体类如下:


import java.io.Serializable;
import java.util.List;
import java.util.Map;

public class UserVO extends BaseVo implements Serializable {

private static final long serialVersionUID = -2855815469404834886L;

/** ID **/
private Long id;

/** 昵称 **/
private String nickname;
/**
* 课时费
*/
//private Double pay;
/**
* 辅导关联信息
*/
//private List<TutorRelation> tutorRelation;

/** 邮箱 **/
private String email;

/** 电话 **/
private String mobile;

/** 密码 **/
private String password;

/** 头像 **/
private String facefile;

/** 简介 **/
private String note;

/** 时区 **/
private String timezone;

/** 注册时间 **/
private String regtime;

/** 出生日期 **/
private String birthday;

/** 激活状态(0=未激活,1=已激活,2=已补全资料可正常使用) **/
private Integer activationstatus;

/** 是否是辅导(0=不是辅导,2=认证中,3-认证通过,4-认证失败) **/
private Integer tutorstatus;

/** 用户状态(1-正常,2-禁用,3-删除) **/
private Integer status;

/** 会说 **/
private List<Language> speak;

/** 想学 **/
private List<Language> learning;

/** 性别 **/
private Integer sex;

/** 位置 **/
private Location loc;

/** 来自(中国ID-城市ID-地区ID) **/
private String from;

/** 居住(中国ID-城市ID-地区ID) **/
private String living;

/** 爱好 **/
private String hobby;

/**
* 专业
*/
private String major;

/**
* 学校
*/
private String school;
/**
* 母语
*/
private String mothertongue;
/** 辅导 **/
private TutorVO tutor;
/** 在线状态(0-离线,1-在线) **/
private Integer online;

private String hxusername;

private Integer openPartner;
private Integer openAlbum;
/**
* 人气
*/
private Integer userBrowse;
/**
* 语伴数量
*/
private Integer userPartner;
/**
* 年龄
*/
private Integer age;

/**
* 辅导数量
*/
private Integer tutorCount;
//private Integer stutentCount;
private Map<Integer,String[]>freetime;
/** 统计活跃度作排序用 **/
private Integer actdegree;
/** 排序字段 **/
private Integer order;

/**
* 黑名单列表
*/
private List<Long> illegalMembers;
/**
* 是否显示自己 0/null 显示自己 1-隐藏自己
*/
private Long isShow;

/**
* 语伴视频字段
*/
private String partnerVideoUrl;

/**
* 辅导标签
*/
private String tag;

public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public String getPartnerVideoUrl() {
return partnerVideoUrl;
}
public void setPartnerVideoUrl(String partnerVideoUrl) {
this.partnerVideoUrl = partnerVideoUrl;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}

public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}

public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}

public List<Language> getSpeak() {
return speak;
}
public void setSpeak(List<Language> speak) {
this.speak = speak;
}
public List<Language> getLearning() {
return learning;
}
public void setLearning(List<Language> learning) {
this.learning = learning;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Location getLoc() {
return loc;
}
public void setLoc(Location loc) {
this.loc = loc;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getLiving() {
return living;
}
public void setLiving(String living) {
this.living = living;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public TutorVO getTutor() {
return tutor;
}
public void setTutor(TutorVO tutor) {
this.tutor = tutor;
}
public Integer getOpenPartner() {
return openPartner;
}
public void setOpenPartner(Integer openPartner) {
this.openPartner = openPartner;
}
public Integer getOpenAlbum() {
return openAlbum;
}
public void setOpenAlbum(Integer openAlbum) {
this.openAlbum = openAlbum;
}
public Integer getUserBrowse() {
return userBrowse;
}
public void setUserBrowse(Integer userBrowse) {
this.userBrowse = userBrowse;
}
public Integer getUserPartner() {
return userPartner;
}
public void setUserPartner(Integer userPartner) {
this.userPartner = userPartner;
}

public String getHxusername() {
return hxusername;
}
public void setHxusername(String hxusername) {
this.hxusername = hxusername;
}
public Integer getActdegree() {
return actdegree;
}
public void setActdegree(Integer actdegree) {
this.actdegree = actdegree;
}
public Integer getOnline() {
return online;
}
public void setOnline(Integer online) {
this.online = online;
}
public String getFacefile() {
return facefile;
}
public void setFacefile(String facefile) {
this.facefile = facefile;
}
public String getTimezone() {
return timezone;
}
public void setTimezone(String timezone) {
this.timezone = timezone;
}
public String getRegtime() {
return regtime;
}
public void setRegtime(String regtime) {
this.regtime = regtime;
}
public Integer getActivationstatus() {
return activationstatus;
}
public void setActivationstatus(Integer activationstatus) {
this.activationstatus = activationstatus;
}
public Integer getTutorstatus() {
return tutorstatus;
}
public void setTutorstatus(Integer tutorstatus) {
this.tutorstatus = tutorstatus;
}
public Map<Integer, String[]> getFreetime() {
return freetime;
}
public void setFreetime(Map<Integer, String[]> freetime) {
this.freetime = freetime;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public String getMothertongue() {
return mothertongue;
}
public void setMothertongue(String mothertongue) {
this.mothertongue = mothertongue;
}
public Integer getTutorCount() {
return tutorCount;
}
public void setTutorCount(Integer tutorCount) {
this.tutorCount = tutorCount;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public List<Long> getIllegalMembers() {
return illegalMembers;
}
public void setIllegalMembers(List<Long> illegalMembers) {
this.illegalMembers = illegalMembers;
}
public Long getIsShow() {
return isShow;
}
public void setIsShow(Long isShow) {
this.isShow = isShow;
}


}




<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-redis="http://www.springframework.org/schema/integration/redis"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:stream="http://www.springframework.org/schema/integration/stream"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-2.1.xsd
http://www.springframework.org/schema/integration/redis
http://www.springframework.org/schema/integration/redis/spring-integration-redis-2.1.xsd
http://www.springframework.org/schema/integration/stream
http://www.springframework.org/schema/integration/stream/spring-integration-stream-2.1.xsd ">

<mongo:mongo id="mongo" replica-set="${mongodb.address}">
<!-- 一些连接属性的设置 -->
<mongo:options connect-timeout="${mongo.connectTimeout}"
max-wait-time="20000" ></mongo:options>
</mongo:mongo>
<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
<mongo:db-factory id="factory" dbname="${mongodb.database}"
mongo-ref="mongo" username="${mongodb.username}" password="${mongodb.password}" />
<!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="factory" />
</bean>
<mongo:mongo id="mongoAdmin" replica-set="${mongodb.address}">
<!-- 一些连接属性的设置 -->
<mongo:options connect-timeout="${mongo.connectTimeout}"
max-wait-time="10000"></mongo:options>
</mongo:mongo>
<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
<mongo:db-factory id="factoryA" dbname="${mongodb.databaseA}"
mongo-ref="mongoAdmin" username="${mongodb.usernameA}" password="${mongodb.password}" />
<!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->
<bean id="mongoTemplateAdmin" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="factoryA" />
</bean>
</beans>




<!-- spring mongodb mapper -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.5.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.12.3</version>
</dependency>


Dao层注入:


@Resource
private MongoTemplate mongoTemplate;

@Resource //mongoTemplateAdmin用来清除内存
private MongoTemplate mongoTemplateAdmin;


CRUD操作:


增 

@Override
public void addUserOperLog(UserLogVO vo) {
/**
* vo表示存储在集合中的对象 新增方法提供有四种,可以根据不同情况选择使用
* log表示存储对象的集合名称
*/
mongoTemplate.insert(vo, "log");
}


@Override
public void removeUser(Long id) {
/**
* org.springframework.data.mongodb.core.query.Criteria
* Criteria由SpringData提供,用来拼接条件参数。 Query对象也由SpringData提供,
*/

Criteria criteria = new Criteria();
criteria.and("id").is(id);
mongoTemplate.remove(new Query().addCriteria(criteria), UserVO.class);
logger.info("移除用户信息成功,info:" + JSON.toJSONString(criteria));
}



public int updateUser(UserVO user) {
Criteria criteria = new Criteria();
criteria.and("id").is(user.getId());
Update update = new Update();
update.rename(user.getNickname(), "tom");// 更新user的名称为tom
WriteResult result = mongoTemplate.updateFirst(new Query().addCriteria(criteria), update, UserVO.class);
if (result.getN() > 0) {
logger.info("更新用户信息成功,info:" + JSON.toJSONString(update));
return 1;
}
return 0;
}



public UserVO findUser(UserVO user) {
UserVO userVO = mongoTemplate.findById(user.getId(), UserVO.class);
if (CommonUtil.isNotNull(userVO)) {
return userVO;
}
return null;
}
public List<UserVO> findUser(UserVO user) {
Criteria criteria = new Criteria();
criteria.and("id").is(user.getId());
List<UserVO> userList = mongoTemplate.find(new Query().addCriteria(criteria), UserVO.class);
if(CollectionUtils.isNotEmpty(userList)){
return userList;
}
return null;
}





SpringData给我们提供的Criteria、Query对象可以进行多条件的查询操作。总的来说SpringData封装了很多操作,我们直接可以调用其API就可以完成必要操作。