スマート販売システムday 1
6609 ワード
springdatajpa
1.SprigDataJpa
概説:SpringDataJpaはJPA仕様の再パッケージの抽象であり、最下部はヒップホップのJPA技術を用いて実現され、JPQLのクエリ文を引用し、Springの生成システムの一部である.操作データベースをもっと簡単にしてください.自動的にクラウドを完成します.私たちは方法を呼び出すだけでいいです.
実装:サポートパッケージ Spring.xmlプロファイルに基本的に配置されている配置前提:データベース+エンティティ管理対象工場+事務マネージャ配置に対応するSpring-data-jpa が配置されています. repositoryバッグはdao層 に相当します.は、実体管理対象工場と事務管理器のサポートが必要です. は、Repositoryインターフェース<1 v,2 v>を継承する必要があります.実現しないと、crudメソッドを呼び出すことができません.インターフェースの2つのパラメータ:1 v:あなたが操作したいのはどのdomainオブジェクト2 vですか?このdomannオブジェクトの主キーのタイプ しかし、基本的なcrudしか実現できません.高級な照会が必要なら、JpaSpecification Exectorを引き継ぐ必要があります.
2.JpaRepositoryの基本機能 CRUD自動注入Jparepositoryインターフェースのオブジェクト@Autowired prvate Employee Repository employeeRepository; クエリーのすべて:ページの並べ替えクエリは、まず一つのページのオブジェクトを作成する必要があります(注意:ページ数は0から【0は第1ページです】).Page page=employeeRepository.findAllを検索します./pageオブジェクトを入れてpage.getTotal Elements()/総条数page.get TotalPages()//総ページ数page.getContottentt()//現在ページデータpage.getNumber()//第数ページPage.getNumber OfElements()/現在ページあたり何個のデータがありますか? 並べ替え 並べ替えと改ページの集積ソト=new Sort(Sort.Direction.DESC)//フィールドに従って昇順または降順を行うPagelble=new Pagerequest(0,10,sort)//並べ替えオブジェクトを直接改ページオブジェクトパラメータに追加する 条件付きクエリは、仕様に従ってクエリを作成する方法であり、通常はJavaラクダピーク式の表記規範に従っていくつかの特定のキーワードを追加する. @Query注解クエリは、検索方法に従わないネーミングルールを調べます.@Queryの方法で@Query(「jpql文」)を調べられます. 3.JpaSpecification Exectorの使用
概要:Queryを動的に生成して、私たちの業務における様々な複雑なシーンを満足させることができます.パラメータ:root:(根)条件フィールドcriteriaQuery:query:specificのトップレベルの照会対象を代表して、複数の条件を組み合わせて並べ替えられます.criteriaBuider:条件フィールドの方式はそれで決まります(=>=、Predicate:全体の照会条件(where username like and and)多条件クエリ:
概説:これは先ほどの動的生成Query機能に対するパッケージ版です.このプラグインを使えば、検索と改ページを完成する時に機能が簡単になります.パイプラインjpa-spec SpringDataの拡張パッケージは、すべての依存性をフィルタリングします. 使用基本使用: クエリー条件を準備する親類に共通のクエリコードを書くメリット:1.規範コード2.共通コードを抽出する 共通コード抽出のための改ページ条件: フロントページ数は1から始まり、バックグラウンドは0から までである.ですので、フロントからのデータが必要です.
並べ替え機能を抽出します.並べ替え機能は全部必要です.だから、父の問い合わせにprvate Boolean order Type=true;/並べ替えの方式true=DESC/false=ASC prvate String orders Field;/もしこの値を伝えていないなら、並べ替えません.は直接にデータを得ることができ、対象を使わずに を呼び出すことができます.コードは簡単です.検索する時は規則を呼び出すだけでいいです.
1.SprigDataJpa
概説:SpringDataJpaはJPA仕様の再パッケージの抽象であり、最下部はヒップホップのJPA技術を用いて実現され、JPQLのクエリ文を引用し、Springの生成システムの一部である.操作データベースをもっと簡単にしてください.自動的にクラウドを完成します.私たちは方法を呼び出すだけでいいです.
実装:
注意:2.JpaRepositoryの基本機能
List emps = employeeRepository.findAll();
for (Employee emp :emps){ System.out.println(emp); }
( id):
Employee employee = employeeRepository.findOne(id);
save( id):
employeeRepository.save(employee);
( id):
employeeRepository.delete(id);
// : (DESC/ASC)
Sort sort = new Sort(Sort.Direction.DESC," ");//
List emps = employeeRepository.findAll(sort);// sort
for (Employee emp : emps) {
System.out.println(emp);
}
概要:Queryを動的に生成して、私たちの業務における様々な複雑なシーンを満足させることができます.
List list = employeeRepository.findAll(new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery> cq,
CriteriaBuilder cb) {
Path usernamePath = root.get("username");
Predicate p = cb.like(usernamePath, "%1%");
return p;
}
});
クエリに基づいて、パラメータはSpecificationの匿名内部クラスを作成し、対応するdomainオブジェクトを一般的に書き込みます.List list = employeeRepository.findAll(new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery> cq,
CriteriaBuilder cb) {
//1. username
Path usernamePath = root.get("username");
//2. email
Path emailPath = root.get("email");
Path agePath = root.get("age");
//3.
Predicate p1 = cb.like(usernamePath, "%1%");
Predicate p2 = cb.like(emailPath, "%2%");
Predicate p3 = cb.ge(agePath, 20);
//4.
Predicate p = cb.and(p1,p2,p3);
return p;
}
});
4.jpa-specの使用概説:これは先ほどの動的生成Query機能に対するパッケージ版です.このプラグインを使えば、検索と改ページを完成する時に機能が簡単になります.
*
*
Specification spec = Specifications.and()
.like("username", "%1%") //
.build(); //
List list = employeeRepository.findAll(spec);
:
マルチ条件クエリ: // Query ( ) ( )
EmployeeQuery query = new EmployeeQuery();
//query.setUsername("1");
//query.setEmail("2");
//query.setAge(20);
// ,
Specification spec = Specifications.and()
.like(StringUtils.isNotBlank(query.getUsername()),"username", "%"+query.getUsername()+"%") // , ,
.like(StringUtils.isNotBlank(query.getEmail()),"email", "%"+query.getEmail()+"%")
.gt(query.getAge()!=null,"age", query.getAge())
.build();
//
//Sort sort = new Sort(Sort.Direction.DESC,"username");
//
Pageable pageable = new PageRequest(0,5);
Page page = employeeRepository.findAll(spec,pageable);
5.Query抽出 //
public Sort createSort(){
//
if(StringUtils.isNotBlank(orderField)){
Sort.Direction type = orderType?Sort.Direction.DESC:Sort.Direction.ASC;
return new Sort(type,orderField);
}
return null;
}
特殊な条件を抽出する:サブクラスのクエリは、親のクエリを継承し、サブクラスのクエリに自分の条件を追加します.@Override
public Specification createSpec(){
Specification spec = Specifications.and()
.like(StringUtils.isNotBlank(username), "username", "%" + username + "%")
.like(StringUtils.isNotBlank(email), "email", "%" + email + "%")
.gt(age != null, "age", age)
.build();
return spec;
}
Query抽出のメリット: