您的位置:首页 > 数据库 > Mongodb

Spring和maven集成mvc,jpa,mongodb,Hibernate等

2014-03-13 18:20 489 查看
小弟前一段时间在玩弄着Spring,后来发现Spring的那些项目是个好东西啊,特别是Spring的Data那一块,使用起来是那么水到渠成,不管底层数据库是结构化的还是非结构化的(MongoDB,neo4j),用起来没什么区别。

所以,自己手动从头到尾搭建了一个Spring集成的项目,也就当以后做东西的模板,或者作为搭建项目的根吧。

Spring集成的MVC,Hibernate,Jpa,MongoDB,SiteMesh。

完善中,还没完成。

等待加入Shiro,Bootstrap等。

废话少说,先看一段代码:

一个Dao

package com.cn.wuxiong.spring.mongodb.landscape.dao;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

import com.cn.wuxiong.spring.mongodb.landscape.domain.ScenicSpots;

@Repository
public interface ScenicDao extends MongoRepository<ScenicSpots, Long>,ScenicDaoEx { // 这个接口中可以写一些StudentDao不能满足要求的方法。我这里纯粹测试好玩

}


如果本身的MongoRepository 满足不了要求的话,再一个接口作为拓展:

package com.cn.wuxiong.spring.mongodb.landscape.dao;

import java.util.List;

import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.query.Query;

import com.cn.wuxiong.spring.mongodb.landscape.domain.ScenicSpots;

public interface ScenicDaoEx {
public void testFunc();

public void persist(ScenicSpots ss);

public int getScenicSpotsCount();

public ScenicSpots findScenicSpotsById(ObjectId id);

public ScenicSpots findScenicSpotsByCondition(Query query);

public List<ScenicSpots> findScenicSpotssByCondition(Query query);
}


然后对这些接口实现:

package com.cn.wuxiong.spring.mongodb.landscape.dao;

import java.util.List;

import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;

import com.cn.wuxiong.spring.mongodb.landscape.domain.ScenicSpots;

@Repository
public class ScenicDaoImpl implements ScenicDaoEx {// 对于那些补充的方法的实现
@Autowired
private MongoTemplate mongoTemplate;

// @Override
public void testFunc() {
System.out.println("#############Test DAO");
}

public void persist(ScenicSpots ss) {
System.out.println("进入保存……");
mongoTemplate.insert(ss);
System.out.println(ss);
}

public int getScenicSpotsCount() {
return mongoTemplate.findAll(ScenicSpots.class).size();
}

public ScenicSpots findScenicSpotsById(ObjectId id) {
return mongoTemplate.findById(id, ScenicSpots.class);
}

public ScenicSpots findScenicSpotsByCondition(Query query) {
return mongoTemplate.findOne(query, ScenicSpots.class);
}

public List<ScenicSpots> findScenicSpotssByCondition(Query query) {
return mongoTemplate.find(query, ScenicSpots.class);
}

}


基本上看不出来这里使用了MongoDB,因为MongoRepository和后面的接口将实现细节给屏蔽了。

我当时的运行结果为:

记录数量为:12

记录数量为:12

进入保存……

记录数量为:13

新创建的对象的id为:532186787bce33658dbdd772

INFO :[2014-03-13 18:20:41]com.cn.wuxiong.spring.mongodb.landscape.service.ScenicService.addScenic(ScenicService.java:43) : 创建:ScenicSpots [id=532186787bce33658dbdd772, name=飞沙洲5, ticketPrice=55.56, openTime=8, closeTime=18, remark=落霞与孤鹜齐飞,秋水共长天一色。]

有什么问题,欢迎大神拍砖。

项目SVN地址:http://spring-all.googlecode.com/svn/trunk/

该例子集成了Jpa,Spring mvc,MongoDB,SiteMesh,Maven,Spring Data等功能。后序还会集成其他的框架。

欢迎批评指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: