SpringDataJPA入门使用 -——- 看了就懂

SpringDataJPA入门使用

  • 首先新建一个SpringBooot项目,参看博文搭建SpringBoot项目入门

  • 在pom.xml中引入依赖:

		
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-jpaartifactId>
        dependency>
        
         
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.16version>
        dependency>

        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.6version>
            <scope>providedscope>
        dependency>
        
		
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
  • 配置数据库连接,这里新建一个application.yml 效果和application.properties 文件效果一样,但是显示比较清晰:

#数据连接配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
#jpa设置,注意是在spring等级下,yml文件格式很严格
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
#端口配置
server:
  port: 8181
  • 接下来测试一下:

    • 分别新建controller / entity / repository / service 这几个包
    • 再分别建StudentController / Student / StudentRepository / StudentService(与上面包一 一对应路径下)
    • 新建一个数据库名为 test ,数据库中有个 tb_student 表
    完整目录:

SpringDataJPA入门使用 -——- 看了就懂_第1张图片

  • controller内容:
@RestController
public class StudentController {

    @Autowired
    StudentService studentService;

    @RequestMapping("/findStudent/{id}")
    public Student findById(@PathVariable("id") Long id) {
        return studentService.findById(id);
    }

    @RequestMapping("/findLikeStudent/{name}")
    public List<Student> findLikeStudent(@PathVariable("name") String name) {
        List<Student> likeStudents = studentService.findLikeStudents(name);
        return likeStudents;
    }

    @RequestMapping("/findStudentByid/{id}")
    public List<Student> findStudentById(@PathVariable("id") Long id) {
        return studentService.findStudentById(id);
    }
}
  • service 内容:
@Service
public class StudentService {

    @Autowired
    StudentRepository studentRepository;

    public Student findById(Long id) {
        return studentRepository.findById(id).orElse(null);
    }

    public List<Student> findLikeStudents(String name) {
        List<Student> likeStudents = studentRepository.findLikeStudents(name);
        return likeStudents;
    }

    public List<Student> findStudentById(Long id){
        return studentRepository.findStudentById(id);
    }
}
注解需要: @Service
  • Repository 内容:
public interface StudentRepository extends JpaRepository<Student,Long> {

    @Query(nativeQuery = true,value ="update tb_student s set a.name = :#{student.name}, a.age = :#{student.age}")
    int updateStudent(Student student);

    @Query(nativeQuery = true,value = "delete from tb_student s where s.id = :id")
    int deleteStudent(Long id);

    @Query(nativeQuery = true,value = "delete from tb_student s where s.id = ?1")
    int deleteStudentById(Long id);

    /**模糊查询*/
    @Query(nativeQuery = true,value ="select id,age,name from tb_student s where name like %:name% ")
    List<Student> findLikeStudents(@Param("name") String name);

    @Query(nativeQuery = true,value = "select * from tb_student s where s.id = ?1")
    List<Student> findStudentById(@Param("id") Long id);
}
具体sql语句小例子可以参考 日常问题汇总杂烩 中 第一个案例
  • Entity 内容:
@Data
@Entity
@Table(name = "tb_student")
public class Student {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "id", length = 32)
    private Long id;

    @Column(name = "name", length = 50)
    private String name;

    @Column(name = "age", length = 3)
    private Integer age;

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
注解需要:
  • @Data:引入lombok依赖 ,此注解用于自动生成get / set方法
  • @Entity:在容器中表明这是一个entity
  • @Table:其中有个name属性,指明关联数据库中的那张表,不写默认为类名
  • @Id:指明该属性为表中字段的主键,如果主键是自增长的还得增加一个注解@GeneratedValue,这个注解里面有个属性strategy,这个属性提供四种值:
    • AUTO: 主键由程序控制,是默认选项,不设置即此项。
    • IDENTITY:主键由数据库自动生成,即采用数据库ID自增长的方式,Oracle不支持这种方式。
    • SEQUENCE:通过数据库的序列产生主键,通过@SequenceGenerator 注解指定序列名,mysql不支持这种方式。
    • TABLE:通过特定的数据库表产生主键,使用该策略可以使应用更易于数据库移植。
  • @Column:与表中的列名映射,可以限制长度

以上配置完成后就可以启动测试了

  • 访问localhost:8181/findStudent/1 :

SpringDataJPA入门使用 -——- 看了就懂_第2张图片

请求成功 , 你们也可以自己多写几种sql语句测试一下

以上就是在SpringBoot中集成JPA的入门使用,欢迎参考交流…

你可能感兴趣的:(#,spring)