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":"[email protected]"},{"id":2,"name":"haha","email":"121"},{"id":3,"name":null,"email":"wewsdsdfs"}]  
    4.  

猜你喜欢

转载自www.cnblogs.com/qinda/p/10965178.html