Mongodb与Spring配合使用的例子

                 Spring已经把Mongodb包装得这么爽,写了一个CRUD的例子与大家分享。

1.applicationContext.xml

  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
      
      
<?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:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-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/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:mongo host="192.168.100.103" port="10111"/>
<bean id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemplate">
<constructor-arg ref="mongo"/>
<constructor-arg name="databaseName" value="mydb"/>
<constructor-arg name="defaultCollectionName" value="netflows" />
</bean>
<bean id="netFlowRepository" class="com.mongodb.dao.impl.NetFlowRepository">
<property name="mongoTemplate" ref="mongoTemplate"></property>
</bean>
2.包com.mongodb.bean中的实体类

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
      
      
package com.mongodb.bean;
public class NetFlow {
private String _id;
private String sourceIp;
private String destIp;
private long sourcePort;
private long destPort;
private String start_time;
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getSourceIp() {
return sourceIp;
}
public void setSourceIp(String sourceIp) {
this.sourceIp = sourceIp;
}
public String getDestIp() {
return destIp;
}
public void setDestIp(String destIp) {
this.destIp = destIp;
}
public long getSourcePort() {
return sourcePort;
}
public void setSourcePort(long sourcePort) {
this.sourcePort = sourcePort;
}
public long getDestPort() {
return destPort;
}
public void setDestPort(long destPort) {
this.destPort = destPort;
}
public String getStart_time() {
return start_time;
}
public void setStart_time(String start_time) {
this.start_time = start_time;
}
}
3.包com.mongodb.dao中接口类

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
      
      
package com.mongodb.dao;
import java.util.List;
import com.mongodb.bean.NetFlow;
public interface AbstractRepository {
//添加对象
public void insert(NetFlow netflow);
//根据ID查找对象
public NetFlow findOne(long id);
//查询所有
public List<NetFlow> findAll();
//删除执行的ID对象
public List<NetFlow> findByRegex(String regex);
//根据ID删除
public void removeOne(String id);
//删除所有
public void removeAll();
//通过ID找到并修改
public void findAndModify();
//通过ID找到并修改     public List<NetFlow> pagingQuery(Class clazz,com.mongodb.utils.Page page);
}
4.包com.mongodb.dao.impl中的接口实现类

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
      
      
package com.mongodb.dao.impl;
import java.util.List;
import org.springframework.data.document.mongodb.MongoTemplate;
import org.springframework.data.document.mongodb.query.Criteria;
import org.springframework.data.document.mongodb.query.Query;
import com.mongodb.bean.NetFlow;
import com.mongodb.dao.AbstractRepository;
public class NetFlowRepository implements AbstractRepository{
private MongoTemplate mongoTemplate;
@Override
public void insert(NetFlow netflow) {
getMongoTemplate().insert(netflow);
}
@Override
public NetFlow findOne(long id) {
return getMongoTemplate().findOne(new Query(Criteria.where("id").is(id)), NetFlow.class);
}
//查询所有的内容
@Override
public List<NetFlow> findAll() {
return getMongoTemplate().find(new Query(),NetFlow.class);
}
@Override
public List<NetFlow> findByRegex(String regex) {
return null;
}
@Override
public void removeOne(String id) {
Criteria criteria = Criteria.where("id").in(id);
if(criteria != null){
Query query = new Query(criteria);
System.out.println(query.toString());
if(query!=null && getMongoTemplate().findOne(query,NetFlow.class)!=null){
getMongoTemplate().remove(getMongoTemplate().findOne(query, NetFlow.class));
}
}
}
@Override
public void removeAll() {
List<NetFlow> list = this.findAll();
if(list != null){
for(NetFlow flow:list){
getMongoTemplate().remove(flow);
}
}
}
@Override
public void findAndModify() {
}
public MongoTemplate getMongoTemplate() {
return mongoTemplate;
}
public void setMongoTemplate(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override public List<NetFlow> pagingQuery(Class clazz , com.mongodb.utils.Page page) { int skip = (page.getCurrentPageNo()-1)*page.getPageSize(); Query query = new Query(); query.skip(skip); query.limit(page.getPageSize()); List<NetFlow> netFlows = new ArrayList<NetFlow>(); netFlows = getMongoTemplate().find(query, NetFlow.class); return netFlows; }
}
5.测试类

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
      
      
package com.mongodb.test;
import java.util.List;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mongodb.bean.NetFlow;
import com.mongodb.dao.AbstractRepository;
import com.mongodb.dao.impl.NetFlowRepository;
public class MongodbTest {
private AbstractRepository pr = null;
public void listAll(){
List<NetFlow> list = pr.findAll();
for(NetFlow n : list){
System.out.println(n.get_id());
}
}
public void deleteOne(String id){
pr.removeOne(id);
}
public void findOne(){
long id =5;
NetFlow flow = pr.findOne(id);
System.out.println(flow.getSourceIp());
}
public void removeAll(){
pr.removeAll();
}
public void insert(){
NetFlow flow = new NetFlow();
flow.set_id("10");
flow.setDestIp("1.1.1.1");
flow.setDestPort(1234);
flow.setSourceIp("2.2.2.2");
flow.setSourcePort(2345);
flow.setStart_time("111111111111");
pr.insert(flow);
}
@SuppressWarnings("unchecked") public void pagingQuery(){ com.mongodb.utils.Page page = new com.mongodb.utils.Page(); page.setCurrentPageNo(1); page.setPageSize(3); List<NetFlow> netFlows = pr.pagingQuery(NetFlow.class, page); for(int i = 0; i < netFlows.size();i++){ System.out.println(netFlows.get(i).getSourceIp()); } }
public void init(){
org.springframework.context.ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
pr = (NetFlowRepository)ctx.getBean("netFlowRepository");
}
public void start(){
init();
//findOne();
//deleteOne("5");
//removeAll();
insert();
listAll();
}
public static void main(String[] args) {
MongodbTest mongodbTest = new MongodbTest();6
mongodbTest.start();
}
}
6.分页实体类

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
      
      
package com.mongodb.utils;
public class Page {
private int currentPageNo;
private int total;
private int pageSize;
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;
}
//得到总页数
public int getTotalPages(){
if(total ==0){
return 0;
}
return (total+pageSize-1)/pageSize;
}
//得到第一页页号
public int getFirstNo(){
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;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值