Hay un artículo en el registro anterior de que sin usar Spring, se conecta y opera directamente la base de datos MongoDB en el código Java. Aquí registraremos que cuando use Spring, operación simple de MongoDB en Java.
Configuración del paquete maven:
Debido a que involucra Spring y SpringMVC, también es necesario importar sus paquetes relacionados:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/maven-v4_0_0.xsd "> <modelVersion> 4.0.0 </modelversion> <MoupRupid> Spring_Mongo </Groupid> <AtifactId> Spring_Mongo </ArtifactId> <Altaging> War </packaging> <Versión> WebApp </name> <URL> http://maven.apache.org </url> <pendencies> <pendency> <uproupid> org.springframework.data </groupid> <arifactid> spring-data-mongodb </artifactid> <lote> 1.8.0.lelease </versever> </dependency> <pendency> <MoupRid> org.mongoDB </proupid> <artifactid> Mongo-Java-Driver </artifactid> <versión> 3.0.3 </versión> </pendency> <epardency> <moupid> commons-logging </proupid> <artifactid> commons-logging </artifactid> <veress> 1.2 </lipeion> <//groupid> dependente> <MoupRid> org.springframework </proupid> <artifactid> test test </artifactid> <versión> 4.1.6.release </versión> </pendency> <pendency> <grupoD> junit </proupid> <artifactid> junit </artifactid> <versión> 4.11 </versewerhip> </pendency> <pendency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.0.9.RELEASE</version> </dependency> </pendency> <struct> <glugins> <glugin> <artifactid> maven-compiler-plugin </arfactid> <versewers> 2.3.2 </versewere> <nentugument> <overeur> 1.7 </source> <arget> 1.7 </target> <coding> utf-8 </coding> <practiLerarGuments> <Verbose />> <bootclasspath> $ {java.home} /lib/rt.jar; $ {java.home} /lib/jce.jar </ bootclasspath> </paspilerargarguments> </figuration> </plugin> </glugins> <finalname> spring_mongo </ finalName> </build> </proyecto> Configuración básica de Spring:
Principalmente, es para habilitar el escaneo de anotaciones, etc.:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns: tarea = "http://www.springframework.org/schema/task" xmlns = "http://www.springframework.org/schema/Beanss" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://wwww.springframwork.org /schema/sbanschem http://www.springframework.org/schema/Beans/Spring-Beans-3.0.xsd http://www.springframework.org/schema/ContextExt http://wwww.springframe..Org/schema/contextextextextext-3.0.0.xsdddworkWorkwWork http://www.springframework.org/schema/task http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-phask-3.1.xsd "> <!-Automatic Scan (auto-inyección) Base-Package = "Spring_mogo.dao.daoimp" /> <!-Importar el archivo de configuración de MongoDB-> <importe resource = "Spring-MongoDB305.xml" /> <!-Activar anotación-> <context: annotation-config /> < /beachs>
Spring conecta MongoDB y establece configuraciones para fábricas relacionadas:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xmlns: p = "http://www.springframework.org/schema/p" xmlns: mongo = "http://www.springframework.org/schema/data/mongo" xsi: schemalocation = "http://wwww.springframework.org/schem http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/springd " < <Mongo: db-Factory id = "MongoDbFactory" dbname = "MongoTest" Mongo-ref = "Mongo" /> <!-Simplemente use esto para llamar al método correspondiente-> <bean id = "MongoTemplate "> <Ronstructor-Arg name =" MongoDbFactory "Ref =" MongoDBFactory " /> </ /> < / /< / /</ /> < /beay> < /bean>
La clase de entidad correspondiente a la base de datos:
Cabe señalar que la interfaz serializada debe implementarse y se establece el atributo UID, de lo contrario, el resultado de retorno de la base de datos no puede convertirse directamente en atributos del objeto durante la operación:
Paquete Spring_Mongo.Models; import java.io.serializable; La clase pública usermodel implementa serializable {private static final long serialversionUid = 1l; nombre de usuario de cadena privada; contraseña de cadena privada; public usermodel (String UserName, String Password) {super (); this.Username = UserName; this.password = contraseña; } public String getUsername () {return UserName; } public void setUsername (String UserName) {this.Username = username; } public String getPassword () {return Password; } public void setPassword (String Password) {this.password = contraseña; }} Obtenga MongoTemplete que opera MongoDB de acuerdo con la configuración de Spring, y debe implementar la interfaz ApplicationContextAware:
paquete spring_mogo.dao.daoimp; importar org.springframework.beans.beansexception; importar org.springframework.context.applicationContext; importar org.springframework.context.applicationContextAware; importar org.springframework.data.mongodb.core.mongoTemplate; Public Abstract Class AbstractBasemongotemplete implementa Aplicación AplicaciónContextAware {MongoTemplate protegido MongoTemplate; / ** * @Description Set MongoTemplate de acuerdo con el archivo de configuración * @param MongoTemplate */ public void setMongoTemplate (MongoTemplate MongoTemplate) {this.MongoTemplate = MongoTemplate; } @Override public void setApplicationContext (ApplicationContext ApplicationContext) lanza Beansexception {MongoTemplate MongoTemplate = ApplicationContext.getBean ("MongoTemplate", MongoTemplate.class); setMongoTemplate (MongoTemplate); }} La interfaz para operar la base de datos y la clase de implementación correspondiente:
Se demuestra la adición más básica, la eliminación, la modificación y la búsqueda. A lo que se debe prestar atención es la declaración de parámetros y la conversión de la clase de entidad al recibir los datos devueltos:
(1) Interfaz:
paquete Spring_mogo.dao; import java.util.list; import spring_mongo.models.usermodel; interfaz pública userDao { / ** * Datos de consulta * * @author: tuzongxun * @title: findall * @param @return * @return list <sermodel> * @Date 13 de mayo de 2016 3:07:39 PM * @throws * / Lista pública <ssermodel> findall (); / ** * Datos nuevos * * @author: tuzongxun * @title: insersuser * @param @param user * @return void * @date 13 de mayo de 2016 3:09:45 pm * @throws */ public void inssersuser (user user); / ** * Eliminar datos * * @author: tuzongxun * @title: removeuser * @param @param username * @return void * @date 13 de mayo de 2016 3:09:55 pm * @throws */ public void remoideo (string username); / ** * Modificar datos * * @author: tuzongxun * @title: updateUser * @param @param user * @return void * @date 13 de mayo de 2016 3:10:06 pm * @throws */ public void UpdateUser (user user); / ** * Consulta por condición * * @author: tuzongxun * @title: findforRquery * @param * @return void * @Date 13 de mayo de 2016 3:23:37 pm * @throws */ public List <Sermodel> findForReQuery (string username); } (2) Clase de implementación, aquí necesitamos heredar la clase abstractbasemongotemplete, para obtener MongoTemplete para varias operaciones:
paquete spring_mogo.dao.daoimp; import java.util.list; importar org.springframework.data.mongodb.core.queria.criteria; importar org.springframework.data.mongodb.core.query.query; importar org.springframework.data.mongodb.core.query.update; importar org.springframework.stereotype.component; import spring_mogo.dao.userdao; import spring_mongo.models.usermodel; import com.mongodb.basicdbobject; import com.mongodb.dbobject; @Component ("UserDaOimp") Public Class UserDaOimp extiende AbstractBaseMongoTemplete implementos UserDao { / ** * Consulta Todos los datos * * @author: tuzongxun * @title: findall * @Description: todo * @param @return * @Date 13 de mayo de 2016 3:10:29 pm * @throws * / @@throws @@Proodely @Orodel. findAll () {// La clase de cadáver correspondiente y el nombre de colección correspondiente de la colección deben establecerse, de modo que el resultado de la consulta se mapee directamente la lista <sermodel> userList = mongotemplate.findall (usermodel.class, "user"); devolver UserList; } / ** * Nuevos datos * * @author: tuzongxun * @title: insertuser * @Description: toDo * @param @param user * @Date el 13 de mayo de 2016 3:10:45 pm * @throws * / @Override public BasicDBObject (); object.put ("UserName", user.getUsername ()); Object.put ("Password", user.getPassword ()); MongoTemplate.insert (objeto, "usuario"); } / ** * Eliminar datos según las condiciones * * @author: tuzongxun * @title: removeuser * @Description: toDo * @param @param username * @date 13 de mayo de 2016 3:11:01 pm * @throws * / @override public void elimina removeuser (string userName) {// establece la condición deletada, delete de alte y query = query = query = query = query = query = query (query query = query = query = query (query query = query (query query = query = query = query (query query = query (query querer Criterios criterios = nuevos criterios ("nombre de usuario"); criterio.is (nombre de usuario); consulta.addcriterios (criterios); mongotemplate.remove (consulta, "usuario"); } / ** * Modificar datos * * @author: tuzongxun * @title: updateUser * @Description: toDo * @param @param user * @Date el 13 de mayo de 2016 3:11:12 pm * @throws * / @Override public updateUser (user userModel) {// Establecer una consulta de consultas de las condiciones de modificación = Nueva query (););;);; Criterios criterios = nuevos criterios ("nombre de usuario"); criteria.is (user.getUsername ()); consulta.addcriterios (criterios); // Establecer Contenido de modificación Update = update.update ("Password", user.getPassword ()); // Parámetros: condiciones de consulta, cambia el resultado, el nombre de la colección mongotemplate.updateFirst (consulta, actualización, "usuario"); } /** * Query based on the condition * * @author: tuzongxun * @Title: findForRequery * @Description: TODO * @param @param userName * @date May 13, 2016 4:08:15 PM * @throws */ @Override public List<UserModel> findForRequery(String userName) { Query query = new Query(); Criterios criterios = nuevos criterios ("nombre de usuario"); criterio.is (nombre de usuario); consulta.addcriterios (criterios); // Condición de consulta, clase de entidad correspondiente a la lista de nombres establecida, establecer la lista de nombres <Sermodel> userList = MongoTemplate.Find (Query, Usermodel.class, "User"); devolver UserList; }} Clase de prueba:
Para verificar la exactitud del código y la configuración anterior, el código de clase de prueba es el siguiente:
paquete spring_mongo.test; import java.util.list; importar org.junit.test; importar org.junit.runner.runwith; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.test.context.contextConfiguration; importar org.springframework.test.context.junit4.springjunit4classrunner; import spring_mogo.dao.userdao; import spring_mongo.models.usermodel; @RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (ubicaciones = {"classpath: spring.xml"}) clase pública MongoTest {@aUtowired userDao userDao; / ** * Prueba de consulta * * @author: tuzongxun * @title: monfindtest * @param * @return void * @date 13 de mayo de 2016 3:27:51 pm * @throws */ @test public void monfindtest () {list <serModel> usermodels = userdao.findall (); if (usermodels! = null && usermodels.size ()> 0) {for (usermodel user: usermodels) {system.out.println (user.getusername () + ":" + user.getPassword ()); }}} / ** * Insertar prueba de datos * * @author: tuzongxun * @title: moninserttest * @param * @return void * @date 13 de mayo de 2016 3:27:38 pm * @throws * / @test public void moninserttest () {userModel user = new USermodel ("test111", "123456"); userdao.insertuser (usuario); this.monfindTest (); } / ** * Eliminar prueba * * @author: tuzongxun * @title: monremovetest * @param * @return void * @date 13 de mayo de 2016 3:28:06 pm * @throws * / @test public void void monremovetest () {string username = "test111"; userdao.removeUser (nombre de usuario); this.monfindTest (); } / ** * Modificación de prueba * * @author: tuzongxun * @title: monupdatetest * @param * @return void * @date 13 de mayo de 2016 3:50:08 pm * @throws * / @test public void monupdatetest () {usermodel user = new usermodel ("test111", "test"); userDao.UpdateUser (usuario); this.monfindTest (); } / ** * consulta por condición * * @author: tuzongxun * @title: monfindforruq * @param * @return void * @date 13 de mayo de 2016 4:10:53 pm * @throws * / @test public void monfindforruq () {string username = "test111"; Lista <SerModel> usermodels = userdao.findforRquery (nombre de usuario); if (usermodels! = null && usermodels.size ()> 0) {for (usermodel user: usermodels) {system.out.println (user.getusername () + ":" + user.getPassword ()); }}}} Descargue la demostración en la etapa posterior: demo
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.