Spring Boot集成mongoDB(十二)
来源:互联网 发布:java wait 用法 编辑:程序博客网 时间:2024/06/06 00:52
步骤
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 **/@RestControllerpublic 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 {
@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
声明该字段需要加索引,加索引后以该字段为条件检索将大大提高速度。
唯一索引的话是@Indexed(unique = true)。
也可以对数组进行索引,如果被索引的列是数组时,mongodb会索引这个数组中的每一个元素。
@Indexed private String sysno;
@Transient
被该注解标注的,将不会被录入到数据库中。只作为普通的javaBean属性。
@Transientprivate String address;
@Field
代表一个字段,可以不加,不加的话默认以参数名为列名。
@Field("firstName")private String name;
参考:
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongodb
阅读全文
0 0
- Spring Boot集成mongoDB(十二)
- spring-boot集成MongoDB
- spring boot集成mongodb
- spring boot 集成 mongodb
- Spring Boot集成MongoDB
- Spring Boot集成MongoDB
- (三)spring-boot集成MongoDB
- Spring Boot(十二)集成spring-boot-starter-mail发送邮件
- Spring Boot系列教程十二:Spring boot集成Redis
- Spring Boot 快速上手(六)集成MongoDB
- 6.3 Spring Boot集成mongodb开发
- 84. Spring Boot集成MongoDB【从零开始学Spring Boot】
- spring boot集成mongodb、solr、redis等数据源
- 【mongodb(二)】spring 集成 mongodb
- spring boot整合hessian(十二)
- Spring boot 十二 CommandLineRuner
- Spring Boot (三)集成spring security
- Spring Boot(四):Spring Boot 集成 Thymeleaf
- SpirngMVC框架下使用filter对字符进行过滤
- 正则表达式 替换两标签为空
- shiro 实例 并发登录篇
- 指针阅读技巧分析
- Nginx Location指令URI匹配规则详解
- Spring Boot集成mongoDB(十二)
- Objective-C(基础篇)九大基本类型
- 机器学习/深度学习/自然语言处理学习路线
- mxnet设置动态学习率(learning rate)
- 深入理解Java的接口和抽象类
- 小记1
- FCS-001氟碳石材防护剂
- Linux第一章 习题
- 浅谈算法和数据结构: 一 栈和队列