JPA基本使用

文章目录[隐藏]

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注解分别表示支持事务管理和支持数据修改。

上述代码即实现了对数据进行删除,修改和查询的操作。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值