SpringJPA构建服务应用Demo
  JMz8bAJYIKmC 2023年12月10日 15 0


🎈个人公众号:🎈 :✨✨ 可为编程 ✨✨ 🍟🍟
🔑个人信条:🔑知足知不足 有为有不为 为与不为皆为可为🌵
🍉本篇简介:🍉 本片详细说明了SpringJPA构建服务应用Demo使用规则和注意要点,并给出具体操作实例,如有出入还望指正。

关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!!

Spring Data JPA构建Restful服务应用Demo

昨天介绍了什么是Rest和Restful,没有看到的同学可以参考我的这篇文章:深入理解REST与RESTfulAPI 那么说了这么多咱就实战一把,如何用SpringBoot来实现Rest,只需要Spring DataJPA和Spring Data Rest两个依赖包,快速开发一个restful应用。

创建项目

pom.xml

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

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.9</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

创建完成后就可以在数据库properties文件中进行数据库的配置,数据库的配置和之前文章中讲的配置是一样的,大家可以参考一下我的这篇文章。包括其中的实体这两篇文章也是相同的
解读SpringBoot整合持久层技术之搭建并整合Spring Data JPA项目实战

数据库

SpringJPA构建服务应用Demo_java

创建BookRespository

这里和之前文章中讲到的整合JPA中的mapper类是相同的,这里可以什么内容都不写,只继承JpaRespository就可以实现对数据的增删改查操作,代码如下:
关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!!

public interface BookDao extends JpaRepository<Book,Integer> {}

有人会说了,这样就可以了吗?给你看一下jpaRepository的源码,我也是第一次看哈

@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
    List<T> findAll();

    List<T> findAll(Sort var1);

    List<T> findAllById(Iterable<ID> var1);

    <S extends T> List<S> saveAll(Iterable<S> var1);

    void flush();

    <S extends T> S saveAndFlush(S var1);

    void deleteInBatch(Iterable<T> var1);

    void deleteAllInBatch();

    T getOne(ID var1);

    <S extends T> List<S> findAll(Example<S> var1);

    <S extends T> List<S> findAll(Example<S> var1, Sort var2);
}

经过上面几步我们就可以运行测试了,这里我们选择postMan来进行测试,这样看起来比较直观。

测试

RESTful服务创建成功之后,默认的请求路径是实体类名小写再加上后缀。
在测试的时候一定要以json的格式进行数据的交互,post默认的request请求形式是以test的形式,所以我们要改成application/json的形式,否则就会报错:

org.springframework.http.converter.HttpMessageNotReadableException异常

SpringJPA构建服务应用Demo_java_02


改完之后就可以在body处进行json数据形式的编写

关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!!

SpringJPA构建服务应用Demo_jpa_03


返回的结果如下:

{
  "name": "SpringBoot开发实战",
  "author": "我",
  "price": 20.0,
  "description": "good",
  "_links": {
    "self": {
      "href": "http://localhost:8080/books/36"
    },
    "book": {
      "href": "http://localhost:8080/books/36"
    }
  }
}

表示成功增加一条数据信息,然后我们测试一下查询,查询就是把提交形式改成GET。

{
  "_embedded": {
    "books": [
      {
        "name": "呐喊",
        "author": "鲁迅",
        "price": 23.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/1"
          },
          "book": {
            "href": "http://localhost:8080/books/1"
          }
        }
      },
      {
        "name": "朝花夕拾",
        "author": "鲁迅1",
        "price": 24.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/2"
          },
          "book": {
            "href": "http://localhost:8080/books/2"
          }
        }
      },
      {
        "name": "简单生活学",
        "author": "鲁迅2",
        "price": 30.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/3"
          },
          "book": {
            "href": "http://localhost:8080/books/3"
          }
        }
      },
      {
        "name": "XML基础与案例教程",
        "author": "鲁迅3",
        "price": 31.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/4"
          },
          "book": {
            "href": "http://localhost:8080/books/4"
          }
        }
      },
      {
        "name": "物联网之源",
        "author": "鲁迅4",
        "price": 44.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/5"
          },
          "book": {
            "href": "http://localhost:8080/books/5"
          }
        }
      }, **关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!!**
      {
        "name": "狂人日记",
        "author": "鲁迅",
        "price": 23.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/27"
          },
          "book": {
            "href": "http://localhost:8080/books/27"
          }
        }
      },
      {
        "name": "其他书籍",
        "author": "张闲闲",
        "price": null,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/29"
          },
          "book": {
            "href": "http://localhost:8080/books/29"
          }
        }
      },
      {
        "name": "java开发程序设计",
        "author": "张闲闲",
        "price": 80.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/32"
          },
          "book": {
            "href": "http://localhost:8080/books/32"
          }
        }
      },
      {
        "name": "狂人日记",
        "author": "鲁迅",
        "price": 23.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/33"
          },
          "book": {
            "href": "http://localhost:8080/books/33"
          }
        }
      },
      {
        "name": "SpringBoot开发实战",
        "author": "我",
        "price": 20.0,
        "description": null,
        "_links": {
          "self": {
            "href": "http://localhost:8080/books/36"
          },
          "book": {
            "href": "http://localhost:8080/books/36"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "http://localhost:8080/books"
    },
    "profile": {
      "href": "http://localhost:8080/profile/books"
    },
    "search": {
      "href": "http://localhost:8080/books/search"
    }
  },
  "page": {
    "size": 20,
    "totalElements": 10,
    "totalPages": 1,
    "number": 0
  }
}

会为我们自动返回一个paga信息,如果按照id来查询,在请求路径后面加上id就可以。如果是修改的话就把请求改成PUT形式,修改单条的话就在路径后面加上id,删除的话就是DELETE请求,搭建起来试试把,这里我就不再进行测试了。

欢迎大家关注【可为编程】,成长,进步,编程,技术、掌握更多知识!

SpringJPA构建服务应用Demo_restful_04



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月10日 0

暂无评论

推荐阅读
JMz8bAJYIKmC