限制查询结果数量
top和first关键字
@Repository // 创建数据库操作接口
public interface UserRepository extends JpaRepository<User, Integer> {
//限制结果数量
List<User> findFirst10ById(Integer id);//查询符合结果的前10条
List<User> findTop20ById(Integer id);//查询符合结果的前30条
}
JPA使用@NameQuery查询
在Entity定义查询方法,在Dao层增加方法,在Controller层应用方法
- 修改实体 在@Entity下增加@NamedQuery的定义(sql表达式里面的表名要和当前的Entity一致)
- 修改Repository增加方法
- 在Controller中调用,Spring会先找是否有同名的方法,如果有就不会按照接口定义的方法来解析。
@Entity
@Table(name = "usetable")
@NamedQuery(name = "findallUser",query="SELECT c FROM User")
@NamedQueries({
@NamedQuery(name = "findUserWithId",query = "SELECT c FROM User c WHERE c.id=?1")
})
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String lastname;
private String password;
//省去get和set方法
}
import java.util.List;
import java.util.Optional;
import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository // 创建数据库操作接口
public interface UserRepository extends JpaRepository<User, Integer> {
//自定义查询
public List<User> findUserWithId(Integer id);
}
}
分页查询
@Repository // 创建数据库操作接口
public interface UserRepository extends JpaRepository<User, Integer> {
//分页查询
Page<User> findByIdLessThan(Integer id,int thepage);
}
@Controller //声明此类为控制器
@RequestMapping(value = "/theuser") //映射此类的访问路径
public class UserController {
@Autowired
private UserRepository userRepository;
@RequestMapping(value = "/testpage")
@ResponseBody
public String TestPageSearch(){
int thepage = 3;
userRepository. findByIdLessThan(30,thepage);
return "success";
}
}
使用@Query来指定本地查询
@Query(value="select * from usertable where id like %?1" ,nativeQuery=true)
public List<UserModel> findByUserid(Integer id);