springboot jpa 单表操作


springboot jpa 单表操作

 

*************************

相关类与接口

 

基础接口

public interface Repository <T, ID>

public interface CrudRepository<T, ID> extends Repository<T, ID>

public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID>

public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>,
 QueryByExampleExecutor<T>

public interface JpaSpecificationExecutor<T>
              

 使用说明:单表操作继承JpaRepository接口即可,如需动态查询可在此基础上继承JpaSpecificationExecutor

 

Sort:排序

public class Sort implements Streamable<Sort.Order>, Serializable

    public static Sort by(Sort.Direction direction, String... properties)
    public static Sort by(Sort.Direction direction, String... properties)

    public Sort and(Sort sort)

    public Sort ascending()
    public Sort descending()


**********
内部枚举:Sort.Direction

    public static enum Direction {
        ASC,
        DESC;

        private Direction() {
        }

        public boolean isAscending() {
        public boolean isDescending() {


        public static Sort.Direction fromString(String value) {
        public static Optional<Sort.Direction> fromOptionalString(String value) {

 

PageRequest:分页

public class PageRequest extends AbstractPageRequest {
    private static final long serialVersionUID = -4541509938956089562L;
    private final Sort sort;

    protected PageRequest(int page, int size, Sort sort) {


    public static PageRequest of(int page, int size) {
    public static PageRequest of(int page, int size, Sort sort) {
    public static PageRequest of(int page, int size, Direction direction, String... properties) {


    public Sort getSort() {

    public Pageable next() {
    public PageRequest previous() {
    public Pageable first() {


    public boolean equals(@Nullable Object obj) {
    public int hashCode() {
    public String toString() {

 

Pageable

public interface Pageable {

    int getPageNumber();
    int getPageSize();
    long getOffset();
    Sort getSort();

    Pageable first();
    Pageable next();
    Pageable previousOrFirst();

    boolean hasPrevious();

    static Pageable unpaged() {
        return Unpaged.INSTANCE;
    }

    default boolean isPaged() {
        return true;
    }

    default boolean isUnpaged() {
        return !this.isPaged();
    }

    default Sort getSortOr(Sort sort) {
        Assert.notNull(sort, "Fallback Sort must not be null!");
        return this.getSort().isSorted() ? this.getSort() : sort;
    }

    default Optional<Pageable> toOptional() {
        return this.isUnpaged() ? Optional.empty() : Optional.of(this);
    }
}

 

 

*************************

使用示例

 

**************

dao

 

UserRepository

public interface UserRepository extends JpaRepository<User,Integer> {

    User findUsersByName(String name);
    List<User> findUsersByAge(Integer age);

    Integer countDistinctByAge(Integer age);

    Integer deleteByName(String name);
    Integer deleteByAge(Integer age);
}

说明:自定义的delete方法需要在Transactional中使用,不然会报错

 

**************

service层

 

UserService

public interface UserService {

    Integer deleteByName(String name);
    Integer deleteByAge(Integer age);
}

 

**************

serviceImpl 层

 

UserServiceImpl

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    @Transactional
    public Integer deleteByName(String name) {
        return userRepository.deleteByName(name);
    }

    @Override
    @Transactional
    public Integer deleteByAge(Integer age) {
        return userRepository.deleteByAge(age);
    }
}

 

**************

controller层

 

UserController

@RestController
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private UserService userService;

    @RequestMapping("/save")
    public String save(){

        for(int i=0;i<100;i++){
            User user=new User();
            user.setName("瓜田李下"+i);
            user.setAge(i);
            userRepository.save(user);
        }

        return "success";
    }

    @RequestMapping("/delete")
    public String delete(){
        userRepository.deleteByName("瓜田李下"+2);

        return "success";
    }

    @RequestMapping("/delete2")
    public Integer delete2(){
        return userRepository.deleteByAge(23);

    }

    @RequestMapping("/delete3")
    public void delete3(){
        userRepository.deleteById(5);
    }


    @RequestMapping("/findByPage")
    public List<User> find(){
                //测试分页

        PageRequest pageRequest=PageRequest.of(0,10);
        Page<User> page=userRepository.findAll(pageRequest);
        return page.getContent();
    }

    @RequestMapping("/sort")
    public List<User> sort(){
               //测试分页、排序

        Sort sort=Sort.by(Sort.Direction.ASC,"age");
        Page<User> page=userRepository.findAll(PageRequest.of(0,10,sort));
        return page.getContent();
    }
}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值