天天看点

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

小弟前一段时间在玩弄着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等功能。后序还会集成其他的框架。

欢迎批评指正。