项目结构
一、添加Spring Data JPA依赖启动器
另外,添加MySQL数据库依赖
<!--spring data jpa依赖启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--MySql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
二、编写ORM实体类
package com.uos.jpa.entity;
import javax.persistence.*;
@Entity(name = "t_comment")
public class Discuss {
@Id //表明映射对应的主键id
@GeneratedValue(strategy = GenerationType.IDENTITY) //设置主键自增策略
private Integer id;
private String content;
private String author;
@Column(name = "a_id") //指定映射的表字段名
private Integer aId;
@Override
public String toString() {
return "Discuss{" +
"id=" + id +
", content='" + content + '\'' +
", author='" + author + '\'' +
", aId=" + aId +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Integer getaId() {
return aId;
}
public void setaId(Integer aId) {
this.aId = aId;
}
}
Discuss
三、编写Repository接口
package com.uos.jpa.repository;
import com.uos.jpa.entity.Discuss;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import javax.transaction.Transactional;
import java.awt.print.Pageable;
import java.util.List;
public interface DiscussRepository extends JpaRepository<Discuss,Integer> {
// 1.查询author非空的Discuss评论集合
public List<Discuss> findByAuthorNotNull();
// 2.根据文章id分页查询Discuss评论集合
@Query("SELECT c FROM t_comment c WHERE c.aId = ?1")
public List<Discuss> getDiscussPaged(Integer aid, Pageable pageable);
// 3.使用元素SQL语句,根据文章id分页查询Discuss评论集合
@Query(value = "SELECT * FROM t_comment WHERE a_Id = ?1",nativeQuery = true)
public List<Discuss> getDiscussPaged2(Integer aid,Pageable pageable);
// 4.根据评论id修改评论作者author
@Transactional
@Modifying
@Query("UPDATE t_comment c SET c.author = ?1 WHERE c.id = ?2")
public int updateDiscuss(String author,Integer id);
// 5.根据评论id删除评论
@Transactional
@Modifying
@Query("DELETE t_comment c WHERE c.id = ?1")
public int deleteDiscuss(Integer id);
}
DiscussRepository
四、全局文件配置application.properties
spring.datasource.url=jdbc:mysql://192.168.152.120:3306/springbootdata?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1
application.properties
五、编写单元测试进行接口方法测试
package com.uos.jpa;
import com.uos.jpa.entity.Discuss;
import com.uos.jpa.repository.DiscussRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class JpaApplicationTests {
@Autowired
private DiscussRepository repository;
@Test
public void selectCommentByKeys() {
List<Discuss> list = repository.findByAuthorNotNull();
System.out.println(list); }
@Test
void contextLoads() {
}
}
JpaApplicationTests
运行结果
使用debug模式调试