Spring Data 相关(一)

1.JpaRepository或MongoRepository继承于CrudRepository,CrudRepository继承于Repository

2.PagingAndSortingRepository继承CrudRepository

3.

//ID是entity类T中ID的数据类型
public interface TestJpa extends JpaRepository<T,ID> {
}

4.Spring Data 的分页查询

 分页从0开始

//Dao层
@Repository
public interface TestData extends PagingAndSortingRepository<SysUser,String> {

}
//controller层
    @ResponseBody
    public void test19(){
        Page<SysUser>  users=testData.findAll(PageRequest.of(1,10));
    }

5.Spring Data 查询方法

entity:

import javax.persistence.*;

@Entity(name = "tb_test_person")
public class PersonEntity {

    @Column(name = "ID_")
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    private Integer id;


    @Column(name ="NAME_")
    private String name;

    @Column(name = "CITY_")
    private String city;

}

dao层:

public interface TestData extends Repository<PersonEntity,Integer> {
        List<PersonEntity> findByName(String name);
}

config:

官方说需要此配置,但是我springboot项目中没有配置也可以正常访问,不太清楚为什么???

@EnableJpaRepositories(basePackages = ("repository所在的包路径"))
public class SpringDataConfig {
}

test:



    private final TestData testData;

    public TestController(TestData testData){
        this.testData=testData;
    }


    public void test19(String name){
        List<PersonEntity> personEntities=testData.findByName(name);
        System.out.println("======");
    }

6.继承CrudRepository定义CRUD methods;继承Repository定义query methods

7.定义公共方法:

若多个需要继承Repository的接口中有相同的方法,可以把这些相同的方法提取出来做成公共的

@NoRepositoryBean
interface MyBaseRepository<T, ID> extends Repository<T, ID> {

  Optional<T> findById(ID id);

  <S extends T> S save(S entity);
}

interface UserRepository extends MyBaseRepository<User, Long> {
  User findByEmailAddress(EmailAddress emailAddress);
}

@NoRepositoryBean是为了防止中间接口MyBaseRepository生成bean

8.IgnoreCase和AllIgnoreCase

IgnoreCase是单个属性起作用,AllIgnoreCase对所有条件属性起作用

IDEA中IgnoreCase和AllIgnoreCase不会自动拼写,但是可以自动生效

9.排序

后面加OrderBy并以(ASC 或DESC)结尾

10.Property Expressions 针对Entity实体类中字段为自定义类的情况

假设Person实体类中有Address属性类,Address类的某个字段是ZipCode

写法:

为了避免PersonEntity实体类中有addressZip属性,所以最好是在属性值和属性值的属性值之间添加"_"

List<PersonEntity> findByAddress_ZipCode(String zipCode)

若PersonEntity实体类中没有addressZip属性,则以下写法也可以:

List<PersonEntity> findByAddressZipCode(String zipCode)

方式一是官方推荐的最好方法.

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值