JPA:Java Persistence API:用于对象持久化 API
Java应用程序根据每个持久化框架的调用方式不同,需要写不同的调用实现。
而JPA可以做到 Java应用程序只需要遵守JPA规范就可以实现与各个持久层框架的结合使用而该规范的具体实现交由各个ORM框架提供,并不需要根据不同的框架写不同的实现。面向JPA编程即可。
@Entity : 标注当前类为持久化层的实体类
@Table(name = "user_info") :标注当前实体类对应的数据库的“数据表的名称”
@Id:标注当前属性为主键字段
@GeneratedValue(strategy = GenerationType.IDENTITY):标注当前主键的生成方式为数据库自动增长
@Column(name = "user_id") :标注当前属性对应的“数据表中的字段名称”
//标注当前类为持久化层的实体类:该类型的对象,可以进行ORM操作
@Entity
//标注当前实体类对应的数据库的“数据表的名称”
@Table(name = "user_info")
public class User {
@Id //标注当前属性为主键字段
//标注当前主键的生成方式为数据库自动增长
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id") //标注当前属性对应的“数据表中的字段名称”
private Integer userId;
//标注当前属性对应的“数据表中的字段名称”
@Column(name = "login_phone_number")
private String loginPhoneNumber;
@Column(name = "user_real_name")
private String userRealName;
@Column(name = "last_login_time")
private Date lastLoginDateTime;
//get set toString 方法省略
}
数据访问层需继承org.springframework.data.jpa.repository包下的JpaRepository接口,该接口是泛型接口JpaRepository<T, ID>,T是数据库表对应的实体类名,ID是主键名。
/**
* 用户数据访问层接口
* 1.该接口需继承JpaRepository接口
* 2.继承接口时,需要通过泛型指定进行数据持久化操作时,所对应的Entity实体类+主键类型
*/
@Repository
public interface IUserDAO extends JpaRepository<User,Integer> {
//方法命名要规范
//根据手机号码精准查询
List<User> findUsersByLoginPhoneNumber(String phoneNumber);
//根据手机号码模糊查询
List<User> findUsersByLoginPhoneNumberLike(String phoneNumber);
}