springboot整合mongodb的demo

    由于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);
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值