原文链接:http://charls-007.blog.163.com/blog/static/3545620820113303923636/
Java端要向mongoDB插入java对象时,我用了到morphia开源组件。官网:code.google.com/p/morphia
只写了DAO层的java代码,能够满足常用的增、删、改、查、分页等操作。
db.properties配置文件:
db.host=localhost //主机地址
db.port=27017 //端口(默认)
app.db.name=app //数据库名
Spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
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">
<context:property-placeholder location="classpath:db.properties" />
<bean id="mongo" class="com.mongodb.Mongo">
<constructor-arg value="${db.host}"></constructor-arg>
<constructor-arg value="${db.port}"></constructor-arg>
</bean>
<bean id="morphia" class="com.google.code.morphia.Morphia"></bean>
<bean id="baseDao" class="com.my.dao.BaseDao">
<constructor-arg ref="mongo"></constructor-arg>
<constructor-arg ref="morphia"></constructor-arg>
<constructor-arg value="${app.db.name}"></constructor-arg>
</bean>
</beans>
DAO代码:
package com.my.dao;
import java.util.List;
import java.util.regex.Pattern;
import org.bson.types.ObjectId;
import com.google.code.morphia.Datastore;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.dao.BasicDAO;
import com.google.code.morphia.query.Query;
import com.mongodb.Mongo;
import com.my.entity.BaseEntity;
import com.my.page.Page;
public class BaseDao extends BasicDAO<BaseEntity, ObjectId> {
private Datastore dt;
protected BaseDao(Mongo mongo, Morphia morphia, String dbName) {
super(mongo, morphia, dbName);
dt = morphia.createDatastore(mongo, dbName);
}
public void save(Object entity) {
dt.save(entity);
}
@SuppressWarnings("unchecked")
public List findAll(Class clazz) {
return dt.find(clazz).asList();
}
@SuppressWarnings( { "unchecked" })
public List findByNameFuzzyQuery(Class clazz, String title, Object value) {
Query query = dt.createQuery(clazz);
// Pattern pattern = Pattern.compile("^.*" + key +
// ".*$",Pattern.CASE_INSENSITIVE);
Pattern pattern = Pattern.compile(value.toString(),
Pattern.CASE_INSENSITIVE);
query.filter(title, pattern);
return query.asList();
}
@SuppressWarnings("unchecked")
public List findByName(Class clazz, String title, Object value) {
Query query = dt.createQuery(clazz);
query.filter(title, value);
return query.asList();
}
@SuppressWarnings("unchecked")
public List findById(Class clazz, Object id) {
Query query = dt.createQuery(clazz);
query.filter("_id", id);
return query.asList();
}
@SuppressWarnings("unchecked")
protected Query createNameQuery(Class clazz,String title, Object value) {
return (Query) dt.createQuery(clazz).field(title).equal(value);
}
@SuppressWarnings("unchecked")
protected Query createQuery(Class clazz){
return dt.createQuery(clazz);
}
public void update(Object object) {
dt.save(object);
}
@SuppressWarnings("unchecked")
public void deleteAll(Class clazz) {
Query query = this.createQuery(clazz);
dt.delete(query);
}
@SuppressWarnings("unchecked")
public void deleteByName(Class clazz, String title, Object value) {
Query query = this.createNameQuery(clazz,title, value);
dt.delete(query);
}
@SuppressWarnings("unchecked")
public Query pagingQuery(Class clazz,Page page){
Query q = this.createQuery(clazz);
if(page != null){
q.limit(page.getPageSize()).offset((page.getCurrentPageNo() - 1) * page.getPageSize());
page.setTotal((int)q.countAll());
}
return q;
}
}
分页用到的Page类:
package com.my.page;
public class Page {
private int currentPageNo; //当前页数
private int total; //总页数
private int pageSize; //每页显示条数
// 得到总页数
public int getTotalPages() {
if (total == 0)
return 1;
return (total + pageSize - 1) / pageSize;
}
// 得到第一页页号
public int getFirstPageNo() {
return 1;
}
// 得到最后一页页号
public int getLastPageNo() {
return getTotalPages();
}
// 得到上一页页号
public int getPrePageNo() {
if (currentPageNo == 1) {
return 1;
}
return currentPageNo - 1;
}
// 得到下一页页号
public int getNextPageNo() {
if (currentPageNo == getTotalPages()) {
return currentPageNo;
}
return currentPageNo + 1;
}
public int getCurrentPageNo() {
return currentPageNo;
}
public void setCurrentPageNo(int currentPageNo) {
this.currentPageNo = currentPageNo;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
实体类(javaBean):
package com.my.entity;
import java.io.Serializable;
import java.util.Date;
import org.bson.types.ObjectId;
import com.google.code.morphia.annotations.Entity;
import com.google.code.morphia.annotations.Id;
@Entity
//默认是要持久所有对象
public class BaseEntity implements Serializable{
private static final long serialVersionUID = 1L;
@Id
private ObjectId id;
// @Transient 这个表示不持久
private String title; //标题
private String place; //地点
private Date createTime; //创建时间
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
Test类:
import java.util.Date;
import java.util.List;
import org.bson.types.ObjectId;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.google.code.morphia.query.Query;
import com.my.dao.BaseDao;
import com.my.entity.BaseEntity;
import com.my.page.Page;
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
BaseDao baseDao = (BaseDao) context.getBean("baseDao");
System.out.println("-------------------");
//添加
// BaseEntity be = new BaseEntity();
// be.setTitle("aha");
// be.setPlace("成都");
// be.setCreateTime(new Date());
// try{
// baseDao.save(be);
// System.out.println("成功!!!!!!!!!!!!");
// }catch (Exception e) {
// e.printStackTrace();
// System.out.println("失败-------------");
// }
//查询全部
// List<BaseEntity> list = baseDao.findAll(BaseEntity.class);
// for(BaseEntity be : list){
// System.out.println(be.getTitle()+" "+be.getPlace()+" "+be.getCreateTime()+" "+be.getId());
// }
// System.out.println("*****************");
//模糊查询和非模糊查询
// List<BaseEntity> list = baseDao.findByNameFuzzyQuery(BaseEntity.class, "title","a");
// List<BaseEntity> list = baseDao.findByName(BaseEntity.class,"title", "hao");
//
// System.out.println(list.size());
//
// for(BaseEntity be : list){
// System.out.println(be.getTitle()+" "+be.getPlace());
// }
//根据ID查询
// List<BaseEntity> list = baseDao.findById(BaseEntity.class, ObjectId.massageToObjectId("4d99992acf8755ee859cbcdb"));
// for(BaseEntity be : list){
// System.out.println(be.getId()+" "+be.getTitle());
// }
//根据自定义进行修改
// try{
// List<BaseEntity> l = baseDao.findByName(BaseEntity.class, "title", "hehehe");
// if(l.size() == 0){
// System.out.println("名称不存在..........");
// }else{
// for(BaseEntity be : l){
// be.setTitle("abc");
// be.setPlace("北京");
// baseDao.update(be);
// }
//
// System.out.println("成功!!!!!!!!!!!!!!");
// }
// }catch (Exception e) {
// System.out.println(e);
// }
//分页查询
// Page p = new Page();
// p.setCurrentPageNo(1);
// p.setPageSize(3);
//
// Query<BaseEntity> l = baseDao.pagingQuery(BaseEntity.class, p);
// for(BaseEntity be : l){
// System.out.println(be.getTitle()+" "+be.getPlace()+" "+p.getTotal());
// }
spring集成mongoDB 是不是很简单啊.
==========================================================
以下为另处收集:
Mongo是没有like查询的方式的
要进行模糊匹配只能借助于正则表达式
- Mongo m=new Mongo();
- DB db=m.getDB("UserDB");
- DBCollection collection=db.getCollection("userCollection");
- BasicDBObject cond=new BasicDBObject();
-
-
- if(province!=""){
- cond.put("province", province);
- }
- if(area!=""){
- cond.put("area", area);
- }
- if(keywords!=""){
- Pattern pattern=Pattern.compile("^.*"+keywords+".*$");
- cond.put("name", pattern);
- }
-
-
- DBCursor returns=collection.find(cond);
还有一种是mongoDB 和Spring结合的 Spring-data的模式查询 代码如下
-
-
- public List<User> findUserTop9(String s) {
-
- mongoTemplate.setDatabaseName("UserDB");
- mongoTemplate.setDefaultCollectionName("userColl");
-
- List<User> users = mongoTemplate.find(new Query(new Criteria(
- "name").regex(".*?"+"张"+".*")).limit(9), User.class);
-
- return users;
- }
分享到:
相关推荐
Jqgrid_Spring_MongoDB Jqgrid Spring MongoDB 集成示例代码 在此示例代码中,我将 mongodb 与 spring mvc 和 jqgrid 集成在一起。所有树技术都具有出色的性能。
使用Spring Data MongoDB和MongoDB 3.0 17.1.1。配置选项 17.1.2。WriteConcern和WriteConcernChecking 17.1.3。认证 17.1.4。服务器端验证 17.1.5。其他事情要注意 附录 附录A:命名空间参考 元素 附录B:Poppers...
spring集成Mongodb环境搭建,仅供参考。
Spring集成MongoDB官方指定jar包:spring-data-mongodb-1.4.1.RELEASE.jar
skip随着数据量上去,分页性能极具下降,不推荐。这里使用spring-data-mongo实现的分页,并且实现了mongodb自增id(监听器方式)、也集成了轻量级插件MongodbPlugin,有需要的可以下载看看哦~
spring mvc 集成mongoDB项目 例子
主要有三个模块,springcloud集成es,gateway,mongdodb, 通知有基于feign调用的整套代码注解说明 能帮助大家轻易打建springcloud基于nocos配置,注册中心的微服务架构 包含了远程共享私库 manven配置, nacos配置...
网上找的资料都不齐全,根据网上查找的资料整合起来,在Linux下安装mongodb复制集+用户认证,Spring集成mongodb测试,整理操作文档,并附上源码。运维不懂开发,那是不行了!
SpringMongoDb 学习和测试 Spring 与 MongoDB 集成的示例项目。 作为先决条件,这需要一个 MongoDB 服务器。 并且可以在 Spring bean“AbstractMongoConfiguration”中配置服务器详细信息。
自己做着玩的,完成了spring4与mongodb3.4.4的简单集成,供大家参考学习
MongoDB spring hibernate java 集成demo
springMVC集成mongoDB的demo
maven(jersey+redis+mongodb+spring)集成
该jar包是最新的spring集成mongodb的包
包含了spring+springmvc+mongodb + mybaits+ oracle所必须的基本全部jar包,经本人亲自测试,从源码中复制出来的,欢迎下载
springmvc与mongoDB集成所需jar包 包括spring-data-mongodb-1.7.0.jar、spring-data-commons-1.10.0.RELEASE.jar、spring-data-commons-core-1.4.1.RELEASE.jar、mongo-java-driver-3.0.1.jar 对应支持的mongoDB版本...
spring boot 集成 mongodb
spring4.2 集成mongodb框架morphia1.1 代码实现和配置
本文将详细介绍如何在Spring Boot项目中集成MongoDB数据库,包括其原理、使用流程、步骤以及完整的代码示例。通过本文,读者将能够了解Spring Boot与MongoDB的集成方式,掌握在Spring Boot应用程序中操作MongoDB...
springmvc与mongoDB集成需要下面几个的jar包:mongo-java-driver-3.0.1.jarspring-data-commons-1.10.0.RELEASE.jarspring-data-commons-core-1.4.1.RELEASE.jarspring-data-mongodb-1.7.0.RELEASE.jar已经打包在...