• SpringBoot学习(三)IDEA


    一、什么是JPA

      JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。

    二、Mysql数据库示例

      1、在application.yml文件中增加数据库访问的配置

    spring:
      profiles:
        active: dev
    datasource: 
      driver-class-name: com.mysql.jdbc.Driver
      url:  jdbc:mysql://localhost:3306/test
      username:
      password:
    jpa:
      hibernate:
        ddl-auto: update
      show-sql: true
    

      ddl-auto:可选属性有以下几种。

           create   每次创建一个新表,那么之前表中的数据都会丢掉

      update  表不存在的时候才会建立新表,如果存在则不会新建,所以原有数据不会丢

      create-drop  每次新建一个表,而且服务停掉,那么所建立的表会随之删除

      none   见名知意,就是什么都不做,不会给帮你建表,只能使用现有的表

      validate  会将实体类和表进行一个验证,如果不一致会报错

    2、新建实体类

    package com.demo.demoweb.entity;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    @Entity
    public class Dog {
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        //    如果这些注解所在的包,javax.persistence不能导入。可能是缺少依赖
        //    可以在pom中加入Javax Persistence API 的依赖
        @Id
        @GeneratedValue
        private Integer id;//编号
        private Integer age;//年龄
        private String name;//名字
    
        public Dog() {
    
        }
    
        public Dog(Integer id, Integer age, String name) {
            this.id = id;
            this.age = age;
            this.name = name;
        }
    }
    

      

    3、编写Repository接口类

        这里需要继承JpaRepository这个类,这样我们就可以使用底层帮我们实现好的一些代码

        相当于我们之前了解到的持久层(数据访问层),用于获取数据库中的数据。

        

                   基础的 Repository 提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。它们的继承关系如下: 
                   Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类 
                   (1) CrudRepository: 继承 Repository,实现了一组 CRUD 相关的方法 
                  (2)PagingAndSortingRepository: 继承 CrudRepository,实现了一组分页排序相关的方法 
                  (3)JpaRepository: 继承 PagingAndSortingRepository,实现一组 JPA 规范相关的方法

                     自定义的 XxxxRepository 需要继承 JpaRepository,这样的 XxxxRepository 接口就具备了通用的数据访问控制层的能力。

          JpaSpecificationExecutor: 不属于Repository体系,实现一组 JPA Criteria 查询相关的方法 。

                 首先需要导入JpaRepository 的maven文件:

          

    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <version>2.1.1.RELEASE</version>
            </dependency>
    

      

                     

    4、编写Serivce层

        按照策略模式,我们应当一个接口,然后对应实现类。由于这里业务比较简单,我们就不那么费事了。可能这层我在下面都不写。

    5、编写Controller层

        根据访问信息,进行相应的业务处理,页面展示。

    三、RestFul API

      1、查询所有,findAll()方法的使用。GET请求

        Repository接口类

    package com.demo.demoweb.repository;
    
    import com.demo.demoweb.entity.Dog;
    import org.springframework.data.jpa.repository.JpaRepository;
    
    /**
     * 这个接口需要继承一个接口JpaRepository
     * 这样就可以使用底层为我们编写好的一些通用方法
     */
    public interface DogRepository extends JpaRepository<Dog,Integer> {
    }
    

      Controller层:

             

  • 相关阅读:
    微博二级评论爬取
    爬取genome的网页和图片
    一个数据结构转换的问题
    SQLAlchemy ORM教程之二:Query
    SQLAlchemy中filter()和filter_by()有什么区别
    词云加显示条形图
    智联招聘的python岗位数据词云制作
    Python标准库——collections模块的Counter类
    MySQL5.6 windows msi安装介绍
    ICSharpCode.SharpZipLib.Zip
  • 原文地址:https://www.cnblogs.com/dangkai/p/10246739.html
Copyright © 2020-2023  润新知