此篇写的是MongoDB数据库在JAVA程序中的基本功能,这是一篇多年前写的手记,因此采用的技术比较老(采用的是MyEclipse和Jar包的方式),虽然现有的技术已经更新换代,但操作原理基本相同,maven跟Jar也没多少区别,Spring的XML与注解意思也一样,此篇传送的是一种思想,代码只作参考,
使用MyEclipse对MongoDB数据库进行增删改查操作
1.导入JAR包
使用了Spring3.0;此类包,可以上网查询“MongoDB相关JAR包”
2.创建一个Person实体类
源代码如下:
public class Person(){ //属性 Private String id; //id Private String name; //name Private int age; //age //构造方法 public Person(){ } public Person(String name,int age){ this.name = name; this.age = age; } public Person(String id,String name,int age){ this.id = id; this.name = name; this.age = age; } public String toString(){ return “Person[ id = ”+id+“name=”+name+“age=”+age +”]”; } /**以下为属性的get/set方法**/ ................................. } /**以上代码中一共有三个构造方法,用于传递参数数据**/
3.创建一个方法接口
1. 创建一个名为AbstractRepository 的接口,源代码如下:
public interface AbstractRepository(){ //增加方法 public void insert(Person person); //按ID查询对象 public Person findOne(String id); //查询所有 public List<Person> findAll(); //按ID删除 public void removeOne(String id); //删除所有 public void removeAll(); //查询并修改 public void findAndModfy(String id); }
4.接口方法实现类
1.创建一个名为PersonRepository的类并现实AbstractRepository 接口
源代码如下:
public class PersonRepository implements AbstractRepository{ Private MongoTemplate mongoTemplate; /**mongoTemplate的get/set方法**/ public MongoTemplate getMongoTemplate(){ return mongoTemplate; } public void setMongoTemplate(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; } //查询所有 public List<Person> findAll(){ return getMongoTemplate().find(new Query, Person.class); } //查询修改 public void findAndModify(){ getMongoTemplate().updateFirst(new Query(Criteria.where(“id”)).is(id) , new Update().inc(“age” , 3)); } //按条件查询 public List<Person> findAll(){ Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE); Criteria criteria = new Criteria(“name”).regex(pattern.toString()); return getMongoTemplate().find(new Query(criteria), Person.class) } //按ID查询对象 public Person findOne(String id){ return getMongoTemplate().findOne(new Query(Criteria.where(“id”).is(id), Person.class)); } //增加 public void insert(Person person){ getMongoTemplate().insert(person); } //删除所有 public void removeAll(){ List<Person>list = this.finAll(); If(list != null){ for(Person person:list){ getMongoTemplate().remove(person) } } } //按ID删除 public void removeOne(String id){ Criteria criteria = Criteria.where(“id”).in(id); if(criteria != null){ Query query = new Query(criteria); if(query != null && getMongoTemplate().findOne(query,Person.class)){ getMongoTemplate().remoev(getMongoTemplate().findOne(query, Person.class)); } } } }
5.配置ApplicationContext.xml
我们使用了Spring,自然要配置ApplicationContext;因为各版本不同,所以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/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">
<!--以下为Spring配置-->
<!--设置MongoDB的连接端口-->
<mongo:mongo host="localhost" port="27017"></mongo:mongo>
<bean
id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemplate">
<constructor-arg ref="mongo"/>
<constructor-arg name="databaseName" value="db"/>
<constructor-arg name="defaultCollectionName" value="person"/ >
</bean>
<!--配置bean,把PersonReposiory的实现类注入-->
<bean
id="personRepository" class="com.mongo.repository.PersonRepository">
<property name="mongoTemplate" ref="mongoTemplate"/>
</bean>
</beans>
ApplicationContext.xml代码如图,虽然左上角出现红X的错误提示。提示的
信息大概是有重复的注释。不用去管他,只要代码里面没有红线就好。
6.写测试类进行测试
创建一个有mian方法的测试类Test:部分方法的源代码如下:
public class Test{ private static log log = logFactory.getlog(Test.class.getName()); private AbstractRepository pr = null; //初始方法 public void init(){ log.debug(“开始启动”); ApplicationContext ac = new ClassPathXmlApplicationContext( “applicationContext.xml”); pr = (PersonRepository) ac.getbean(“personRepository”); } //添加方法 public void insert(){ Person p = new Person(“id1”,“cuiran”,27); pr.insert(p); log.debug(“添加成功!”); } //按ID查询对象 public void finOne(){ String id = “id1”; Person p = pr.findOne(id); log.debug(p); } } //查询所有 public void findAll(){ List<Person> list = pr.findAll(); log.debug(“查询结果:”); for(Person p:list){ log.debug(p.toString); } } //测试方法 public void start(){ init(); //执行初始化 insert(); //执行添加方法 } //mian方法 public static void main(String args []){ Text text = new Text(); test.start(); }