SpringBoot之整合JPA(基础入门)


前言

入门 , 单看这一篇连门都入不了… 只用作介绍基本操作和基本概念

(其实是我又懒又笨还没开学 )

JPA是JavaEE规范 , 对持久化操作 进行 标准化 .

举个栗子 : 美国在工业革命时期, 大力推广标准化零件(标准件之父惠特尼) , 其革命性影响在于提高了工业产品的整体质量.

JPA也类似 , 它提供的标准化API大大简化了开发流程

ORM : 打开对象与持久化层的大门 : 写过关于ORM的概念,这里直接传送ORM概念


提示:以下是本篇文章正文内容,下面案例可供参考

一、SpringBoot 整合SpringData JPA

1.创建实体类和数据表进行映射,配置好映射关系

如果出错了,建议重建项目

下面我将以User类作为实体类

代码如下(示例):

@Entity
@Table(name = "tbl_user")
public class User {
    
    

    @Id //这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
    private Integer id;

    @Column(name = "last_name",length = 50) //这是和数据表对应的一个列
    private String lastName;
    @Column //省略默认列名就是属性名
    private String email;
	
	getter & setter省略
	
}

讲几个注意点 :

  1. 导包问题 : 我们需要导入的是import javax.persistence.*;
  2. 主键自增 : 这句注解需要你记住@GeneratedValue(strategy = GenerationType.IDENTITY)
  3. 主键需要打上@Id注解,其余的打@Column 注解
  4. 必须打上@Entity注解,否则容器找不到实体类的位置

2.Dao层

也就是repository包下的接口

代码如下(示例):

public interface UserRepository extends JpaRepository<User,Integer> {
    
    
}

上面的接口 , 我们能看到继承了JpaRepository接口 , 而该接口又是一系列继承关系的最后一层 , 通过查看源码我们能发现 , 在这里插入图片描述
尖括号内的第一个参数是一个泛型 , 也就是我们传入的要映射成数据库表的实体类, 第二个参数ID指的是实体类对象的主键

3.配置基本的JPA

这里的JPA配置不全面 , 只能用作基本使用

spring:
  datasource:
    url: jdbc:mysql://主机名或localhost/数据库名
    username: root
    password: 自己设置的密码
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
    #     更新或者创建数据表结构(这样我们才能创建数据库表)
      ddl-auto: update
    #    控制台显示SQL
    show-sql: true

在这里插入图片描述
这是输出的SQL语句


二、增删改查

还是做简单介绍吧, 毕竟自己也没真的深入了解,只能看视频了解了

1.查

	@GetMapping("/user/{id}")
    public User getUser(@PathVariable("id") Integer id){
    
    
        User user = userRepository.getOne(id);
        System.out.println(user.getId());
        return user;
    }

如果出现No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor
报错 , 则需要的实体类上打上@JsonIgnoreProperties(value = { "hibernateLazyInitializer"}) 注解即可解决问题

2.增

	@GetMapping("/user")
    public Integer insertUser(User user){
    
    
        User result = userRepository.save(user);
        return 1;
    }

3.删

	@DeleteMapping("/deluser/{id}")
    public Integer deleteUser(@PathVariable("id") Integer id){
    
    
        userRepository.deleteById(id);
        return 1;
    }

注 : insert操作不应该使用PostMapping吗 ,为什么这里用了@GetMapping?
因为实验中没有给出HTML表单, 所以我们只能通过浏览器地址栏传输数据,因此只能使用GetMapping

猜你喜欢

转载自blog.csdn.net/qq_45596525/article/details/109255123
今日推荐