由于springboot的快速构建,帮助我们节省了很多配置时间,更能专注业务开发工作。
今天讲一个springboot整合mongodb的demo。
开发之前要有mongodb的服务,以及开发工具idea或者eclipse。便于开发,
我使用的是idea。我们可以自己搭建一个springboot的demo,也可以通过http://start.spring.io/去快速构建一个springboot的demo。
来看一下项目中pom.xml中的相关依赖。
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mongodb-springboot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- mongodb驱动-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
</dependency>
</dependencies>
配置好之后,看下配置文件。连接mongodb的地址。确保mongodb服务正常启动。
再来看实体类//由于使用lombok jar,所以不再手写getter、setter以及相关的方法
@Data
@AllArgsConstructor
@ToString
@NoArgsConstructor
public class Student {
@Id
private Integer id;
private String name;
private String password;
private String sex;
private String address;
}
再来看mapper文件的配置
public interface StudentRepository extends MongoRepository<Student,String> {
Student findByName(String name);
}
service的api接口配置如下:
@Repository
public interface StudentService {
void save(Student student);
Student findByName(String name);
}
service的实现服务如下:
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentRepository studentRepository;
@Override
public void save(Student student) {
studentRepository.save(student);
}
@Override
public Student findByName(String name) {
return this.findByName(name);
}
}
我们看相关测试代码:
@Autowired
private StudentRepository repository;
@Resource
private MongoTemplate mongoTemplate;
@Test
public void queryStudent(){
//查询文档中所有数据
List<Student> sList = repository.findAll();
for(Student s:sList){
System.out.println(s);
}
}
/**
* 保存数据到mongodb
*/
@Test
public void addStudent(){
for(int i =0; i < 300000;i++){
Student stu = new Student();
stu.setId(3+i);
stu.setName("大卫");
stu.setPassword("12345678");
stu.setSex("女");
stu.setAddress("江苏");
repository.save(stu);
}
System.out.println("执行成功");
/* Student student = repository.findByName(stu.getName());
System.out.println(student);*/
}
/**
* 查询记录 mongodb中使用in查询,类似mysql中in查询一样,查询同一条件的多个记录
*/
@Test
public void countStudent(){
List<Long> id = new ArrayList<>(3);
id.add(254150L);
// id.add(2L);
// id.add(3L);
Query query = new Query();
query.addCriteria(Criteria.where("id").in(id));
Long count = mongoTemplate.count(query,Student.class);
System.out.println("查询结果条数是:"+count);
}
@Test
public void selectOneStudent(){
/* Student stu = new Student();
stu.setId(251542);*/
Student s = mongoTemplate.findById(251542,Student.class,"student");
System.out.println(s);
}
/**
* mongodb更新数据
*/
@Test
public void updateStudent(){
Student stu = new Student();
stu.setName("大卫");
stu.setSex("女");
Query query = new Query();
query.addCriteria(Criteria.where("name").in("大卫"));
WriteResult wr = mongoTemplate.upsert(query, Update.update("sex","男").set("address","江苏徐州"),Student.class);
System.out.println("执行成功"+wr.getN());
// System.out.println();
}
@Test
public void deleteStudent(){
Student stu = new Student();
stu.setName("大卫");
//repository.delete(stu);
Query query = new Query();
query.addCriteria(Criteria.where("name").in("大卫"));
mongoTemplate.findAllAndRemove(query,Student.class,"student");
List<Student> list = repository.findAll();
for(Student s:list){
System.out.println(s);
}
}
今天讲一个springboot整合mongodb的demo。
开发之前要有mongodb的服务,以及开发工具idea或者eclipse。便于开发,
我使用的是idea。我们可以自己搭建一个springboot的demo,也可以通过http://start.spring.io/去快速构建一个springboot的demo。
来看一下项目中pom.xml中的相关依赖。
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mongodb-springboot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- mongodb驱动-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
</dependency>
</dependencies>
配置好之后,看下配置文件。连接mongodb的地址。确保mongodb服务正常启动。
再来看实体类//由于使用lombok jar,所以不再手写getter、setter以及相关的方法
@Data
@AllArgsConstructor
@ToString
@NoArgsConstructor
public class Student {
@Id
private Integer id;
private String name;
private String password;
private String sex;
private String address;
}
再来看mapper文件的配置
public interface StudentRepository extends MongoRepository<Student,String> {
Student findByName(String name);
}
service的api接口配置如下:
@Repository
public interface StudentService {
void save(Student student);
Student findByName(String name);
}
service的实现服务如下:
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentRepository studentRepository;
@Override
public void save(Student student) {
studentRepository.save(student);
}
@Override
public Student findByName(String name) {
return this.findByName(name);
}
}
我们看相关测试代码:
@Autowired
private StudentRepository repository;
@Resource
private MongoTemplate mongoTemplate;
@Test
public void queryStudent(){
//查询文档中所有数据
List<Student> sList = repository.findAll();
for(Student s:sList){
System.out.println(s);
}
}
/**
* 保存数据到mongodb
*/
@Test
public void addStudent(){
for(int i =0; i < 300000;i++){
Student stu = new Student();
stu.setId(3+i);
stu.setName("大卫");
stu.setPassword("12345678");
stu.setSex("女");
stu.setAddress("江苏");
repository.save(stu);
}
System.out.println("执行成功");
/* Student student = repository.findByName(stu.getName());
System.out.println(student);*/
}
/**
* 查询记录 mongodb中使用in查询,类似mysql中in查询一样,查询同一条件的多个记录
*/
@Test
public void countStudent(){
List<Long> id = new ArrayList<>(3);
id.add(254150L);
// id.add(2L);
// id.add(3L);
Query query = new Query();
query.addCriteria(Criteria.where("id").in(id));
Long count = mongoTemplate.count(query,Student.class);
System.out.println("查询结果条数是:"+count);
}
@Test
public void selectOneStudent(){
/* Student stu = new Student();
stu.setId(251542);*/
Student s = mongoTemplate.findById(251542,Student.class,"student");
System.out.println(s);
}
/**
* mongodb更新数据
*/
@Test
public void updateStudent(){
Student stu = new Student();
stu.setName("大卫");
stu.setSex("女");
Query query = new Query();
query.addCriteria(Criteria.where("name").in("大卫"));
WriteResult wr = mongoTemplate.upsert(query, Update.update("sex","男").set("address","江苏徐州"),Student.class);
System.out.println("执行成功"+wr.getN());
// System.out.println();
}
@Test
public void deleteStudent(){
Student stu = new Student();
stu.setName("大卫");
//repository.delete(stu);
Query query = new Query();
query.addCriteria(Criteria.where("name").in("大卫"));
mongoTemplate.findAllAndRemove(query,Student.class,"student");
List<Student> list = repository.findAll();
for(Student s:list){
System.out.println(s);
}
}