这段时间尝试了一下MongoDB,感觉十分易用,方便,相比关系型的数据库来说优势也很大,于是尝试了下使用java连接MongoDB,并进行了 基本的增删改查操作。 首先先在控制台中连接数据库,查看数据库有几个表。 现在,新建一个maven工程,pom.xml中的依赖如下:
1:搭建好springmvc框架这里我们用到的是spring-data中一个集成mongodb的项目,首先在maven中添加对它的依赖。
org.springframework.data
spring-data-mongodb
1.0.0.M5
2:新建一个mongodb.properties文件;基本配置如下
mongo.hostport=172.16.10.247:27017//前面是部署的服务器IP地址,后面是端口号默认的27017
mongo.connectionsPerHost=8
mongo.threadsAllowedToBlockForConnectionMultiplier=4
#\u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4
mongo.connectTimeout=1000
#\u7B49\u5F85\u65F6\u95F4
mongo.maxWaitTime=1500
mongo.autoConnectRetry=true
mongo.socketKeepAlive=true
#Socket\u8D85\u65F6\u65F6\u95F4
mongo.socketTimeout=1500
mongo.slaveOk=true
3:新建一个springmvc与mongo整合的xml文件1.查询当前有哪些数据库: show dbs; 2.对集合的查询 show tables; 3.对集合中文档的查询 db. + 集合名 + .find() 如查询student数据库中score表中的所有文档: use student; #切换到要查寻的数据库db.score.find() 上面一条语句是对所有记录的查询,默认
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">
connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
auto-connect-retry="${mongo.autoConnectRetry}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"
slave-ok="${mongo.slaveOk}"
write-number="1"
write-timeout="0"
write-fsync="true"/>
class="org.springframework.data.mongodb.core.mapping.MongoMappingContext">
class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
4:写一个dao文件
@Repository
@Transactional(rollbackFor=Exception.class)
public class BaseMongoDAO{
/**
* spring mongodb 集成操作类
*/
@Autowired private MongoTemplate mongoTemplate;
/*public List find(Query query) {
return (List) mongoTemplate.find(query, this.getEntityClass());
} */
@SuppressWarnings("unchecked")
public List find(Query query, Class clazz) {
return (List) mongoTemplate.find(query, clazz);
}
/*public T findOne(Query query) {
return (T) mongoTemplate.findOne(query, this.getEntityClass());
} */
@SuppressWarnings("unchecked")
public T findOne(Query query, Class clazz) {
return (T) mongoTemplate.findOne(query, clazz);
}
/* public void update(Query query, Update update) {
mongoTemplate.findAndModify(query, update, this.getEntityClass());
} */
public void update(Query query, Update update, Class clazz) {
mongoTemplate.findAndModify(query, update, clazz);
}
//批量更新
public void updatemulti(Query query, Update update, Class clazz) {
mongoTemplate.updateMulti(query, update, clazz);
}
public void save(T entity) {
mongoTemplate.insert(entity);
}
/*public T findById(String id) {
return (T) mongoTemplate.findById(id, this.getEntityClass());
}*/
@SuppressWarnings("unchecked")
public T findById(String id, Class clazz) {
return (T) mongoTemplate.findById(id, clazz);
}
/*public T findById(String id, String collectionName) {
return (T) mongoTemplate.findById(id, this.getEntityClass(), collectionName);
} */
public Page findPage(Page page,Query query, Class clazz){
long count = this.count(query, clazz);
page.setTotal(count);
int pageNumber = page.getPageNum();
int pageSize = page.getPageSize();
query.skip((pageNumber - 1) * pageSize).limit(pageSize);
List rows = this.find(query, clazz);
page.setRows(rows);
return page;
}
public long count(Query query, Class clazz){
return mongoTemplate.count(query, clazz);
}
public void remove(Query query, Class clazz){
mongoTemplate.remove(query, clazz);
}
/**
* 获取需要操作的实体类class
*
* @return
*/
private Class getEntityClass(){
return ReflectionUtils.getSuperClassGenricType(getClass());
}
}