Spring Boot集成mongoDB(十二)
2017-12-22 16:08
651 查看
步骤
1.pom.xml引包
2.在配置application.properties中设置spring.data.mongodb.uri属性
3.建测试实体类类
4.编写数据操作接口
5.测试
1.pom.xml引包<!--集成mongoDB-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.在配置application.properties中设置spring.data.mongodb.uri属性
#mongo2.x支持以上两种配置方式 mongo3.x仅支持uri方式
#spring.data.mongodb.host=127.0.0.1
#spring.data.mongodb.port=27017
#spring.data.mongodb.database=test
#没有设置密码
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/test
#设置了密码
#spring.data.mongodb.uri=mongodb://root:root@127.0.0.1:27017/test
3.建测试实体类类package com.ljl.spring.boot.entity;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
/**
* 集成mongoDB测试实体类
* @author alen
* @create 2017-12-22 15:28
**/
@Document(collection="person")
@CompoundIndexes({
@CompoundIndex(name = "age_index", def = "{'name': 1, 'age': -1}")
})
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
@Indexed
private String sysno;//命名成id,持久化到数据库会是_id,值将是自己设置的,不是系统生成的
private String name;
private int age;
@Transient private String address;
public Person(String sysno, String name, int age) {
super();
this.sysno = sysno;
this.name = name;
this.age = age;
}
public String getSysno() {
return sysno;
}
public void setSysno(String sysno) {
this.sysno = sysno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return String.format(
"Customer[name='%s', age='%s']",
name, age);
}
}
5.测试/**
* 测试集成mongoDB
* @author alen
* @create 2017-12-22 15:57
**/
@RestController
public class MongoDBController {
@Autowired
private PersonService personService;
@RequestMapping("/mongo")
public List<Person> testMongo() {
List<Person> list=null;
try {
Person person = new Person("1", "小明", 28);
person.setAddress("上海");
personService.savePerson(person);
list = personService.listPerson();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
注解说明
@CompoundIndexes({
@CompoundIndex(name = "age_index", def = "{'name': 1, 'age': -1}")
})
public class Person implements Serializable {
@CompoundIndex
复合索引,加复合索引后通过复合索引字段查询将大大提高速度@CompoundIndexes({
@CompoundIndex(name = "age_index", def = "{'name': 1, 'age': -1}")
})
public class Person implements Serializable {@Id
MongoDB默认会为每个document生成一个 _id 属性,作为默认主键,且默认值为ObjectId,可以更改 _id 的值(可为空字符串),但每个document必须拥有 _id 属性。当然,也可以自己设置@Id主键,不过官方建议使用MongoDB自动生成。
唯一索引的话是@Indexed(unique = true)。
也可以对数组进行索引,如果被索引的列是数组时,mongodb会索引这个数组中的每一个元素。 @Indexed
private String sysno;
代表一个字段,可以不加,不加的话默认以参数名为列名。
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongodb
1.pom.xml引包
2.在配置application.properties中设置spring.data.mongodb.uri属性
3.建测试实体类类
4.编写数据操作接口
5.测试
1.pom.xml引包<!--集成mongoDB-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.在配置application.properties中设置spring.data.mongodb.uri属性
#mongo2.x支持以上两种配置方式 mongo3.x仅支持uri方式
#spring.data.mongodb.host=127.0.0.1
#spring.data.mongodb.port=27017
#spring.data.mongodb.database=test
#没有设置密码
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/test
#设置了密码
#spring.data.mongodb.uri=mongodb://root:root@127.0.0.1:27017/test
3.建测试实体类类package com.ljl.spring.boot.entity;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
/**
* 集成mongoDB测试实体类
* @author alen
* @create 2017-12-22 15:28
**/
@Document(collection="person")
@CompoundIndexes({
@CompoundIndex(name = "age_index", def = "{'name': 1, 'age': -1}")
})
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
@Indexed
private String sysno;//命名成id,持久化到数据库会是_id,值将是自己设置的,不是系统生成的
private String name;
private int age;
@Transient private String address;
public Person(String sysno, String name, int age) {
super();
this.sysno = sysno;
this.name = name;
this.age = age;
}
public String getSysno() {
return sysno;
}
public void setSysno(String sysno) {
this.sysno = sysno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return String.format(
"Customer[name='%s', age='%s']",
name, age);
}
}
4.编写数据操作接口
/** * @author alen * @create 2017-12-22 15:45 **/ public interface PersonService { void savePerson(Person person); Person findPersonByName(String name); void removePerson(String name); void updatePerson(String name, String key, String value); List<Person> listPerson(); }
package com.ljl.spring.boot.service.Impl; import com.ljl.spring.boot.entity.Person; import com.ljl.spring.boot.service.PersonService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoOperations; 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 java.util.List; /** * 实现类 * @author alen * @create 2017-12-22 15:48 **/ @Component("personService") public class PersonServiceImpl implements PersonService { @Autowired MongoOperations mongoTemplate; public void savePerson(Person person) { mongoTemplate.save(person); } public Person findPersonByName(String name) { return mongoTemplate.findOne( new Query(Criteria.where("name").is(name)), Person.class); } public void removePerson(String name) { mongoTemplate.remove(new Query(Criteria.where("name").is(name)), Person.class); } public void updatePerson(String name, String key, String value) { mongoTemplate.updateFirst(new Query(Criteria.where("name").is(name)), Update.update(key, value), Person.class); } public List<Person> listPerson() { return mongoTemplate.findAll(Person.class); } }
5.测试/**
* 测试集成mongoDB
* @author alen
* @create 2017-12-22 15:57
**/
@RestController
public class MongoDBController {
@Autowired
private PersonService personService;
@RequestMapping("/mongo")
public List<Person> testMongo() {
List<Person> list=null;
try {
Person person = new Person("1", "小明", 28);
person.setAddress("上海");
personService.savePerson(person);
list = personService.listPerson();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
注解说明
@Document
标注在实体类上,类似于hibernate的entity注解,标明由mongo来维护该表。@Document(collection="person")@CompoundIndexes({
@CompoundIndex(name = "age_index", def = "{'name': 1, 'age': -1}")
})
public class Person implements Serializable {
复合索引,加复合索引后通过复合索引字段查询将大大提高速度@CompoundIndexes({
@CompoundIndex(name = "age_index", def = "{'name': 1, 'age': -1}")
})
public class Person implements Serializable {@Id
MongoDB默认会为每个document生成一个 _id 属性,作为默认主键,且默认值为ObjectId,可以更改 _id 的值(可为空字符串),但每个document必须拥有 _id 属性。当然,也可以自己设置@Id主键,不过官方建议使用MongoDB自动生成。
@Indexed
声明该字段需要加索引,加索引后以该字段为条件检索将大大提高速度。唯一索引的话是@Indexed(unique = true)。
也可以对数组进行索引,如果被索引的列是数组时,mongodb会索引这个数组中的每一个元素。 @Indexed
private String sysno;
@Transient
被该注解标注的,将不会被录入到数据库中。只作为普通的javaBean属性。@Transient private String address;@Field
代表一个字段,可以不加,不加的话默认以参数名为列名。
@Field("firstName") private String name;参考:
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongodb
相关文章推荐
- spring-boot集成MongoDB
- spring boot 集成 mongodb
- 企业级 SpringBoot 教程 (十二)springboot集成apidoc
- SpringBoot实践之---集成mongodb
- springboot - 集成MongoDB实现
- springboot Mongodb的集成与使用实例详解
- 基于SpringBoot2 & MongoDB完成自动化集成
- SpringBoot | 第三十一章:MongoDB的集成和使用
- Spring Boot(十二)集成spring-boot-starter-mail发送邮件
- Spring Boot集成Shiro并利用MongoDB做Session存储的方法详解
- (三)spring-boot集成MongoDB
- Spring Boot 系列 | 第八篇:集成MongoDB
- mongodb学习(三):springboot集成mongodb例子
- springBoot集成MongoDB
- SpringBoot -- 集成MongoDB
- 微服务,微架构[三]之springboot集成nosql数据库mongodb
- SpringBoot中集成MongoDB
- 84. Spring Boot集成MongoDB【从零开始学Spring Boot】
- 84. Spring Boot集成MongoDB【从零开始学Spring Boot】
- spring boot 与kafka集成的示例代码