MongoDB_CURD------java
闲来无事,搞个基本操作的例子上来分享下。

入门相对简单的CURD操作。采用struts2框架,页面是jsp,jquery。页面相对简单,完成基本操作。
1. 需要导入mongoDB的.jar 文件。
2. 工具类的方法
package service;
import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List;
import org.bson.types.ObjectId;
import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException;
public class QueryDB {
private Mongo mg = null;
private DB db;
private DBCollection users;
public void init() {
try {
mg = new Mongo();
// mg = new Mongo("localhost", 27017);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
} // 获取temp DB;如果默认没有创建,mongodb会自动创建 db = mg.getDB("test"); // 获取users DBCollection;如果默认没有创建,mongodb会自动创建 users = db.getCollection("users");
}
public List queryAll() {
System.out.println("查询所有数据");
List mList = new ArrayList();
DBCursor cur = users.find(); //db.
while (cur.hasNext()) {
//print(cur.next());
mList.add(cur.next());
}
System.out.println("mList.size():"+mList.size()); return mList;
}
public void update (String _id,DBObject user){
print("修改id = 5211c751afd00ac1d2499a88:"+ users.update (new BasicDBObject("_id", new ObjectId(_id)), user).getN());
}
public void remove(String _id){
print("删除id = "+_id+":"+ users.remove(new BasicDBObject("_id", new ObjectId(_id))).getN());
}
public void add(DBObject user){
print(user.get("name")+"\t"+user.get("age")+"\t"+user.get("sex")); print(users.save(user).getN());
}
public void destory() { if (mg != null) mg.close(); mg = null; db = null; users = null; System.gc(); }
public void print(Object o) { System.out.println(o); } }
3.往常一样,写一个再熟悉不过的action。
package action;
import java.util.ArrayList; import java.util.HashMap; import java.util.List;
import org.bson.types.ObjectId;
import service.QueryDB;
import com.mongodb.BasicDBObject; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.opensymphony.xwork2.ActionSupport;
/** * @title :UserListAction * @version V1.0 */
public class UserListAction extends ActionSupport {
private static final long serialVersionUID = 4063690737356735922L;
List<DBObject> MList = new ArrayList<DBObject>();
private String _id;
private String name;
private String age;
private String sex;
//查询列表
public String execute() {
QueryDB qb=new QueryDB();
qb.init();
setMList(qb.queryAll());
System.out.println("action-mList.size:"+MList.size());
for(int i=0;i<MList.size();i++){
System.out.println(MList.get(i));
}
return SUCCESS; }
//更新数据库 public String update(){
QueryDB qb=new QueryDB();
qb.init();
DBObject user = new BasicDBObject();
user.put("name", name);
user.put("age", age);
user.put("sex", sex);
qb.print(_id+"\t"+user);
qb.update(_id, user);
return SUCCESS;
}
public String del(){
QueryDB qb=new QueryDB();
qb.init();
qb.remove(_id);
return SUCCESS; }
public String add(){
QueryDB qb=new QueryDB();
qb.init(); DBObject user = new BasicDBObject();
user.put("name", name);
user.put("age", age);
user.put("sex", sex);
qb.add(user);
return SUCCESS;
}
一大堆的get,set 方法。不写了
配置文件也不多说,直接上代码:
<package name="struts" extends="struts-default" namespace="">
<action name="userList" class="action.UserListAction"> <result>/index.jsp</result> </action> <action name="userUpdate" class="action.UserListAction" method="update"> <result name="success" type="chain">userList</result> </action> <action name="userdel" class="action.UserListAction" method="del"> <result name="success" type="chain">userList</result> </action> <action name="useradd" class="action.UserListAction" method="add"> <result name="success" type="chain">userList</result> </action> </package> </struts>
4.写jsp页面。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <% String path = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link href="./front.css" media="screen, projection" rel="stylesheet" type="text/css">
<script type="text/javascript" src="./js/jquery-1.3.2.min.js"></script>
</head>
<body>
<div> <span>name:<input type="text" id="a_name"></span>
<span>sex:<input type="text" id="a_sex"></span>
<span>age:<input type="text" id="a_age"></span>
<span><input type="button" id="add" value="ADD" onclick="addRow();"></span> </div>
<fieldset id="signin_menu">
<form method="post" id="signin" action="./userUpdate.do">
<label >_id</label> <input id="_id" name="_id" value="" title="_id" tabindex="4" type="text"> </p> <p>
<label >name</label> <input id="name" name="name" value="" title="name" tabindex="5" type="text"> </p> <p>
<label >sex</label> <input id="sex" name="sex" value="" title="sex" tabindex="5" type="text"> </p> <p>
<label >age</label> <input id="age" name="age" value="" title="age" tabindex="5" type="text"> </p>
<p class="remember"> <input id="signin_submit" value="提交" tabindex="6" type="submit"> <input id="signin_close" value="close" tabindex="6" type="button" > </p>
</form>
</fieldset>
<table border="1" align="center" width="500" style="border-collapse:collapse;">
<tr align="center"> <td>_id</td> <td>name</td> <td>age</td> <td>sex</td> <td>操作</td> </tr>
----------------------------MongoDB-CURD操作--------------------------------------
<s:iterator id="li" value="MList">
<tr align="center"> <td ><s:property value="_id"/></td> <td><s:property value="name"/></td> <td><s:property value="age"/></td> <td><s:property value="sex"/></td> <td> <div id="topnav" >
<a href="javascript:updateF('<s:property value="_id"/>','<s:property value="name"/>','<s:property value="age"/>','<s:property value="sex"/>')" id="signin" title="修改">
<span >UPDATE</span></a>
<a href="#" title="删除" onclick="delRow('<s:property value="_id"/>')"><span>DELETE</span></a> </div> </td> </tr>
</s:iterator> </table> <script>
function updateF(_id,name,age,sex){
//alert(_id+"\t"+name+"\t"+age+"\t"+sex);
$('#_id').val(_id);
$('#name').val(name);
$('#age').val(age);
$('#sex').val(sex);
$("fieldset#signin_menu").toggle();
$("#signin").toggleClass("menu-open"); }
function delRow(id){
$.ajax({
url:'<%=path%>/userdel.action',
type: "post",
data:{_id:id},
success:function(r){
//alert(r);
location.reload(); }
});
}
function addRow(){
var a_name=$('#a_name').val();
var a_age=$('#a_age').val();
var a_sex=$('#a_sex').val();
$.ajax({
url:'<%=path%>/useradd.action',
type: "post",
data:{name:a_name,age:a_age,sex:a_sex},
success:function(r){
//alert(r);
$('#a_name').val("");
$('#a_age').val("");
$('#a_sex').val("");
location.reload(); }
});
}
$(document).ready(function() {
$("fieldset#signin_menu").mouseup(function() {
return false });
$("#signin_close").click(function(e) {
if($(e.target).parent("a.signin").length==0) {
$(".signin").removeClass("menu-open");
$("fieldset#signin_menu").hide();
}
});
});
</script>
<script src="javascripts/jquery.tipsy.js" type="text/javascript"></script>
<script type='text/javascript'>
$(function() {
$('#forgot_username_link').tipsy({gravity: 'w'});
});
</script>
</body>
</html>
jquery.tipsy.js
(function($) { $.fn.tipsy = function(opts) {
opts = $.extend({fade: false, gravity: 'n'}, opts || {}); var tip = null, cancelHide = false;
this.hover(function() { $.data(this, 'cancel.tipsy', true);
var tip = $.data(this, 'active.tipsy'); if (!tip) { tip = $('<div class="tipsy"><div class="tipsy-inner">' + $(this).attr('title') + '</div></div>'); tip.css({position: 'absolute', zIndex: 100000}); $(this).attr('title', ''); $.data(this, 'active.tipsy', tip); } var pos = $.extend({}, $(this).offset(), {width: this.offsetWidth, height: this.offsetHeight}); tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body); var actualWidth = tip[0].offsetWidth, actualHeight = tip[0].offsetHeight; switch (opts.gravity.charAt(0)) { case 'n': tip.css({top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-north'); break; case 's': tip.css({top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-south'); break; case 'e': tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}).addClass('tipsy-east'); break; case 'w': tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}).addClass('tipsy-west'); break; }
if (opts.fade) { tip.css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: 1}); } else { tip.css({visibility: 'visible'}); }
}, function() { $.data(this, 'cancel.tipsy', false); var self = this; setTimeout(function() { if ($.data(this, 'cancel.tipsy')) return; var tip = $.data(self, 'active.tipsy'); if (opts.fade) { tip.stop().fadeOut(function() { $(this).remove(); }); } else { tip.remove(); } }, 100); });
}; })(jQuery);
front.css
a { color: #1E608E; text-decoration:none; outline: none; }
.tipsy { opacity:.8; filter:alpha(opacity=80); background-repeat:no-repeat; padding:5px; } .tipsy-inner { padding:8px 8px; max-width:200px; font:11px 'Lucida Grande', sans-serif; font-weight:bold; -moz-border-radius:4px; -khtml-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; background-color:#000; color:white; text-align:left; } .tipsy-north { background-image:url(http://s.twimg.com/a/1249943174/images/tipsy/tipsy-north.gif); background-position:top center; } .tipsy-south { background-image:url(http://s.twimg.com/a/1249943174/images/tipsy/tipsy-south.gif); background-position:bottom center; } .tipsy-east { background-image:url(http://s.twimg.com/a/1249943174/images/tipsy/tipsy-east.gif); background-position:right center; } .tipsy-west { background-image:url(http://s.twimg.com/a/1249943174/images/tipsy/tipsy-west.gif); background-position:left center; } body { margin:0; padding:0; font:13px/16px "Lucida Grande", Arial, Sans-serif; color:#789; background-color: #ddeef6; background-image: url(http://s.twimg.com/a/1249943174/images/front-bg.gif); background-repeat: repeat; } #container { width:780px; margin:0 auto; }
#content { width:520px; min-height:500px; } a:link, a:visited { color:#27b; text-decoration:none; } a:hover { text-decoration:underline; } a img { border-width:0; } #topnav { padding:10px 25px 12px; font-size:11px; line-height:23px; text-align:right; } #topnav a.signin { background:#88bbd4; padding:4px 6px 6px; text-decoration:none; font-weight:bold; color:#fff; -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px; *background:transparent url("http://s.twimg.com/a/1249943174/images/signin-nav-bg-ie.png") no-repeat 0 0; *padding:4px 12px 6px; } #topnav a.signin:hover { background:#59B; *background:transparent url("http://s.twimg.com/a/1249943174/images/signin-nav-bg-hover-ie.png") no-repeat 0 0; *padding:4px 12px 6px; } #topnav a.signin, #topnav a.signin:hover { *background-position:0 3px!important; }
a.signin { position:relative; margin-left:3px; } a.signin span { background-image:url("http://s.twimg.com/a/1249943174/images/toggle_down_light.png"); background-repeat:no-repeat; background-position:100% 50%; padding:4px 16px 6px 0; } #topnav a.menu-open { background:#ddeef6!important; color:#666!important; outline:none; } #small_signup { display:inline; float:none; line-height:23px; margin:25px 0 0; width:170px; } a.signin.menu-open span { background-image:url("http://s.twimg.com/a/1249943174/images/toggle_up_dark.png"); color:#789; }
#signin_menu { -moz-border-radius-topleft:5px; -moz-border-radius-bottomleft:5px; -moz-border-radius-bottomright:5px; -webkit-border-top-left-radius:5px; -webkit-border-bottom-left-radius:5px; -webkit-border-bottom-right-radius:5px; display:none; background-color:#ddeef6; position:absolute; width:210px; z-index:100; border:1px transparent; text-align:left; padding:10px; margin-left:-8px; *margin-left:-15px; margin-top:5px; color:#789; font-size:11px; }
#signin_menu input[type=text], #signin_menu input[type=password] { display:block; -moz-border-radius:4px; -webkit-border-radius:4px; border:1px solid #ACE; font-size:13px; margin:0 0 5px; padding:5px; width:203px; } #signin_menu p { margin:0; } #signin_menu a { color:#6AC; } #signin_menu label { font-weight:normal; } #signin_menu p.remember { padding:10px 0; } #signin_menu p.forgot, #signin_menu p.complete { clear:both; margin:5px 0; } #signin_menu p a { color:#27B!important; } #signin_submit { -moz-border-radius:4px; -webkit-border-radius:4px; background:#39d url('http://s.twimg.com/a/1249943174/images/bg-btn-blue.png') repeat-x scroll 0 0; border:1px solid #39D; color:#fff; text-shadow:0 -1px 0 #39d; padding:4px 10px 5px; font-size:11px; margin:0 5px 0 0; font-weight:bold; } #signin_submit::-moz-focus-inner { padding:0; border:0; } #signin_submit:hover, #signin_submit:focus { background-position:0 -5px; cursor:pointer; }
.tipsy-inner { padding:10px 15px; line-height:1.5em; font-weight:bold; } .ie6 .tipsy { width:250px; } .signup-tip { line-height:18px; margin:30px 0; color:#333; } .signup-tip a { font-weight:bold; } }
这张是背景图
代码 copy 直接可用。qq:1257325678.可直接要代码。

浙公网安备 33010602011771号