Java连接MongoDB进行增删改查
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java连接MongoDB进行增删改查,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含19532字,纯文字阅读大概需要28分钟。
内容图文

1.导入必须的包:
详情看项目:http://pan.baidu.com/s/1cvDAOY
2.通过Myeclipse创建WEB项目
3.
3.bean:创建实体类
package com.bean; import java.io.Serializable; import java.util.Date; /** * @since 对应于mongodb中的数据库test中的表com * @author think * */ public class Company implements Serializable { privatestaticfinallong serialVersionUID = 4379611409753357157L; private String id; private String companyName; private String url; private String ip; private Date createTime; private Date updateTime; public Company() { } public Company(String id, String companyName, String url, String ip, Date createTime, Date updateTime) { super(); this.id = id; this.companyName = companyName; this.url = url; this.ip = ip; this.createTime = createTime; this.updateTime = updateTime; } public String getId() { return id; } publicvoid setId(String id) { this.id = id; } public String getCompanyName() { return companyName; } publicvoid setCompanyName(String companyName) { this.companyName = companyName; } public String getUrl() { return url; } publicvoid setUrl(String url) { this.url = url; } public String getIp() { return ip; } publicvoid setIp(String ip) { this.ip = ip; } public Date getCreateTime() { return createTime; } publicvoid setCreateTime(Date createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } publicvoid setUpdateTime(Date updateTime) { this.updateTime = updateTime; } publicstaticlong getSerialversionuid() { return serialVersionUID; } }
4.创建工具类,主要是获取本机的ip地址
package com.common; import javax.servlet.http.HttpServletRequest; public class Util { public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || "".equals(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || "".equals(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || "".equals(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } }
5.创建:控制器类(通过控制器来执行不同的操作)
package com.controller; import java.util.Date; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.bean.Company; import com.service.ICompany; @Controller @RequestMapping("/company") publicclass CompanyController { privatestatic Log log = LogFactory.getLog(CompanyController.class .getName()); @Autowired private ICompany icompany; // 查询所有公司 @RequestMapping("/companys") public ModelAndView companys() { List<Company> list = icompany.findCompanys(); ModelAndView mdl = new ModelAndView(); mdl.setViewName("/companys"); mdl.addObject("user", list); return mdl; } //更新 @RequestMapping("/toUpdateCompany") public ModelAndView toUpdateCompany(@RequestParam("id")String id){ ModelAndView mdl=new ModelAndView(); mdl.setViewName("/company_update"); Company company=icompany.findCompany(id); mdl.addObject("company", company); return mdl; } //更新保存 @RequestMapping("/updateCompany") public String update(@ModelAttribute Company company){ try { company.setUpdateTime(new Date()); icompany.updateCompany(company); } catch (Exception e) { log.error(e); } return companyList(); } private String companyList() { return "redirect:/company/companys.action"; } //删除 @RequestMapping("/delCompany") public String delCompany(@RequestParam("id") String id){ icompany.delCompany(id); return companyList(); } //增加 @RequestMapping("/toAddCompany") public ModelAndView addCompany(){ return returnUrl("/company_add"); } private ModelAndView returnUrl(String url) { ModelAndView mav = new ModelAndView(); mav.setViewName(url); return mav; } //增加到数据库 @RequestMapping("/addCompany") public String add(@ModelAttribute Company company){ company.setCreateTime(new Date()); company.setUpdateTime(new Date()); icompany.addCompany(company); return companyList(); } }
(登陆验证,在实际过程中要在数据库中匹配验证)
package com.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.sun.org.apache.commons.logging.Log; import com.sun.org.apache.commons.logging.LogFactory; @Controller @RequestMapping("/sys") publicclass SysController { privatestatic Log log = LogFactory.getLog(SysController.class.getName()); @RequestMapping("/login") public String Login(@RequestParam("userName") String userName,@RequestParam("userPwd") String userPwd) { try { if ("admin".equals(userName) && "123456".equals(userPwd)) { return "redirect:/company/companys.action"; } } catch (Exception e) { log.error(e); } return "redirect:/index.jsp"; } @RequestMapping("/welcome") public String welcome() { return "redirect:/index.jsp"; } }
6.创建数据库的连接,进行增删改查
(分别为接口和实现类)
package com.dao; 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.stereotype.Repository; import com.bean.Company; @Repository public class RepositoryImpl implements AbstractRepository { @Autowired private MongoTemplate mongoTemplate; // 查询所有数据public List<?> findAll(Class<?> entity) { return mongoTemplate.findAll(entity); } // 更新数据public Company findOne(String id, Class<?> entity) { return (Company) mongoTemplate.findOne(new Query(Criteria.where("id") .is(id)), entity); } // 添加到数据库publicvoid updateEntity(Company company) { mongoTemplate.save(company); } // 删除选中的数据publicvoid delete(String id, Class<Company> class1) { Criteria criteria = Criteria.where("id").in(id); if (criteria != null) { Query query = new Query(criteria); if (query != null && mongoTemplate.findOne(query, class1) != null) mongoTemplate.remove(mongoTemplate.findOne(query, class1)); } } //增加到数据库publicvoid insert(Company company) { mongoTemplate.insert(company); } }
package com.dao; import java.util.List; import com.bean.Company; public interface AbstractRepository { public List<?> findAll(Class<?> entity); public Company findOne(String id,Class<?> entity); publicvoid updateEntity(Company company); publicvoid delete(String id, Class<Company> class1); publicvoid insert(Company company); }
7.创建service类,对业务进行处理
package com.service; import java.util.List; import com.bean.Company; public interface ICompany { /** * 查询所有公司 */ public List<Company> findCompanys(); /** * 更新数据 * @param id * @return*/public Company findCompany(String id); //更新到数据库publicvoid updateCompany(Company company); //删除选中的数据publicvoid delCompany(String id); //增加publicvoid addCompany(Company company); }
package com.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bean.Company; import com.dao.AbstractRepository; @Service public class CompanyImpl implements ICompany { @Autowired private AbstractRepository dao; public List<Company> findCompanys() { List<Company> list=(List<Company>) dao.findAll(Company.class); return list; } //更新数据public Company findCompany(String id) { return dao.findOne(id, Company.class); } publicvoid updateCompany(Company company) { dao.updateEntity(company); } //删除选中的数据publicvoid delCompany(String id) { dao.delete(id,Company.class); } //增加到数据哭publicvoid addCompany(Company company) { dao.insert(company); } }
8.配置对应的配置文件(applicationContext.xml--spring配置(依赖注入),dispatcher-servlet.xml(mongodb数据库的配置))
<? 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.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" > < context:property-placeholder location ="classpath:mongodb.properties" /> <!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 --> < mongo:mongo id ="mongo" replica-set ="127.0.0.1:27017" > < mongo:options connections-per-host ="${mongo.connectionsPerHost}" threads-allowed-to-block-for-connection-multiplier ="${mongo.threadsAllowedToBlockForConnectionMultiplier}" connect-timeout ="${mongo.connectTimeout}" max-wait-time ="${mongo.maxWaitTime}" auto-connect-retry ="${mongo.autoConnectRetry}" socket-keep-alive ="${mongo.socketKeepAlive}" socket-timeout ="${mongo.socketTimeout}" write-number ="1" write-timeout ="0" write-fsync ="true" /> <!-- <mongo:options connections-per-host="${mongo.connectionsPerHost}" 每个主机答应的连接数(每个主机的连接池大小),当连接池被用光时,会被阻塞住 ,默以为10 threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" connect-timeout="${mongo.connectTimeout}" 在建立(打开)套接字连接时的超时时间(ms) max-wait-time="${mongo.maxWaitTime}" 被阻塞线程从连接池获取连接的最长等待时间 auto-connect-retry="${mongo.autoConnectRetry}" 控制系统在发生连接错误时是否重试 ,默以为false boolean socket-keep-alive="${mongo.socketKeepAlive}" 这个控制是打开(SO_KEEPALIVE)。默认值为false,布尔 socket-timeout="${mongo.socketTimeout}" #套接字超时时间;该值会被传递给Socket.setSoTimeout(int)。默以为0(无穷) write-number="1" write-timeout="0" safe="false" #假如为true,驱动每次update后会发出一个getLastError命令来保证成功,默以为false write-fsync="true"/> --> </ mongo:mongo > <!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 --> < mongo:db-factory dbname ="test" mongo-ref ="mongo" /> <!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 --> < bean id ="mongoTemplate" class ="org.springframework.data.mongodb.core.MongoTemplate" > < constructor-arg name ="mongoDbFactory" ref ="mongoDbFactory" ></ constructor-arg > </ bean > </ beans >
<? 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:mvc ="http://www.springframework.org/schema/mvc" xmlns:p ="http://www.springframework.org/schema/p" xmlns:context ="http://www.springframework.org/schema/context" xmlns:aop ="http://www.springframework.org/schema/aop" xmlns:tx ="http://www.springframework.org/schema/tx" 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/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" > <!-- 使Spring支持自动检测组件,如注解的Controller --> < mvc:annotation-driven /> < context:annotation-config /> < context:component-scan base-package ="com" /> <!-- 视频解析 --> < bean class ="org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name ="prefix" value ="/" /> < property name ="suffix" value =".jsp" /> < property name ="viewClass" value ="org.springframework.web.servlet.view.JstlView" ></ property > </ bean > </ beans >
9.log4j与数据库参数的配置
log4j.rootLogger=INFO,CONSOLE log4j.category.com=DEBUG,messageWEB log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS}[%C]-[%p] %m%n log4j.appender.messageWEB=org.apache.log4j.DailyRollingFileAppender log4j.appender.messageWEB.File=F\:\\logsdaily_rolling.log log4j.appender.messageWEB.DatePattern=.yyyy-MM-dd log4j.appender.messageWEB.layout=org.apache.log4j.PatternLayout log4j.appender.messageWEB.layout.ConversionParttern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%n log4j.appender.messageWEB.Encoding=UTF-8
mongo.connectionsPerHost=4 mongo.threadsAllowedToBlockForConnectionMultiplier=20 mongo.connectTimeout=0 mongo.maxWaitTime=10000 mongo.autoConnectRetry=true mongo.socketKeepAlive=true mongo.socketTimeout=0
10---前端展示--jsp文件
company_add.jsp
< %@ page language ="java" import ="java.util.*" pageEncoding ="UTF-8" % > < % String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; % > <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > < html > < head > < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" > < title >客户验证平台</title></head><body><p align="left"><font size="7">客户添加</font></p><form action="<%=path%>/company/addCompany.action" method="post"><p>客户名称:<input type="text" name="companyName" value=""/></p><p>客户网址:<input type="text" name="url" value=""/></p><p>客户ip:<input type="text" name="ip" value=""/></p><p><input type="submit" value="保存"/></p></form></body></html>
company_update.jsp
< %@ page language ="java" import ="java.util.*" pageEncoding ="UTF-8" % > < % String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; % > <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > < html > < head > < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" > < title >客户验证平台</title></head><body><p align="left"><font size="7">客户修改</font></p><form action="<%=path%>/company/updateCompany.action" method="post"><input type="hidden" name="id" value="${company.id}"/><input type="hidden" name="createTime" value="${company.createTime}"/><p>客户名称:<input type="text" name="companyName" value="${company.companyName}"/></p><p>客户网址:<input type="text" name="url" value="${company.url}"/></p><p>客户ip:<input type="text" name="ip" value="${company.ip}"/></p><p><input type="submit" value="保存"/></p></form></body></html>
companys.jsp
< %@taglib prefix ="c" uri ="http://java.sun.com/jsp/jstl/core" % > < %@ taglib uri ="http://java.sun.com/jsp/jstl/fmt" prefix ="fmt" % > < %@ page language ="java" contentType ="text/html; charset=utf-8" pageEncoding ="utf-8" % > < % String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; % > <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > < html > < head > < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" > < title >客户验证平台</title></head><body><p align="left"><font size="7">客户列表</font></p><table border="1"><tr><td>id</td><td>客户名称</td><td>客户网址</td><td>客户ip</td><td>创建时间</td><td>最后修改时间</td><td>操作</td></tr><c:forEach items="${user}" var="user"><tr><td>${user.id}</td><td>${user.companyName }</td><td>${user.url }</td><td>${user.ip }</td><td><fmt:formatDate value="${user.createTime}"></fmt:formatDate></td><td><fmt:formatDate value="${user.updateTime }"/></td><td><a href="<%=path%>/company/toUpdateCompany.action?id=${user.id}">修改</a><a href="<%=path%>/company/delCompany.action?id=${user.id}">删除</a><a href="<%=path%>/company/toAddCompany.action">添加</a></td></tr></c:forEach></table></body></html>
index.jsp
< %@ page language ="java" import ="java.util.*" pageEncoding ="UTF-8" % > < % String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; % > <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > < html > < head > < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" > < title >客户验证平台</title></head><body><p align="center"><font size="7">客户验证平台</font></p><form action="<%=path%>/sys/login.action" method="post"><p align="center"> 用户名: <input type="text" name="userName"/> 密码: <input type="password" name="userPwd"/><input type="submit" value="登录"/></p></form></body></html>
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 > < welcome-file-list > < welcome-file >index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><description>加载目录下的所有XML作为Spring MVC的配置文件</description><param-name>contextConfigLocation</param-name><param-value>classpath:dispatcher-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping><!-- WEB项目中的上下文 --><context-param><description></description><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><listener><description>监听器</description><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><error-page><error-code>404</error-code><location>/404.html</location></error-page></web-app>
---404.html错误页面
< html > < head > < style type ="text/css" > h2{ color: red; } </ style > </ head > < body > < h2 > 错误了!!! </ h2 > </ body > </ html >
总结:与关系型数据库的连接一样,没有什么区别。
原文:http://www.cnblogs.com/lwy19998273333/p/5793141.html
内容总结
以上是互联网集市为您收集整理的Java连接MongoDB进行增删改查全部内容,希望文章能够帮你解决Java连接MongoDB进行增删改查所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。