我们可以直接创建一个类,比如用户类,我们只需要把一个账号对应的属性全部定义好即可:

@Data
public class Account {
    int id;
    String username;
    String password;
}

接着,我们可以通过注解形式,在属性上添加数据库映射关系,这样就能够让JPA知道我们的实体类对应的数据库表长啥样,这里用到了很多注解:

@Data
@Entity   //表示这个类是一个实体类
@Table(name = "account")    //对应的数据库中表名称
public class Account {
 
    @GeneratedValue(strategy = GenerationType.IDENTITY)   //生成策略,这里配置为自增
    @Column(name = "id")    //对应表中id这一列
    @Id     //此属性为主键
    int id;
 
    @Column(name = "username")   //对应表中username这一列
    String username;
 
    @Column(name = "password")   //对应表中password这一列
    String password;
}

接着我们来修改一下配置文件,把日志打印给打开配置JPA日志

使用时需要先创建一个Repository实现类:

@Repository
public interface AccountRepository extends JpaRepository<Account, Integer> {
}

注意JpaRepository有两个泛型,前者是具体操作的对象实体,也就是对应的表,后者是ID的类型,接口中已经定义了比较常用的数据库操作。

编写接口继承即可,我们可以直接注入此接口获得实现。

插入

@Resource
AccountRepository repository;
 
@Test
void contextLoads() {
    Account account = new Account();
    account.setUsername("小红");
    account.setPassword("1234567");
    System.out.println(repository.save(account).getId());   //使用save来快速插入数据,并且会返回插入的对象,如果存在自增ID,对象的自增id属性会自动被赋值,这就很方便了
}

查找

同时,查询操作也很方便:

@Test
void contextLoads() {
  	//默认通过通过ID查找的方法,并且返回的结果是Optional包装的对象,非常人性化
    repository.findById(1).ifPresent(System.out::println);
}