MongoDB和Java(4):Spring Data整合MongoDB(XML配置)
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装、客户端操作、安全认证、副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很大。特此记录,以备查看。
文章目录:
MongoDB和Java(1):Linux下的MongoDB安装
MongoDB和Java(2):普通用户启动mongod进程
MongoDB和Java(4):Spring Data整合MongoDB(XML配置)
MongoDB和Java(5):Spring Data整合MongoDB(注解配置)
MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群
本文记录如何使用XML配置方式整合Spring data和MongoDB
源代码下载
MongoDB和Java学习代码.zip
1、环境准备
JDK 1.8
Spring 4.2.5.RELEASE
Junit 4.10
Spring-data-mongodb 1.9.0.RELEASE
Logback 1.1.7
Maven 3.2.1
依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.version>4.2.5.RELEASE</spring.version>
</properties> <dependencies> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.9.0.RELEASE</version>
</dependency> <!-- logback日志 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.1</version>
</dependency> </dependencies> <build>
<finalName>security-demo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
2、mongodb配置文件
这个是spring的子配置文件,通过从.properties文件读取连接属性创建mongoClient对象,再创建DBFactory对象,通过DBFactory创建MongoTemplate,我们的数据层实现类就是使用MongoTemplate操作MongoDB的。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.8.xsd"> <!-- 连接属性文件,配置服务器IP端口、数据库和连接参数 -->
<context:property-placeholder location="classpath:mongodb.properties"
ignore-unresolvable="true" /> <!-- 创建MongoClient -->
<mongo:mongo-client id="mongo" replica-set="${mongo.hostport}">
<mongo:client-options connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier=
"${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}" />
</mongo:mongo-client> <!-- MongoDbFactory -->
<mongo:db-factory id="mgFactory" dbname="${mongo.dbname}"
mongo-ref="mongo" /> <!-- MongoTemplate -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mgFactory" />
</bean> </beans>

