ssm(spring+springMVC+Mybatis)框架集成Mongodb
来源:互联网 发布:c语言base64编码 编辑:程序博客网 时间:2024/06/05 21:57
1、开发环境
JDK:1.6
ssm框架关联jar包:
aopalliance.jaraspectjrt.jaraspectjweaver.jarcommons-beanutils-1.9.2.jarcommons-codec-1.9.jarcommons-collections-3.2.1.jarcommons-dbcp-1.4.jarcommons-fileupload-1.3.1.jarcommons-io-2.4.jarcommons-lang-2.6.jarcommons-logging-1.2.jarcommons-net-3.1.jarcommons-pool-1.6.jarcommons-pool2-2.2.jardruid-1.0.9.jarfastjson-1.1.39.jarfreemarker-2.3.19.jarhamcrest-core-1.3.jarjackson-all-1.9.5.jarjboss-logging-3.1.0.CR2.jarjettison-1.0.1.jarjstl-1.1.2.jarjunit-4.11.jarlog4j-1.2.17.jarlog4j-over-slf4j-1.7.7.jarmybatis-3.2.6.jarmybatis-spring-1.2.2.jarmysql-connector-java-5.1.30-bin.jarservlet-api.jarslf4j-api-1.7.7.jarslf4j-ext-1.7.7.jarspring-aop-4.0.2.RELEASE.jarspring-aspects-4.0.2.RELEASE.jarspring-beans-4.0.2.RELEASE.jarspring-context-4.0.2.RELEASE.jarspring-context-support-4.0.2.RELEASE.jarspring-core-4.0.2.RELEASE.jarspring-expression-4.0.2.RELEASE.jarspring-jdbc-4.0.2.RELEASE.jarspring-oxm-4.0.2.RELEASE.jarspring-test-4.0.2.RELEASE.jarspring-tx-4.0.2.RELEASE.jarspring-web-4.0.4.RELEASE.jarspring-webmvc-4.0.2.RELEASE.jarstandard-1.1.2.jar
mongodb 关联jar文件
mongo-java-driver-2.10.1.jarspring-data-commons-core-1.4.0.RELEASE.jarspring-data-mongodb-1.1.0.RELEASE.jar
项目结构图:
2、配置文件和实列代码
web.xml文件
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-context.xml</param-value> </context-param> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <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:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
spring-mvc.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 开启controller注解支持 --> <!-- 注意事项请参考:http://jinnianshilongnian.iteye.com/blog/1762632 --> <context:component-scan base-package="cn.zetark.oauth2.**.web.controller" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/> </context:component-scan><!--注解标签驱动 --> <mvc:annotation-driven> </mvc:annotation-driven> <!-- 当在web.xml 中 DispatcherServlet使用 <url-pattern>/</url-pattern> 映射时,能映射静态资源 --> <mvc:default-servlet-handler/> <!-- 静态资源映射 --> <mvc:resources mapping="/static/**" location="/WEB-INF/static/"/> <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- --> <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="1"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="contentType" value="text/html"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!--避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /><!-- JSON转换器 --></list></property></bean> </beans>
spring-context.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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"> <!-- 引入配置文件 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.properties" /></bean><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 初始化连接大小 --><property name="initialSize" value="${initialSize}"></property><!-- 连接池最大数量 --><property name="maxActive" value="${maxActive}"></property><!-- 连接池最大空闲 --><property name="maxIdle" value="${maxIdle}"></property><!-- 连接池最小空闲 --><property name="minIdle" value="${minIdle}"></property><!-- 获取连接最大等待时间 --><property name="maxWait" value="${maxWait}"></property></bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations" value="classpath:com/wlsq/oauth/mapper/*.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.wlsq.oauth.dao" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean> <!-- 通知 --> <tx:advice id="tx" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="find*" read-only="true" /> <tx:method name="get*" read-only="true" /> <tx:method name="select*" read-only="true" /> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="pc" expression="execution(* com.common.service.*.*(..))" /> <!--把事务控制在Service层--> <aop:advisor pointcut-ref="pc" advice-ref="tx" /> </aop:config> <!--ssm 集成 mongodb --> <import resource="classpath:spring/spring-mongodb.xml"/></beans>
spring-mongodb.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:p="http://www.springframework.org/schema/p" 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/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.4.xsd "> <!-- Default bean name is 'mongo' --> <mongo:mongo host="120.25.56.93" port="27017"/> <!--mongodb 数据库账号和密码信息 --> <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials"><constructor-arg name="username" value="admin"/><constructor-arg name="password" value="123456"/></bean> <!-- Offers convenience methods and automatic mapping between MongoDB JSON documents and your domain classes. --> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongo"/> <constructor-arg name="databaseName" value="admin"/> <constructor-arg ref="userCredentials"/> </bean> <bean id="userDao" class="com.wlsq.oauth.dao.impl.UserDao" /> </beans>
mongodb 逻辑封装代码(mongodbTemplate 封装)
package com.wlsq.oauth.dao.support;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.data.mongodb.core.MongoTemplate;public class AbstractBaseMongoTemplete implements ApplicationContextAware {protected MongoTemplate mongoTemplate;/** * 设置mongoTemplate * @param mongoTemplate the mongoTemplate to set */public void setMongoTemplate(MongoTemplate mongoTemplate) {this.mongoTemplate = mongoTemplate;}public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {// TODO Auto-generated method stubMongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);setMongoTemplate(mongoTemplate);}}
mongodb dao层数据库接口基类
package com.wlsq.oauth.dao.impl;import java.util.List;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.wlsq.oauth.dao.IUserDao;import com.wlsq.oauth.dao.support.AbstractBaseMongoTemplete;import com.wlsq.oauth.entity.User;public class UserDao extends AbstractBaseMongoTemplete implements IUserDao {/** * 新增 * <br>------------------------------<br> * @param user */ public void insert(User user) {// TODO Auto-generated method stubmongoTemplate.insert(user);}/** * 批量新增 * <br>------------------------------<br> * @param users */public void insertAll(List<User> users) {// TODO Auto-generated method stubmongoTemplate.insertAll(users);}/** * 删除,按主键id, 如果主键的值为null,删除会失败 * <br>------------------------------<br> * @param id */public void deleteById(String id) {// TODO Auto-generated method stubUser user = new User(id, null, 0);mongoTemplate.remove(user);}/** * 按条件删除 * <br>------------------------------<br> * @param criteriaUser */public void delete(User criteriaUser) {// TODO Auto-generated method stubCriteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;Query query = new Query(criteria);mongoTemplate.remove(query, User.class);}/** * 删除全部 * <br>------------------------------<br> */public void deleteAll() {// TODO Auto-generated method stubmongoTemplate.dropCollection(User.class);}/** * 按主键修改, * 如果文档中没有相关key 会新增 使用$set修改器 * <br>------------------------------<br> * @param user */public void updateById(User user) {// TODO Auto-generated method stubCriteria criteria = Criteria.where("id").is(user.getId());Query query = new Query(criteria);Update update = Update.update("age", user.getAge()).set("name", user.getName());mongoTemplate.updateFirst(query, update, User.class);}/** * 修改多条 * <br>------------------------------<br> * @param criteriaUser * @param user */public void update(User criteriaUser, User user) {// TODO Auto-generated method stubCriteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;Query query = new Query(criteria);Update update = Update.update("name", user.getName()).set("age", user.getAge());mongoTemplate.updateMulti(query, update, User.class);}/** * 根据主键查询 * <br>------------------------------<br> * @param id * @return */public User findById(String id) {// TODO Auto-generated method stubreturn mongoTemplate.findById(id, User.class);}/** * 查询全部 * <br>------------------------------<br> * @return */public List<User> findAll() {// TODO Auto-generated method stubreturn mongoTemplate.findAll(User.class);}/** * 按条件查询, 分页 * <br>------------------------------<br> * @param criteriaUser * @param skip * @param limit * @return */public List<User> find(User criteriaUser, int skip, int limit) {// TODO Auto-generated method stubQuery query = getQuery(criteriaUser);query.skip(skip);query.limit(limit);return mongoTemplate.find(query, User.class);}/** * 根据条件查询出来后 再去修改 * <br>------------------------------<br> * @param criteriaUser 查询条件 * @param updateUser 修改的值对象 * @return */public User findAndModify(User criteriaUser, User updateUser) {// TODO Auto-generated method stubQuery query = getQuery(criteriaUser);Update update = Update.update("age", updateUser.getAge()).set("name", updateUser.getName());return mongoTemplate.findAndModify(query, update, User.class);}/** * 查询出来后 删除 * <br>------------------------------<br> * @param criteriaUser * @return */public User findAndRemove(User criteriaUser) {// TODO Auto-generated method stubQuery query = getQuery(criteriaUser);return mongoTemplate.findAndRemove(query, User.class);}/** * count * <br>------------------------------<br> * @param criteriaUser * @return */public long count(User criteriaUser) {// TODO Auto-generated method stubQuery query = getQuery(criteriaUser);return mongoTemplate.count(query, User.class);}/** * * <br>------------------------------<br> * @param criteriaUser * @return */private Query getQuery(User criteriaUser) {if (criteriaUser == null) {criteriaUser = new User();}Query query = new Query();if (criteriaUser.getId() != null) {Criteria criteria = Criteria.where("id").is(criteriaUser.getId());query.addCriteria(criteria);}if (criteriaUser.getAge() > 0) {Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());query.addCriteria(criteria);}if (criteriaUser.getName() != null) {Criteria criteria = Criteria.where("name").regex("^" + criteriaUser.getName());query.addCriteria(criteria);}return query;}}
package com.wlsq.oauth.dao;import java.util.List;import com.wlsq.oauth.entity.User;public interface IUserDao {/** * 新增 * <br>------------------------------<br> * @param user */void insert(User user);/** * 新增 * <br>------------------------------<br> * @param users */void insertAll(List<User> users);/** * 删除,主键id, 如果主键的值为null,删除会失败 * <br>------------------------------<br> * @param id */void deleteById(String id);/** * 按条件删除 * <br>------------------------------<br> * @param criteriaUser */void delete(User criteriaUser);/** * 删除全部 * <br>------------------------------<br> */void deleteAll();/** * 修改 * <br>------------------------------<br> * @param user */void updateById(User user);/** * 更新多条 * <br>------------------------------<br> * @param criteriaUser * @param user */void update(User criteriaUser, User user);/** * 根据主键查询 * <br>------------------------------<br> * @param id * @return */User findById(String id);/** * 查询全部 * <br>------------------------------<br> * @return */List<User> findAll();/** * 按条件查询 * <br>------------------------------<br> * @param criteriaUser * @param skip * @param limit * @return */List<User> find(User criteriaUser, int skip, int limit);/** * 根据条件查询出来后 在去修改 * <br>------------------------------<br> * @param criteriaUser 查询条件 * @param updateUser 修改的值对象 * @return */User findAndModify(User criteriaUser, User updateUser);/** * 查询出来后 删除 * <br>------------------------------<br> * @param criteriaUser * @return */User findAndRemove(User criteriaUser);/** * count * <br>------------------------------<br> * @param criteriaUser * @return */long count(User criteriaUser);}
mongodb 实体类
package com.wlsq.oauth.entity;import java.io.Serializable;public class User implements Serializable {/** * */private static final long serialVersionUID = -2634064977259616340L;private String id;private String name;private int age;public User() {}public User(String id, String name, int age) {super();this.id = id;this.name = name;this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
7 0
- ssm(spring+springMVC+Mybatis)框架集成Mongodb
- ssm(Spring+SpringMVC+Mybatis)框架集成Apache CXF2.7
- SSM框架集成整合(Spring+SpringMVC+mybatis)
- SSM框架:SpringMVC + Spring + MyBatis
- 最新spring,mybatis,springmvc(SSM)集成
- Spring+SpringMVC+Mybatis框架集成Apache CXF2.7集成 mongodb集成quartz
- ssm(spring+springMVC+Mybatis)框架 集成Quartz(定时任务框架)
- SSM框架集成(一)mybatis+spring
- SSM框架整合( Spring 、 SpringMVC 和 Mybatis )
- SSM框架(Spring SpringMvc Mybatis)流程
- Spring,SpringMVC,Mybatis (SSM)框架的搭建
- SSM框架整合( Spring 、 SpringMVC 和 Mybatis )
- Spring+SpringMVC+MyBatis(SSM)框架整合
- SSM框架搭建(Spring+SpringMVC+MyBatis)
- SSM(Spring+SpringMVC+Mybatis)框架配置例子
- SSM框架整合( Spring 、 SpringMVC 和 Mybatis )
- SSM框架整合(Spring+SpringMVC+MyBatis)
- SSM框架(springmvc+spring+mybatis)整合
- ecshop二次开发各种文档下载
- LaTeX新人教程,30分钟从完全陌生到基本入门
- 膨胀和腐蚀在MATLAB中
- Linux 安装软件备忘录
- ubuntu下Qt cannot find -lGL错误的解决方法
- ssm(spring+springMVC+Mybatis)框架集成Mongodb
- https://github.com/hehonghui/android-tech-frontier
- nanipi iic驱动分析
- 2016武汉科技大学邀请赛现场赛 F题
- innobackupex恢复操作解压备份文件报错一例
- HDU3999-The order of a Tree
- matlab膨胀和腐蚀的案例详解
- WERTYU
- Java数组操作的疑惑(这篇错误,后来才知道是有static修饰的结果)