Spring整合MongoDB

來源:互聯網
上載者:User

Spring整合MongoDB
開篇

Spring提供了對非關聯式資料庫的整合,Spring的spring-data包提供了對mongoDB和redis整合的工具包。此篇部落格介紹一下Spring和MongoDB的整合。
匯入工具包
需要的工具包有spring的jar包、spring-common的jar包以及spring-data的mongoDB的jar包。其中,spring的jar包有aop、asm、aspects、beans、context、core、expression、jdbc、transaction等。spring-common的jar包有commons-beanutils、commons-codec、commons-collections、commons-io、commons-lang、commons-logging、commons-pool等。spring-data的mongoDB的jar包有spring-data-commons-aspects、spring-data-commons-core、spring-data-document-core、spring-data-mongodb、spring-data-mongodb-cross-store、spring-data-mongodb-log4j等。另外還有一個是mongo.jar
工具包

設定檔
                                                                                               
代碼編寫

實體類:

public class Person implements Serializable {    /**     *      */    private static final long serialVersionUID = 3617931430808763429L;    private String id;       private String name;       private int age;    public Person() {        super();    }    public Person(String id, String name, int age) {        super();        this.id = id;        this.name = name;        this.age = age;    }    /**     * @return the id     */    public String getId() {        return id;    }    /**     * @param id the id to set     */    public void setId(String id) {        this.id = id;    }    /**     * @return the name     */    public String getName() {        return name;    }    /**     * @param name the name to set     */    public void setName(String name) {        this.name = name;    }    /**     * @return the age     */    public int getAge() {        return age;    }    /**     * @param age the age to set     */    public void setAge(int age) {        this.age = age;    }    /**     *      * @param name     * @param age     */    public Person(String name, int age) {        super();        this.name = name;        this.age = age;    }        public String toString() {               return Person[id=+id+,name=+name+,age=+age+];           }   }

DAO層介面

public interface AbstractRepository {    public void insert(Person person);     public Person findOne(String id);       public List findAll();       public List findByRegex(String regex);    public void removeOne(String id);       public void removeAll();       public void findAndModify(String id);   }

DAO層介面實現

public class PersonRepository implements AbstractRepository {      private MongoTemplate mongoTemplate;       @Override    public List findAll() {        return getMongoTemplate().find(new Query(), Person.class);       }    @Override    public void findAndModify(String id) {        getMongoTemplate().updateFirst(new Query(Criteria.where(id).is(id)), new Update().inc(age, 3));    }    @Override    public List findByRegex(String regex) {         Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);             Criteria criteria = new Criteria(name).regex(pattern.toString());               return getMongoTemplate().find(new Query(criteria), Person.class);       }    @Override    public Person findOne(String id) {         return getMongoTemplate().findOne(new Query(Criteria.where(id).is(id)), Person.class);       }    @Override    public void insert(Person person) {        getMongoTemplate().insert(person);       }    @Override    public void removeAll() {        List list = this.findAll();           if(list != null){               for(Person person : list){                   getMongoTemplate().remove(person);               }           }       }    @Override    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) != null)                    getMongoTemplate().remove(getMongoTemplate().findOne(query, Person.class));           }       }    /**     * @return the mongoTemplate     */    public MongoTemplate getMongoTemplate() {        return mongoTemplate;    }    /**     * @param mongoTemplate the mongoTemplate to set     */    public void setMongoTemplate(MongoTemplate mongoTemplate) {        this.mongoTemplate = mongoTemplate;    }}測試程式public class MongoTest {    private static Log log = LogFactory.getLog(MongoTest.class.getName());    private  AbstractRepository pr=null;    public void init(){         ApplicationContext ctx = new ClassPathXmlApplicationContext(applicationContext.xml);          pr= (PersonRepository)ctx.getBean(personRepository);    }    public void insert(){        Person p=new Person(cuiran,27);         pr.insert(p);    }    public void findOne(){        String id=50c83cb552c2ceb0463177d6;        Person p= pr.findOne(id);        log.debug(p);    }    public void listAll(){        List list=pr.findAll();        for (Person p:list){            log.debug(p.toString());        }    }    public void start(){        init();        //insert();        //listAll();        findOne();    }    public static void main(String[] args) {        MongoTest t=new MongoTest();        t.start();    }}
結束
通過Spring整合MongoDB的底層代碼封裝,項目中用到非關係型資料MongoDB儲存就變得容易很多。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.