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等功能。後序還會整合其他的框架。
歡迎批評指正。