Também pensei neste artigo, antes de tudo, minhas habilidades não são boas. Mas eu só gosto de estudar algo. Porque muitos amigos escreveram os semelhantes antes disso, e eu já li muitos deles, mas a explicação não é suficientemente aprofundada. Não há resposta para as perguntas levantadas por alguns amigos. Aqui eu resolvo com base nas minhas habilidades atuais. E finalmente correr com sucesso.
Um problema ocorreu durante o teste:
1. Org/Springframework/Data/Mapping/Context/MappingContexTAWee
2. SRC-RESOLVE: Não é possível resolver o nome 'Repositório: Repositório' a uma (n) '' Definição do tipo ''
Todos os itens acima são causados pela incompatibilidade da versão. Especialmente o segundo erro que vi algumas das soluções mencionadas JPA, mas não usei o JPA aqui. Mais tarde, substituí o pacote Spring-Data-Commons e não apareci.
Deixe -me falar primeiro sobre meu ambiente de desenvolvimento:
Myeclipse 6.5
MongoDB 2.0.8
Spring 3.0.4
Finalmente, existem os dois a seguir (se essas duas versões estiverem erradas, é provável que vários problemas complicados e complicados ocorram). Aqui vou dar a versão que usei
documento de dados de primavera
Spring-Data-Commons
Todas as versões devem ser alteradas. A seguir, o endereço de download do jar
http://www.springsource.org/spring-data/mongodb
http://www.springsource.org/spring-data/commons
As versões baixadas são:
Spring-Data-Commons-Dist -.4.0.m1
Spring-Data-Document -.0.0.m2.zip
Aqui estão fotos do meu projeto
Então comece nossa jornada de desenvolvimento!
Primeiro, crie um novo arquivo de configuração Application.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 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"> <Mongo: Mongo host = "192.168.0.138" port = "27017"/> <ids = "mongotemplate"> <construtor-arg ref = "mongato"/> <construtor-arg name = "databasename" value = "db"/> <construtor-arg name = " <bean id = "PersonRepository"> <Propriedade name = "Mongotemplate" Ref = "Mongotemplate"> </Property> </Bean> <Contexto: Anotação-Config/> </ Beans>
Em seguida, escreva a interface que opera o MongoDB
/ ** * abstractrepository.java */ package com.mongo.dao; importar java.util.list; importar com.mongo.bean.person; /** * TODO * @AUTHOR CULAN * @VERSION TODO */Public Interface Abstractrepository {/** * * <b> função: </b> Adicione objeto * @Author Culan * @createdate 2012-12-12 11:41:30 */public void insert (Person); /** * * <b> função: </b> Encontre objeto por id * @author Culan * @createdate 2012-12 11:41:41 */public pessoa findOne (string id); /** * * <b> função: </b> consulta tudo * @Author Culan * @createdate 2012-12-12 16:26:06 */list public <Son Pessoa> findAll (); Lista pública <Pesso> findByRegex (String regex); /** * * <b> Função: </b> Exclua o objeto ID especificado * @Author Culan * @Createdate 2012-12 16:26:16 */public void RemoneOne (string ID); /** * * <b> função: </b> Exclua tudo * @Author Culan * @createdate 2012-12-12 16:25:40 */public void removeall (); /** * Encontre e modifique por id * <b> função: </b> * @Author Culan * @createdate 2012-12 16:25:51 */public void findAndModify (string id); } Escreva a classe de implementação da interface correspondente:
/ ** * PERSONREPOSIITY.JAVA */ PACOTE COM.MONO.DAO.IMPL; importar java.util.list; importar java.util.regex.pattern; importar org.springframework.data.document.mongodb.mongotemplate; importar org.springframework.data.document.mongodb.query.criteria; importar org.springframework.data.document.mongodb.query.update; importar org.springframework.data.document.mongodb.query.update; importar com.mongo.bean.person; importar com.mongo.dao.abstractrepository; / ** * TODO * @Author Culan * @version TODO */ public class Pessorepository implementos abstractrepository {private Mongotemplate mongotemplate; / * (não-Javadoc) * @see com.mongo.dao.abstractrepository#findall () */ @Override list public <sesson> findAll () {// TODO Auto-Generated Method Stub Return getMongotemplate (). Find (new Query (), Person.Class); } / * (não-javadoc) * @see com.mongo.dao.abstractrepository#FindAndModify (java.lang.string) * /@Override public void FindAndModify (string id) {// TODO Auto-Generated Método ///wery (Criteria.whe.whe) {// "ido-generated é (///wery (criteria.wer) {//" ido-generated sTub //wery (Criteria.where.wer) {// "idóia". getMongotemplate (). updateFirst (nova consulta (critério.where ("id"). Is (id)), nova atualização (). Inc ("idade", 3)); } / * (não javadoc) * @see com.mongo.dao.abstractrepository#findbyRegex (java.lang.string) * / @Override list <sesson> findbyRegex (string regex) {// TODO-GENERADO Método Stub Pattern = Pattern.com; Critérios critérios = novos critérios ("nome"). Regex (padrony.toString ()); return getMongotemplate (). encontre (nova consulta (critério), pessoa.class); } / * (não-javadoc) * @see com.mongo.dao.abstractrepository#findOne (java.lang.string) * / @Override Public Pessoa FindOne (string id) {// TODO Método Auto-Generated Return getMongoTemplate (). Find (New Query } / * (não javadoc) * @see com.mongo.dao.abstractrepository#insert (com.mongo.bean.person) * / @Override public void insert (pessoa pessoa) {// TODO Método Auto-Gerado GetMongotemplate (). } / * (não-javadoc) * @see com.mongo.dao.abstractrepository#removeall () * / @Override public void removeall () {// TODO Auto-Generated Stub List <Sesso> list = this.findall (); if (list! = null) {for (pessoa de pessoa: list) {getMongotemplate (). remover (pessoa); }}} / * (não-javadoc) * @see com.mongo.dao.abstractrepository#removeneone (java.lang.string) * / @Override public void Remoneone (string id) {// idóia-generated stob critérios) if (critério == null) {Query Query = new Query (critério); if (query! = null && getMongotemplate (). findOne (consulsão, pessoa.class)! = null) getMongotemplate (). remover (getMongotemplate (). findOne (consulta, pessoa.class)); }} / ** * @RETURN O MONGOTEMPLATE * / public Mongotemplate getMongotemplate () {return Mongotemplate; } / ** * @param mongotemplate o mongotemplate para definir * / public void setMongotemplate (mongotemplate mongotemplate) {this.mongotemplate = mongotemplate; }} O código do objeto de pessoa correspondente também é dado aqui
/ ** * Person.java */ package com.mongo.bean; importar java.io.serializable; / ** * TODO * @Author Culan * @Version TODO */ Public Class Pessoa implementa serializável {/ ** * */ private estático final serialversionUIDuid = 3617931430808763429l; ID de string privado; nome de string privado; private Int Age; public Person () {super (); } Pessoa pública (ID da string, nome da string, Int Age) {super (); this.id = id; this.name = nome; this.age = idade; } / ** * @return the id * / public string getId () {return id; } / ** * @param id o id para definir * / public void setId (string id) {this.id = id; } / ** * @RETURN O nome * / public String getName () {Return Name; } / ** * @param nome o nome para definir * / public void setName (nome da string) {this.name = name; } / ** * @return the Age * / public int getage () {Age de retorno; } / ** * @param idade a idade para definir * / public void setage (int Age) {this.age = Age; } / ** * * Nome @param * @param Age * / Public Pessoa (Nome da String, Int Age) {super (); this.name = nome; this.age = idade; } public string tostring () {return "pessoa [id ="+id+", name ="+name+", idade ="+idade+"]"; }} Finalmente anote nossa aula de teste e comece a testar
/ ** * Mongotest.java */ package com.mongo.test; importar java.util.list; importar org.apache.commons.logging.log; importar org.apache.commons.logging.logfactory; importar org.springframework.context.ApplicationContext; importar org.springframework.context.support.classPathXMLApplicationContext; importar com.mongo.bean.person; importar com.mongo.dao.abstractrepository; importar com.mongo.dao.impl.personRepository; / ** * TODO * @Author Culan * @Version TODO */ public class Mongotest {Log estático privado = logFactory.getLog (Mongotest.class.getName ()); Abstactrepository privado Pr = nulo; /** * * <b> função: </b> * @Author Culan * @createdate 2012-12-12 16:08:02 */public void init () {Log.debug ("Iniciar Iniciar"); ApplicationContext ctx = new ClassPathXMLApplicationContext ("ApplicationContext.xml"); PR = (PersonRepository) ctx.getBean ("PersonRepository"); }/** * * <b> função: </b> Adicionar * @Author Culan * @createdate 2012-12-12 16:11:01 */public void insert () {pessoa p = new Pessoa ("Curian", 27); PR.Insert (P); log.debug ("adicionado com sucesso"); }/** * * <b> função: </b> Pesquise objeto com base no ID de entrada * @author Culan * @createdate 2012-12-12 16:24:10 */public void findOne () {string id = "50C83CB552C2CEB0463177D6"; Pessoa p = pr.findone (id); log.debug (P); }/** * * <b> Função: </b> Query tudo * @author Culan * @createdate 2012-12 16:08:54 */public void listall () {list <Soper> list = pr.findall (); log.debug ("O resultado da consulta é o seguinte:"); para (Pessoa P: List) {Log.Debug (P.ToString ()); }}/** * * <b> função: </b> Método de teste * @Author Culan * @createdate 2012-12-12 16:11:37 */public void start () {init (); //inserir(); // listall (); findOne (); }/** * <b> Função: </b> Função principal * @Author Culan * @createdate 2012-12 11:54:30 */public static void main (string [] args) {// TODO Método Auto-Gerado Stub Mongotest T = novo Mongotest (); t.start (); }}Quando o log aparece após a execução, não há problema.
2012-12 16: 23: 59: Debug com.mongo.test.MONGOTEST-Iniciar 2012-12-12 16: 23: 59: info org.springframework.context.support.classpathxmlapplicationContext-refrescmhing.springFramwork.Context.lapptort.clation.clation.clict.clict.clict.clict.clict.clict.clict.clict.clict.clict.clict.clict.clict.clict.clict.clation.clation 8Teatsinitsmatic.latsinlTeatsinTeration [Qua 12 de dezembro 16:23:59 CST 2012]; root of context hierarchy 2012-12 16:23:59:INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml] 2012-12-12 16:24:00:INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Pré -instantando singletons em org.springframework.beans.factory.support.defaultListableBeanFactory@12A0F6C: Definindo feijão [Mongo, Mongotemplate, PersonRepository, org.springframework.context.annotation.internalconfiguraturationannotationProcessor, org.springframework.context.annotation.internalAutowi RedannotationProcessor, org.springframework.context.annotation.internalrequiredannotationProcessor, org.springframework.context.annotation.internalCommonannotationProcessor]; Raiz da hierarquia de fábrica 2012-12-12 16: 24: 00: Debug com.mongo.test.MONGOTEST-PESSOA [ID = 50C83CB552C2CEB0463177D6, Nome = Cuiran, idade = 27]
Anexe o código -fonte da demonstração aqui: demonstração
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.