Spring JPA(1)

Spring JPA的好处:

  1. 首先,spring JPA在减少sql语句两的同时,也减少了学习负担,通过调用接口,传入封装的实体对象,就能创建sql语句,不用学习ORM框架。

  2. 其次,能一定程度上增加数据库的访问性能。不同的程序访问同一张表,由于Spring JPA对同一个功能实现的sql语句都是一样的,所以数据库中对该功能只会缓存一条sql语句,避免了不同的程序因sql语句不同造成的每次请求都去解析。在大量访问的情况下,能在一定程度上提高访问的性能。

Spring JPA的使用和刚接触到时踩到的坑。

@GetMapping(value = "/getData")
public Page<CourseTableBean> getData(){
    Page<CourseTableBean> page = service.getData();
    System.out.println(JSON.toJSONString(page));
    return page;
}

@Service
public class DataService {
    DataRepostory repository;
    @Autowired
    public DataService(DataRepostory repository){
        this.repository = repository;
    }
    Page<CourseTableBean> getData(){
        return repository.findAll(PageRequest.of(0,5));
    }
}
@Repository
public interface DataRepostory extends JpaRepository<CourseTableBean, String> {
@Override
@Query(value = "select * from COURSE u order by cno desc ",
countQuery = "select count(*) from COURSE", nativeQuery = true)
//当查询方法里用到了Pageable时,返回的结果必须是Page,当//查询方法里没有Pageable时,返回的结果一定不能用Page修
//饰
    public Page<CourseTableBean> findAll(Pageable page);
}

@Entity
@Table(name = "COURSE")
public class CourseTableBean implements Serializable {
    @Id
    @Column(name="cno")
    private String cno;
    @Column(name = "cname")
    private String cName;
    @Column(name = "tno")
    private String tno;
    @Column(name = "c_number")
    private int cNumber;
    public String getCno() {
        return cno;
    }
    public void setCno(String cno) {
        this.cno = cno;
    }
    public String getCname() {
        return cName;
    }
    public void setCname(String cName) {
        this.cName = cName;
    }
    public String getTno() {
        return tno;
    }
    public void setTno(String tno) {
        this.tno = tno;
    }
    public int getCnumber() {
        return cNumber;
    }
    public void setCnumber(int cNumber) {
        this.cNumber = cNumber;
    }
}

//页数默认是从0开始的,参数只能是基本类型。不能是封装的entity对象
public Page findByCno( String cno, Pageable pageable);
public Page findByCNumber(int number, Pageable pageable);
public Page findByCName(String cname, Pageable pageable);

@Query注解属性
value 写查找的sql语句
countQuery 当使用页数时写的查询全部页数的sql语句
nativeQuery 使用原生的sql语句,不同的数据库sql语句格式不一样,当写自己的sql时赋值为true.

菜鸟得每天学习一点点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值