原生sql与jpql比较

基于数据库与基于对象的比较

1
2
3
    //@Query(value = "select count (*) from tb_friend where userid=?1 and  friendid=?2",nativeQuery = true)
    @Query(value = "select count(f) from Friend f where f.userid = ?1 and f.friendid = ?2")
    int findFriendCount(String userid,String friendid);

上面这两个sql一个使用原生sql,一个使用了jpql语句,原生sql基于数据库表来进行查询,这样要根据条件计算总记录数,那么数据库必须要有值,不然就会报错,比如两个条件找不到

而jpql的好处呢!他是基于对象的,虽然数据库里没有值,他在根据一个没有的值,来进行计算总数的时候,不会报错,因为我们在代码运行的时候,把值比如,userid,friendid传过去了,不会报找不到条件而报错