多平台统一管理软件接口,如何实现多平台统一管理软件接口
297
2023-06-24
使用spring连接及操作mongodb3.0实例
前边有一篇记录过不使用spring,直接在java代码中连接和操作mongodb数据库,这里就紧随其后记录一下使用spring的情况下,在java中简单操作mongodb。
maven导包配置:
因为涉及了sping以及springmvc,因此也需要导入它们相关的包:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
spring基础配置:
主要是开启注解扫描等:
xmlns="http://springframework.org/schema/beans" xmlns:xsi="http://w3.org/2001/XMLSchema-instance" xmlns:context="http://springframework.org/schema/context" xsi:schemaLocation=" http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans-3.0.xsd http://springframework.org/schema/context http://springframework.org/schema/context/spring-context-3.0.xsd http://springframework.org/schema/task http://springframework.org/schema/task/spring-task-3.1.xsd">
xmlns="http://springframework.org/schema/beans" xmlns:xsi="http://w3.org/2001/XMLSchema-instance"
xmlns:context="http://springframework.org/schema/context"
xsi:schemaLocation="
http://springframework.org/schema/beans
http://springframework.org/schema/beans/spring-beans-3.0.xsd
http://springframework.org/schema/context
http://springframework.org/schema/context/spring-context-3.0.xsd
http://springframework.org/schema/task
http://springframework.org/schema/task/spring-task-3.1.xsd">
spring连接mongodb以及建立相关工厂的配置:
xmlns:xsi="http://w3.org/2001/XMLSchema-instance" xmlns:p="http://springframework.org/schema/p" xmlns:mongo="http://springframework.org/schema/data/mongo" xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans-3.0.xsd http://springframework.org/schema/data/mongo http://springframework.org/schema/data/mongo/spring-mongo.xsd">
xmlns:xsi="http://w3.org/2001/XMLSchema-instance" xmlns:p="http://springframework.org/schema/p"
xmlns:mongo="http://springframework.org/schema/data/mongo"
xsi:schemaLocation="http://springframework.org/schema/beans
http://springframework.org/schema/beans/spring-beans-3.0.xsd
http://springframework.org/schema/data/mongo
http://springframework.org/schema/data/mongo/spring-mongo.xsd">
与数据库对应的实体类:
需要注意的是这里需要实现序列化的接口并设置uid的属性,否则不能在操作中直接把数据库返回结果转换成对象属性:
package spring_mongo.models;
import java.io.Serializable;
public class UserModel implements Serializable {
private static final long serialVersionUID = 1L;
private String userName;
private String password;
public UserModel(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
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 = password;
}
}
根据spring配置获取操作mongodb的MongoTemplete,需要实现ApplicationContextAware接口:
package spring_mogo.dao.daoImp;
import org.springframework.beans.BeansException;
import org.springfraoRBagBmework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.data.mongodb.core.MongoTemplate;
public abstract class AbstractBaseMongoTemplete implements
ApplicationContextAware {
protected MongoTemplate mongoTemplate;
/**
* @Description 根据配置文件设置mongoTemplate
* @param mongoTemplate
*/
public void setMongoTemplate(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
MongoTemplate mongoTemplate = applicationContext.getBean(
"mongoTemplate", MongoTemplate.class);
setMongoTemplate(mongoTemplate);
}
}
操作数据库的接口以及对应的实现类:
演示了最基础的增删改查,需要注意的地方在于参数的声明以及接收返回数据时和实体类的转换:
(1)接口:
package spring_mogo.dao;
import java.util.List;
import spring_mongo.models.UserModel;
public interface UserDao {
/**
* 查询数据
*
* @author:tuzongxun
* @Title: findAll
* @param @return
* @return List
* @date May 13, 2016 3:07:39 PM
* @throws
*/
public List
/**
* 新增数据
*
* @author:tuzongxun
* @Title: insertUser
* @param @param user
* @return void
* @date May 13, 2016 3:09:45 PM
* @throws
*/
public void insertUser(UserModel user);
/**
* 删除数据
*
* @author:tuzongxun
* @Title: removeUser
* @param @param userName
* @return void
* @date May 13, 2016 3:09:55 PM
* @throws
*/
public void removeUser(String userName);
/**
* 修改数据
*
* @author:tuzongxun
* @Title: updateUser
* @param @param user
* @return void
* @date May 13, 2016 3:10:06 PM
* @throws
*/
public void updateUser(UserModel user);
/**
* 按条件查询
*
* @author:tuzongxun
* @Title: findForRequery
* @param
* @return void
* @date May 13, 2016 3:23:37 PM
* @throws
*/
public List
}
(2)实现类,这里要继承AbstractBaseMongoTemplete类,从而获得mongoTemplete进行各种操作:
package spring_mogo.dao.daoImp;
import java.util.List;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import 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 extends AbstractBaseMongoTemplete implements UserDao {
/**
* 查询所有数据
*
* @author:tuzongxun
* @Title: findAll
* @Description: TODO
* @param @return
* @date May 13, 2016 3:10:29 PM
* @throws
*/
@Override
public List
// 需要设置集合对应的尸体类和相应的集合名,从而查询结果直接映射
List
"user");
return userList;
}
/**
* 新增数据
*
* @author:tuzongxun
* @Title: insertUser
* @Description: TODO
* @param @param user
* @date May 13, 2016 3:10:45 PM
* @throws
*/
@Override
public void insertUser(UserModel user) {
// 设置需要插入到数据库的文档对象
DBObject object = new BasicDBObject();
object.put("userName", user.getUserName());
object.put("password", user.getPassword());
mongoTemplate.insert(object, "user");
}
/**
* 按条件删除数据
*
* @author:tuzongxun
* @Title: removeUser
* @Description: TODO
* @param @param userName
* @date May 13, 2016 3:11:01 PM
* @throws
*/
@Override
public void removeUser(String userName) {
// 设置删除条件,如果条件内容为空则删除所有
Query query = new Query();
Criteria criteria = new Criteria("userName");
criteria.is(userName);
query.addCriteria(criteria);
mongoTemplate.remove(query, "user");
}
/**
* 修改数据
*
* @author:tuzongxun
* @Title: updateUser
* @Description: TODO
* @param @param user
* @date May 13, 2016 3:11:12 PM
* @throws
*/
@Override
public void updateUser(UserModel user) {
// 设置修改条件
Query query = new Query();
Criteria criteria = new Criteria("userName");
criteria.is(user.getUserName());
query.addCriteria(criteria);
// 设置修改内容
Update update = Update.update("password", user.getPassword());
// 参数:查询条件,更改结果,集合名
mongoTemplate.updateFirst(query, update, "user");
}
/**
* 根据条件查询
*
* @author:tuzongxun
* @Title: findForRequery
* @Description: TODO
* @param @param userName
* @date May 13, 2016 4:08:15 PM
* @throws
*/
@Override
public List
Query query = new Query();
Criteria criteria = new Criteria("userName");
criteria.is(userName);
query.addCriteria(criteria);
// 查询条件,集合对应的实体类,集合名
List
"user");
return userList;
}
}
测试类:
为了验证以上代码和配置的正确性,测试类代码如下:
package spring_mongo.test;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import spring_mogo.dao.UserDao;
import spring_mongo.models.UserModel;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml" })
public class mongoTest {
@Autowired
private UserDao userDao;
/**
* 查询测试
*
* @author:tuzongxun
* @Title: monFindTest
* @param
* @return void
* @date May 13, 2016 3:27:51 PM
* @throws
*/
@Test
public void monFindTest() {
List
if (userModels != null && userModels.size() > 0) {
for (UserModel user : userModels) {
System.out.println(user.getUserName() + ":"
+ user.getPassword());
}
}
}
/**
* 插入数据测试
*
* @author:tuzongxun
* @Title: monInsertTest
* @param
* @return void
* @date May 13, 2016 3:27:38 PM
* @throws
*/
@Test
public void monInsertTest() {
UserModel user = new UserModel("test111", "123456");
userDao.insertUser(user);
this.monFindTest();
}
/**
* 删除测试
*
* @author:tuzongxun
* @Title: monRemoveTest
* @param
* @return void
* @date May 13, 2016 3:28:06 PM
* @throws
*/
@Test
public void monRemoveTest() {
String userName = "test111";
userDao.removeUser(userName);
this.monFindTest();
}
/**
* 测试修改
*
* @author:tuzongxun
* @Title: monUpdateTest
* @param
* @return void
* @date May 13, 2016 3:50:08 PM
* @throws
*/
@Test
public void monUpdateTest() {
UserModel user = new UserModel("test111", "test");
userDao.updateUser(user);
this.monFindTest();
}
/**
* 按条件查询
*
* @author:tuzongxun
* @Title: monFindForRuq
* @param
* @return void
* @date May 13, 2016 4:10:53 PM
* @throws
*/
@Test
public void monFindForRuq() {
String userName = "test111";
List
if (userModels != null && userModels.size() > 0) {
for (UserModel user : userModels) {
System.out.println(user.getUserName() + ":"
+ user.getPassword());
}
}
}
}
后期补上demo下载地址:demo
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~