Springboot整合SpringDataJpa入門篇(一)


    • spring-data-Jpa簡介                                                                                                                                                                                                                                                                                          首先我們已經知道JPA(Java Persistence  API),中文名是Java 持久層 Api,是JDK 5.0注解或XML描述對象-關系表的映射關系,並將運行期的實體對象持久化到數據庫中。它的誕生是為了整合第三方ORM框架,建立統一的標准。ORM框架中最著名的就是Hibernate,在mybaits沒有流行之前,Hibernate是程序員最喜歡用的持久層框架之一,功能也非常強大。而事實上,Jpa的實現都是用Hibernate做的。spring-data-jpa又是什么呢?從名字就可以看出是spring和JPA的整合。使用spring-data-jpa最大的好處在於,我們在進行開發的過程中,常用的功能,我們幾乎不需要寫一條sql語句。下面開始介紹springdatajpa的使用方法:
    • spring-data-Jpa
    1. 在pom文件中引入依賴
        <!--springdatajpa依賴-->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-data-jpa</artifactId>
                  <version>2.1.3.RELEASE</version>
              </dependency>
              <!--mysql 依賴-->
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <scope>runtime</scope>
              </dependency>  
    2. 在application.properties中加入連接數據庫的條件,我這里使用的是MySQL。
      server.port=8081
      spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
      spring.datasource.username=root
      spring.datasource.password=123456
      spring.datasource.driver-class-name=com.mysql.jdbc.Driver
      
      #配置自動建表
      spring.jpa.hibernate.ddl-auto=update
      spring.jpa.show-sql=true
      

        

    3. 接下來是寫持久層的代碼,很簡單只有實現JpaRepository接口就可以實現基本的查詢功能,其中Student是實體類,Integer是主鍵的類型
      public interface StudentRepository extends JpaRepository<Student,Integer> {
          
      }
      

      Student.java的代碼。@Entitry表示該類是實體類,@Table在MySQL創建的表名,項目一啟動就會自動創建,@Data需要引入lombok,這里我是為了方便,可以不用寫get/set方法。

      @Data
      @Entity 
      @Table(name = "tb_student")
      @Component
      public class Student {
          @Id
          @GeneratedValue(strategy = GenerationType.AUTO)
          private Integer id ;
          @Column(name = "name",length = 50)
          private String name;
          @Column(name = "email",length = 100)
          private String email;
      }  

       controller層代碼,我是跳過了業務層直接跳持久層了,當然實際開發是不會這樣的。

      @RestController
      public class StudentController {
          @Autowired
          StudentRepository studentRepository;
           @Autowired
           Student student;
      
          @RequestMapping("/getAll")
          public List<Student> queryStudent(){
              List<Student> list  = new ArrayList<>();
              list = studentRepository.findAll();
              return list  ;
      
          }
           @RequestMapping("/getByID")
          public Optional<Student> queryStudentbyid() {
              List<Student> list = new ArrayList<>();
              Optional<Student> student= studentRepository.findById(1);
              return student;
          }
          
          @RequestMapping("/add")
         public Student addStudent(){
              student.setId(121111);
              student.setEmail("wewsdsdfs");
              student = studentRepository.save(student);
               return student;
         }
         
      }
      

        在瀏覽器訪問的結果

      "id":1,"name":"qinda","email":"1214111520@qq.com"},{"id":2,"name":"haha","email":"121"},{"id":3,"name":null,"email":"wewsdsdfs"}]  
    4.  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM