IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springBoot整合mongodb-jpa -> 正文阅读

[Java知识库]springBoot整合mongodb-jpa

第1步:基于maven新建springBoot工程

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.springcloud</groupId>
    <artifactId>mogodb_springboot_jpa</artifactId>
    <version>1.1.0</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Apache Lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.9</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

        <!-- JSON 解析器和生成器 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.74</version>
        </dependency>


        <!--Jackson required包-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.2</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

第2步:配置application.properties文件

server.port=8090
spring.application.name=mongodb-8090
spring.data.mongodb.host=192.168.42.22
spring.data.mongodb.port=27017
spring.data.mongodb.database=db_resume

第3步:编写实体类,并在实体类上面加上注解 @Docment("集合名")

package com.springcloud.domian.bean;

import org.apache.commons.lang3.builder.ToStringBuilder;

import java.math.BigDecimal;
import java.util.Date;


public class Resume {

    private String id;

    private String name;

    private String city;

    private Date birthday;

    private BigDecimal expectSalary;

    public Resume() {
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public BigDecimal getExpectSalary() {
        return expectSalary;
    }

    public void setExpectSalary(BigDecimal expectSalary) {
        this.expectSalary = expectSalary;
    }
}

第4步:编写Repository接口, 继承MongoRepository

package com.springcloud.repository;

import com.springcloud.domian.bean.Resume;
import org.springframework.data.mongodb.repository.MongoRepository;


public interface ResumeRepository extends MongoRepository<Resume, String> {
}

第5步: 从Spring容器中获取Repository对象进行数据操作

package com.springcloud.service.impl;

import com.springcloud.domian.bean.Resume;
import com.springcloud.repository.ResumeRepository;
import com.springcloud.service.IResumeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Objects;

@Service
public class ResumeServiceImpl implements IResumeService {

    @Autowired
    private ResumeRepository resumeRepository;

    @Override
    public Resume findByName(String name) {
        Resume resume = new Resume();
        resume.setName(name);
        Example<Resume> resumeExample = Example.of(resume);

        return resumeRepository.findOne(resumeExample);
    }

    @Override
    public Resume insertResume(Integer no) throws ParseException {
        Resume resume = new Resume();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        resume.setName("李" + no);
        resume.setCity("hk" + no);
        resume.setBirthday(sdf.parse("1996-03-14"));
        resume.setExpectSalary(new BigDecimal("15000"));
        resumeRepository.insert(resume);
        return resume;
    }

    @Override
    public Boolean updateResume(String id, String name) {
        Resume resume = resumeRepository.findOne(id);
        resume.setName(name);
        Resume save = resumeRepository.save(resume);
        return (Objects.nonNull(save) ? Boolean.TRUE : Boolean.FALSE);
    }

    @Override
    public Boolean deleteResume(String id) {
        resumeRepository.delete(id);
        return Boolean.TRUE;
    }

    /**
     * 分页查询
     *
     * @param name
     * @param currentPage
     * @param pageSize
     * @return
     */
    @Override
    public Page<Resume> listByName(String name, int currentPage, int pageSize) {
        Sort sort = new Sort(Sort.Direction.DESC, "city");
        Pageable pageable = new PageRequest(currentPage - 1, pageSize, sort);

        //创建匹配器,即如何使用查询条件
        ExampleMatcher matcher = ExampleMatcher.matching()
                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
                .withIgnoreCase(true)
                .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
                .withIgnorePaths("pageNum", "pageSize");

        //创建实例
        Resume resume = new Resume();
        resume.setName(name);
        Example<Resume> example = Example.of(resume, matcher);
        Page<Resume> resumes = resumeRepository.findAll(example, pageable);
        return resumes;
    }
}

测试结果:

????????① 查询document: http://localhost:8090/resume/query/document?name=李1

? ② 新增document: http://localhost:8090/resume/document/add?no=1

?③ 更新document:

??http://localhost:8090/resume/document/update?id=625533977654045b6ce01685&name=离家程

?

?

④ 删除document:

http://localhost:8090/resume/document/delete?id=625535e77654045b6ce01688

? ⑤ 分页查询document:

http://localhost:8090/resume/list/document?name=张三&currentPage=1&pageSize=10

?

总结

????????在进行分页查询的时候,需要特别注意的是,传递的分页参数的page是从0开始的,即0代表是第1页,要是不注意的话,就会造成查不到数据,或者是查询的数据不准确,需要做代码上的兼容,即:

Pageable pageable = new PageRequest(currentPage - 1, pageSize, sort);

源代码地址:springcloud-learn: 自建springcloud项目(练习) - Gitee.com

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:36:51  更:2022-04-14 23:41:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:09:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码