1.编写ORM实体类
ORM指的是Object Relational Mapping,对象/关系映射
@Data
@Entity(name = "t_comment") // 设置ORM实体类,并指定映射的表名
public class Discuss {
@Id // 表明映射对应的主键id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 设置主键自增策略
/*
其中:
TABLE:使用一个特定的数据库表格来保存主键.
SEQUENCE:不支持主键自增长的数据库主键生成策略.
IDENTITY:主键自增
AUTO:JPA自主选择,是默认选项
*/
private Integer id;
private String content;
private String author;
@Column(name = "a_id") //指定映射的表字段名,当类属性与表字段名不一致时使用
private Integer aId;
}
编写Repository接口
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评论集合
//有nativeQuery = true时,是可以执行原生sql语句,所谓原生sql,也就是说这段sql拷贝到数据库中,然后把参数值给一下就能运行了
//没有nativeQuery = true时,就不是原生sql,而其中的select * from xxx中xxx也不是数据库对应的真正的表名,而是对应的实体名,并且sql中的字段名也不是数据库中真正的字段名,而是实体的字段名
@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);
}
其中,@Transactional和@Modifying注解分别表示支持事务管理和支持数据修改。
上述代码即实现了对数据进行删除,修改和查询的操作。