在JPA模块没有注入之前,IDEA的左边没有Persistence的图标的。
第一步:Project Structure 添加 JPA 模块
添加JPA模块之后,左下角的Persistence图标就出来了
第二步:根据数据库结构生成对应的实体类
选择By DataBase Schema;
Choose Data Source:选择Database模块创建的数据库连接
Enetiy prefix:实体类名前缀
Package:根据数据库结构所产生的实体类的包名
Entity suffix:实体类名后缀
以上4条设置好后,勾选要从数据库表结构创建的表,点击OK就会将实体写入对应的目录中。
如上图所示,勾选了几张表将实体生成在了base.entity目录中。
相比普通的实体类,由JPA生成的实体类有这些变化:
1.类名上面添加了
@Entity
@Table(name = "news_info", schema = "hbeunews", catalog = "")
2.属性名上面添加了
@Id
@Basic
@Column(name = "UIDS", nullable = false, length = 32)
第三步:创建实体类对应的Repository接口
public interface NewsInfoEntityRepository extends JpaRepository<NewsInfoEntity,String>, JpaSpecificationExecutor<NewsInfoEntity> {
}
定义接口,继承JpaRepository<实体类名,主键类型>,JpaSpecificationExecutor<实体类名>
至于为什么要继承这两个是因为它们里面有findOne()这种依靠entityManager来对数据库做持久化的方法,具体的自己深入去看。
第四步:引入Spring-data-jpa的maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
不引入的话注入Repository的时候会报错
以上就是全部,用法的话。在Service层注入一个Repository,用这个进行crud就可以不用写繁琐的SQL语句了。
//注入Repository
@Autowired
NewsInfoEntityRepository newsInfoEntityRepository;
//查询所有newsInfo
newsInfoEntityRepository.findAll();