mongodb.properties
mongo.hostport=10.10.12.195:27017
mongo.dbname=test
mongo.connectionsPerHost=8
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=1000
mongo.maxWaitTime=1500
mongo.socketKeepAlive=true
mongo.socketTimeout=1500
3、spring主配置文件
application.xml是spring的主配置文件,配置组件扫描,另外还要引入mongo的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <!-- 组件扫描 -->
<context:component-scan base-package="org.net5ijy.mongo.dao" />
<!--使用注解管理bean -->
<context:annotation-config /> <import resource="application-mongo.xml" /> </beans>
4、实体类和数据层
Employee
@Document(collection = "employee")
public class Employee implements Serializable { @Id
@Field(value = "_id")
private String id; @Field(value = "name")
private String name; @Field
private Integer age; @Field
private Date createTime = new Date(); public Employee() {
super();
}
public Employee(String name, Integer age) {
super();
this.name = name;
this.age = age;
} // getter & setter
}
数据层实现
@Repository
public class EmployeeDaoImpl implements EmployeeDao { @Autowired
private MongoTemplate mongoTemplate; @Override
public List<Employee> findAll() {
return mongoTemplate.findAll(Employee.class);
} @Override
public void insertOneEmployee(Employee employee) {
mongoTemplate.insert(employee);
} @Override
public void deleteOneEmployeeByName(String name) {
Criteria c = new Criteria();
c.and("name").is(name);
Query query = new Query(c);
mongoTemplate.remove(query, Employee.class);
} @Override
public void deleteOneEmployee(String id) {
Criteria c = new Criteria();
c.and("_id").is(id);
Query query = new Query(c);
mongoTemplate.remove(query, Employee.class);
} @Override
public Employee findByName(String name) {
Criteria c = new Criteria();
c.and("name").is(name);
Query query = new Query(c);
return mongoTemplate.findOne(query, Employee.class);
} @Override
public Employee find(String id) {
return mongoTemplate.findById(id, Employee.class);
}
}
代码中把MongoTemplate注入到了实现类,然后使用它的API进行数据库操作。
5、Junit测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:application.xml" })
public class EmployeeDaoImplTest { @Autowired
private EmployeeDao employeeDao; @Autowired
private ApplicationContext context; @Test
public void testFindAll() {
List<Employee> list = employeeDao.findAll();
for (Employee employee : list) {
System.out.println(employee);
}
} @Test
public void testInsertOneEmployee() {
Employee e = new Employee("admin", 28);
employeeDao.insertOneEmployee(e);
} @Test
public void testDeleteOneEmployeeByName() {
employeeDao.deleteOneEmployeeByName("admin");
} @Test
public void testDeleteOneEmployee() {
Employee e = employeeDao.findByName("admin");
employeeDao.deleteOneEmployee(e.getId());
} @Test
public void testFindByName() {
Employee e = employeeDao.findByName("admin");
System.out.println(e);
} @Test
public void testFind() {
Employee e = employeeDao.findByName("admin");
Employee e2 = employeeDao.find(e.getId());
System.out.println(e2);
}
}
6、参考资料
Spring Data MongoDB - Reference Documentation
https://docs.spring.io/spring-data/mongodb/docs/1.10.15.RELEASE/reference/html/
MongoDB和Java(4):Spring Data整合MongoDB(XML配置)的更多相关文章
- MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...
- MongoDB和Java(5):Spring Data整合MongoDB(注解配置)
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...
- MongoDB和Java(7):MongoDB用户管理
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...
- spring MVC 整合mongodb
Spring Mongodb 目录 1 SPRING整合MONGODB 1 1.1 环境准备 1 1.2 包依赖 1 1.3 配置 2 2 案列 5 2.1 SPRING MVC整合MONGODB代码 ...
- 使用 Spring Data 进行 MongoDB 4.0 事务处理
使用 Spring Data 进行 MongoDB 4.0 事务处理 原文链接:http://spring.io/blog/2018/06/28/hands-on-mongodb-4-0-transa ...
- java 9 Spring Cloud @EnableEurekaServer javax.xml.bind.JAXBContext not present
java 9 Spring Cloud @EnableEurekaServer javax.xml.bind.JAXBContext not present jdk 8下面还可以正常启动,jdk9 ...
- Spring装配Bean---使用xml配置
声明Bean Spring配置文件的根元素是<beans>. 在<beans>元素内,你可以放所有的Spring配置信息,包括<bean>元素的声明. 除了Bean ...
- Spring的配置文件ApplicationContext.xml配置头文件解析
Spring的配置文件ApplicationContext.xml配置头文件解析 原创 2016年12月16日 14:22:43 标签: spring配置文件 5446 spring中的applica ...
- JAVA 处理 Spring data mongodb 时区问题
Spring data mongodb 查询出结果的时候会自动 + 8小时,所以我们看起来结果是对的 但是我们查询的时候,并不会自动 + 8小时,需要自己处理 解决方法 1 @JsonFormat ...
随机推荐
- linux操作系统与jvm
线程调度 https://www.cnblogs.com/xiaotlili/p/3510224.html
- Dubbo Filter详解
转载:https://www.jianshu.com/p/c5ebe3e08161 Dubbo的Filter在使用的过程中是我们扩展最频繁的内容,而且Dubbo的很多特性实现也都离不开Filter的工 ...
- Feign进行文件上传+表单调用
Feigin默认是不支持文件上传和表单提交的,需要做一些配置才能支持. 1.feign依赖 图中红色为form支持必须的jar. 2.添加自定义Encoder类: import static java ...
- url的长度问题
url最长支持多少字符? 在http协议中,其实并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web服务器有关,不一样的浏览器,能接受的最大长度往往是不一样的,当然,不一样的Web服务 ...
- echo的色彩处理
在Shell脚本中,可以使用echo的-e选项使显示内容呈现出不同的颜色. 格式1:echo -e "\033[背景颜色代码;文字颜色代码m 输出的字符串 \033[0m" 格式2 ...
- spring中RequestBody注解接收参数时用JSONField转参数名无效问题
问题: 在springboot项目中使用@RequestBody注解接收post请求中body里的json参数的情况.即: @RequestMapping(value = "/get-use ...
- vue方法中传递dom对象示例
<div id="app"> <input type="text" v-on:keyup="onlyNum($event)" ...
- php代码规范->如何写出规范且易于理解的项目代码-ZX版
2019年5月17日10:50:12 前序: 目前是想到哪写到哪,后面有时间在整理成具体文章 很多时候,PHP代码风格过于自由,导致一个项目有N多种写法风格,有些人为了自己认为的技术"高&q ...
- 【npm permission denied错误】npm ERR! Error: EACCES: permission denied, access
在命令前加上 sudo sudo npm install --save-dev grunt 不过这样子可能还是不行,你需要这样: sudo npm install --unsafe-perm=true ...
- K3Wise插件开发实战教程(全套)持续更新中。。。
这是林枫山自己编写制作的全套K3wise插件教程,欢迎下载学习. 下载目录链接如下(如果链接下载不了,请加QQ:714259796获取教程): 进度01-K3Wise数据表详解 下载学习文档 ...