SpringMVC整合MongoDB开发

来源:互联网 发布:2017淘宝图片空间收费 编辑:程序博客网 时间:2024/05/21 16:19

1. 项目结构


2.配置说明

2.1 web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>springmvcmongo</display-name>    <context-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath:applicationContext.xml</param-value>  </context-param>    <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>    <servlet>  <servlet-name>springmvc</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <init-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath:springmvc-web.xml</param-value>  </init-param>  </servlet>    <servlet-mapping>  <servlet-name>springmvc</servlet-name>  <url-pattern>/</url-pattern>  </servlet-mapping>    <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  </web-app>
2.2 applicationContext-mongo.xml

<?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">             <context:property-placeholder location="classpath:ENVSpecific.properties" />        <mongo:mongo id="mongo" replica-set="${mongo.hostport}"/>        <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">    <constructor-arg name="mongo" ref="mongo"/>    <constructor-arg name="databaseName" value="${databasename}"/>    <constructor-arg name="userCredentials" ref="mongoCredentials"/></bean><bean id="mongoCredentials" class="org.springframework.data.authentication.UserCredentials" >    <constructor-arg  name="username" value="${mongo.username}" />    <constructor-arg  name="password" value="${mongo.password}" /></bean>    </beans>
2.3 springmvc-web.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"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     http://www.springframework.org/schema/mvc     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><context:component-scan base-package="com.npf.controller"/><mvc:annotation-driven /><mvc:resources location="/resources/" mapping="/resources/**"/><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean></beans>
2.4 applicationContext.xml

<?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/beans               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd              http://www.springframework.org/schema/data/mongo              http://www.springframework.org/schema/data/mongo/spring-mongo.xsd            http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context-2.5.xsd">              <import resource="classpath:applicationContext-mongo.xml"/>                   <context:component-scan base-package="com.npf"></context:component-scan>    </beans>


ENVSpecific.properties

2databasename=unittestsmongo.hostport=dbdv01:32017,dbdv02:32017,dbdv03:32017mongo.username=onemongo.password=one

3. 持久层的操作实现

3.1 BaseDao
package com.npf.dao.base;import java.util.List;import org.springframework.data.mongodb.core.query.Query;public interface BaseDao<T> {public void save(T t,String collectionName);public void remove(Query query,Class<T> clazz,String collectionName);public T findById(Object id,Class<T> clazz,String collectionName);public T findOne(Query query,Class<T> clazz,String collectionName);public List<T> findAll(Class<T> clazz,String collectionName);public List<T> find(Query query,Class<T> clazz,String collectionName);public List<T> findByPage(Query query,Class<T> clazz,String collectionName,int start, int size);public Long getPageCount(Query query,Class<T> clazz);}
3.2 BaseDaoImpl
package com.npf.dao.base.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.data.mongodb.core.query.Update;import com.npf.dao.base.BaseDao;public class BaseDaoImpl<T> implements BaseDao<T> {@Autowiredprotected MongoTemplate mongoTemplate;@Overridepublic void save(T t,String collectionName){    this.mongoTemplate.save(t, collectionName);}   @Overridepublic void remove(Query query,Class<T> clazz,String collectionName){mongoTemplate.remove(query, clazz, collectionName);}@Overridepublic T findById(Object id,Class<T> clazz,String collectionName) {Query query = new Query();        Criteria criteria = Criteria.where("_id").is(id);        query.addCriteria(criteria);return mongoTemplate.findById(query, clazz,collectionName);}@Overridepublic T findOne(Query query,Class<T> clazz,String collectionName) {return mongoTemplate.findOne(query, clazz, collectionName);}@Overridepublic List<T> findAll(Class<T> clazz,String collectionName) {return mongoTemplate.findAll(clazz, collectionName);}@Overridepublic List<T> find(Query query,Class<T> clazz,String collectionName) {return mongoTemplate.find(query, clazz, collectionName);}@Overridepublic List<T> findByPage(Query query, Class<T> clazz,String collectionName, int start, int size) {query.skip(start);        query.limit(size);        List<T> lists = this.mongoTemplate.find(query, clazz,collectionName);return lists;}@Overridepublic Long getPageCount(Query query,Class<T> clazz) {return mongoTemplate.count(query, clazz);}public void updateFirst(Query query,Class<T> clazz,Update update){        this.mongoTemplate.updateFirst(query, update, clazz);    }public void updateMulti(Query query, Class<T> clazz,Update update){        this.mongoTemplate.updateMulti(query, update, clazz);    }    public void updateInser(Query query,Class<T> clazz, Update update){        this.mongoTemplate.upsert(query, update, clazz);    }}
3.3 UserDao
package com.npf.dao.user;import com.npf.dao.base.BaseDao;import com.npf.entity.User;public interface UserDao extends BaseDao<User> {}
3.4 UserDaoImpl
package com.npf.dao.user.impl;import org.springframework.stereotype.Repository;import com.npf.dao.base.impl.BaseDaoImpl;import com.npf.dao.user.UserDao;import com.npf.entity.User;@Repository("userDao")public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao {}
4. Service 层
4.1 UserService
package com.npf.service;import java.util.List;import com.npf.entity.User;public interface UserService {public List<User> getAllUsers();public User getUserById(String id);public void saveUser(User user);}
4.2 UserServiceImpl
package com.npf.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.npf.dao.user.UserDao;import com.npf.entity.User;import com.npf.service.UserService;import com.npf.util.CollectionConstants;@Service("userService")public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Overridepublic List<User> getAllUsers() {return userDao.findAll(User.class, CollectionConstants.users);}@Overridepublic User getUserById(String id) {return userDao.findById(id, User.class, CollectionConstants.users);}@Overridepublic void saveUser(User user) {userDao.save(user, CollectionConstants.users);}}
5. Controller 层
package com.npf.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.npf.entity.User;import com.npf.service.UserService;@Controllerpublic class UserController {@Autowiredprivate UserService userService;@RequestMapping("/user/list")public ModelAndView fetchAllUser(){List<User> userList = userService.getAllUsers();ModelAndView modelAndView = new ModelAndView("user/list");modelAndView.addObject("userList", userList);return modelAndView;}}
6. 测试
url : http://localhost:8080/springmvcmongo/user/list

源代码已经托管到Github上面:springmvcmongo
参考文献:
1. http://www.linuxidc.com/Linux/2015-02/114229.htm
2. http://www.linuxidc.com/Linux/2015-02/114229p2.htm

0 0
原创粉丝点击