Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Á½ÐдúÂëÍæ×ªSpring DataÅÅÐòºÍ·ÖÒ³
 
×÷ÕߣºÏñ·çÒ»Ñù
  2506  次浏览      27
 2020-2-21
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜÁËSpring DataµÄ¸ÅÄģ¿éÒÔ¼°ËüµÄÅÅÐòºÍ·ÖÒ³µÄÏêϸʹÓÃ˵Ã÷£¬Ï£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£
±¾ÎÄÀ´×Ô΢ÐŹ«ÖÚºÅit_coders£¬ÓÉ»ðÁú¹ûÈí¼þLuca±à¼­¡¢ÍƼö¡£

Ò»£ºßëà¾

ÔÚʵ¼ÊÏîÄ¿ÖжÔSpring DataµÄ¸÷ÖÖʹÓÃÏ൱¶à£¬¼òµ¥µÄÔöɾ¸Ä²éSpring DataÌṩÁËÏֳɵķ½·¨£¬Ò»Ð©¸´Ôӵģ¬ÎÒÃÇ¿ÉÒÔÔÚ½Ó¿Ú·½·¨Ð´And,NotµÈ¹Ø¼ü×ÖÀ´¸ã¶¨£¬ÏëдԭÉúSQL£¬CQL£¨Neo4j£©£¬Query DSL £¨Elasticsearch£©µÄ£¬Ö±½ÓʹÓÃ@Query(¡°¡­¡­¡±)×¢½â¸ã¶¨£¬ÕæµÄÊÇ·½±ãµ½²»ÐУ¡

±¾Æª²©¿Í²»´òËã½²Spring DataÈçºÎʹÓ㬲»Í¬µÄÄ£¿é£¨JPA£¬Neo4j¡­.£©Ê¹ÓÃÒ²ÂÔ²»Ïàͬ£¬µ«Spring DataµÄÅÅÐòSortºÍ·ÖÒ³Pageable½Ó¿Ú¶¼ÊDz¶àµÄ£¬ËùÒÔ´ø´ó¼Ò¸ãÃ÷°×¸ãÃ÷°×Spring DataµÄÅÅÐòºÍ·ÖÒ³ÊÇÈçºÎʹÓõġ£

¶þ£º½éÉÜ

Spring DataµÄÈÎÎñÊÇΪÊý¾Ý·ÃÎÊÌṩһ¸öÊìϤµÄ¡¢Ò»Öµġ¢»ùÓÚSpringµÄ±à³ÌÄ£ÐÍ£¬Í¬Ê±ÈÔÈ»±£Áôµ×²ãÊý¾Ý´æ´¢µÄÌØÊâÌØÐÔ¡£

Spring Data ÏîÄ¿µÄÄ¿µÄÊÇΪÁ˼ò»¯¹¹½¨»ùÓÚ Spring ¿ò¼ÜÓ¦ÓõÄÊý¾Ý·ÃÎʼÆÊý£¬°üÀ¨·Ç¹ØÏµÊý¾Ý¿â¡¢Map-Reduce ¿ò¼Ü¡¢ÔÆÊý¾Ý·þÎñµÈµÈ£»ÁíÍâÒ²°üº¬¶Ô¹ØÏµÊý¾Ý¿âµÄ·ÃÎÊÖ§³Ö¡£

SpringDataÈÃÊý¾Ý·ÃÎʱäµÃ¸ü¼Ó·½±ã¡£

Èý£ºÄ£¿é

Spring Data

Spring Data for Apache Cassandra

Spring Data Commons

Spring Data Couchbase

Spring Data Elasticsearch

Spring Data Envers

Spring Data for Pivotal GemFire

Spring Data Graph

Spring Data JDBC

Spring Data JDBC Extensions

Spring Data JPA

Spring Data LDAP

Spring Data MongoDB

Spring Data Neo4J

Spring Data Redis

Spring Data REST

Spring Data for Apache Solr

Spring for Apache Hadoop

ËÄ£ºÅÅÐò

ͨ¹ýÒ»ÐдúÂë¾Í¿ÉÒÔ¿ìËÙʹÓãº

Sort sort = new Sort(Sort.Direction.DESC, "id");

ÔÚSortÀàÖж¨ÒåÁËÒ»¸öö¾ÙÀàÐÍDirection£¬¸Ãö¾ÙÀàÐÍÉùÃ÷ÁËÁ½¸ö³£Á¿ASC£¬DESC¶¨Òå·½Ïò¡£¸Ã¹¹Ôì·½·¨µÄµÚÒ»¸ö²ÎÊýÖ¸Ã÷·½Ïò½µÐò£¨DESC£©»òÉýÐò£¨ASC£©£¬µÚ¶þ¸ö²ÎÊýÖ¸Ã÷ÒÔidÁеÄֵΪ׼½øÐÐÅÅÐò¡£

ÄãÒ²¿ÉÒÔ´´½¨Ò»¸ö¶àÊôÐÔµÄSortʵÀý¡£

Sort(Sort.Direction direction, List<String> properties)

ÄãÒ²¿ÉÒÔÖ»´«ÈëÊôÐÔ¶ø²»ÉùÃ÷·½Ïò£º

Sort(String... properties)

²»¹ý¹Ù·½ÒѾ­ÆúÓø÷½·¨£¬ÍƼöʹÓÃ

public static Sort by(String... properties)

µ±Äã²»ÉùÃ÷·½Ïòʱ£¬Ä¬ÈÏ·½ÏòΪÉýÐò¡£

public static final Direction DEFAULT_DIRECTION = Direction.ASC;

SortµÄһЩ·½·¨

Sort.Order

Sort.OrderÊÇSortµÄÒ»¸ö¾²Ì¬ÄÚ²¿À࣬¹Ù·½ËµÃ÷ÊÇ£ºPropertyPathʵÏÖÁËÅÅÐòµÄÅä¶Ô¡£·½ÏòºÍÊôÐÔ¡£ËüÓÃÓÚÌṩÅÅÐòµÄÊäÈë ¡£

¼òµ¥À´½²£¬Äã¿ÉÒÔ¶¨ÒåÒ»¸öOrder£¬ÔÚÐèҪʱ´«Èëorder¹¹½¨SordʵÀý¡£

Order(Sort.Direction direction, String property)

¸ü¶ÀÌØµÄʹÓÃÊǼÓÈë×Ô¼ºµÄ¿Õ´¦ÀíÌáʾµÄö¾Ù£º

Order(Sort.Direction direction, String property, Sort.NullHandling nullHandlingHint)

Sort.NullHandlingÊÇ¿ÉÓÃÓÚÅÅÐò±í´ïʽµÄ¿Õ´¦ÀíÌáʾµÄö¾Ù¡£¶ÔʹÓõÄÊý¾Ý´æ´¢µÄÒ»ÖÖÌáʾ£¬ÓÃÓÚÔÚ·Ç¿ÕÌõĿ֮ºó¶Ô¾ßÓпÕÖµµÄÌõÄ¿½øÐÐÅÅÐò¡£

ÔÚÐèÒªSortʱ£¬¿Éͨ¹ýOrder´´½¨£º

Sort(Sort.Order... orders)

Sort.OrderµÄһЩ·½·¨£º

Èç¹ûÄ㻹ÏëÈ«ÃæÁ˽âËüµÄʹÓã¬ÍƼöÔĶÁ¹Ù·½Ó¢ÎÄÎĵµ£º

https://docs.spring.io/spring-data/ data-commons/docs/current/api/org /springframework/data/domain/Sort.html

Î壺·ÖÒ³

PageableÖ»ÊÇ Spring Data ÌṩµÄ·ÖÒ³ÐÅÏ¢µÄ³éÏó½Ó¿Ú¡£

ʵÏÖÀࣺ

AbstractPageRequest£º³éÏóÀà¡£¹©PageRequestºÍQPageRequest¼Ì³Ð¡£

PageRequest£º »ù±¾µÄ¿ÉÒ³Ãæ»¯Java BeanʵÏÖ¡£

QPageRequest£º»ù±¾µÄJava BeanʵÏÖ£¬¿ÉÒÔÖ§³ÖQueryDSL¡£

·ÖÒ³¹¦ÄÜÒ²Ö»ÐèÒªÒ»ÐдúÂ룺

Pageable pageable = new PageRequest(int page, int size, Sort sort);

page - ´ÓÁ㿪ʼµÄË÷ÒýÒ³

size- Òª·µ»ØµÄÒ³ÃæµÄ´óС

sort - ÅÅÐò

ÄãÒ²¿ÉÒÔ´´½¨Ã»ÓÐÅÅÐòµÄ·ÖÒ³

PageRequest(int page, int size)

¸ü·½±ãµÄÊÇ¿ÉÒÔÒ»ÐдúÂë´´½¨ÓÐÅÅÐò·½ÏòºÍÊôÐԵķÖÒ³

PageRequest(int page, int size, Sort.Direction direction, String... properties)

Èç¹ûÄãʹÓõÄÊÇ2.0ÒÔºóµÄ°æ±¾£¬¹Ù·½ÒѾ­ÆúÓÃÒÔÉϹ¹Ôì·½·¨µÄÐÎʽ£¬ÍƼöʹÓþ²Ì¬·½·¨£º

±ÈÈçÎÒÃÇÏë±éÀúÕû¸öÊý¾Ý±í£¬¾Í¿ÉÒÔʹÓ÷ÖÒ³±éÀú£¬ÕâÑù²»ÖÁÓÚÒ»´Î°ÑÊý¾ÝÈ«²¿¼ÓÔØµ½ÄÚ´æ¡£

×¢Ò⣺ÔÚʹÓÃnext()·½·¨Ê±£¬²»Òª°Ñpageable.next()Ö±½Ó×÷Ϊ²ÎÊý´«Èë·½·¨¡£

Èçrepository.findAll(page.next())ÕâÑùµÄд·¨»áµ¼ÖÂËÀÑ­»·¡£²é¿´next()·½·¨µÄÔ´Âë·¢ÏÖÕâ¸ö·½·¨Ö»ÊǰïÎÒÃÇnewÁËÒ»¸öеÄPageable¶ÔÏó£¬Ô­À´µÄpageable»¹ÊÇûɶ±ä»¯¡£Ò»Ö±next()ÏÂÈ¥Ò²Ö»ÊÇÔÚÔ­µØÌ¤²½¡£

public Pageable next() {
return new PageRequest(getPageNumber() + 1, getPageSize(), getSort());
}

ÕýÈ·µÄд·¨£º

repository.findAll(pageable = pageable.next());

Áù£ºÊ¹ÓÃ

Spring Data Jpa³ýÁË»áͨ¹ýÃüÃû¹æ·¶°ïÖúÎÒÃÇÀ©Õ¹SqlÓï¾äÍ⣬»¹»á°ïÖúÎÒÃÇ´¦ÀíÀàÐÍΪPageableµÄ²ÎÊý£¬½«pageable²ÎÊýת»»³ÉΪsqlÓï¾äÖеÄÌõ¼þ£¬Í¬Ê±£¬»¹»á°ïÖúÎÒÃÇ´¦ÀíÀàÐÍΪPageµÄ·µ»ØÖµ£¬µ±·¢ÏÖ·µ»ØÖµÀàÐÍΪPage£¬Spring Data Jpa½«»á°ÑÊý¾ÝµÄÕûÌåÐÅÏ¢¡¢µ±Ç°Êý¾ÝµÄÐÅÏ¢£¬·ÖÒ³µÄÐÅÏ¢¶¼·ÅÈëµ½·µ»ØÖµÖС£ÕâÑù£¬ÎÒÃǾÍÄܹ»·½±ãµÄ½øÐиöÐÔ»¯µÄ·ÖÒ³²éѯ¡£

public interface UserRepository extends JpaRepository<User,Long> {

@Override
Page<Medical> findAll(Pageable pageable);
}

Èç¹ûÄãÏëÓÃ@QueryдԭÉú²éѯÓï¾ä²¢ÊµÏÖ·ÖÒ³£º

Spring Data JPAĿǰ²»Ö§³ÖÔ­Éú²éѯµÄ¶¯Ì¬ÅÅÐò£¬ÒòΪËü±ØÐë²Ù×÷ÉùÃ÷µÄʵ¼Ê²éѯ£¬Õâ¶ÔÓÚÔ­ÉúSQLÊÇÎÞ·¨¿É¿¿µØ×öµ½µÄ¡£µ«ÊÇ£¬Äú¿ÉÒÔͨ¹ý×Ô¼ºÖ¸¶¨count²éѯÀ´Ê¹ÓÃÔ­Éú²éѯ½øÐзÖÒ³£¬ÈçÏÂÃæµÄʾÀýËùʾ:

public interface UserRepository extends JpaRepository<User, Long> {

@Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1",
countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1",
nativeQuery = true)
Page<User> findByLastname(String lastname, Pageable pageable);
}

Æß£º¶ÁÈ¡

·ÖÒ³²éѯ£º

Page<Book> sampleEntities = userRepository.findAll(pageable);

½Ó¿ÚPage¼Ì³ÐÁ˽ӿÚSlice£¬»°²»¶à˵£¬Ö±½ÓÉϸɻõ£¡

×ÜÒ³Êý

int getTotalPages()

ÔªËØµÄ×ÜÊý

long getTotalElements()

·µ»Øµ±Ç°Ò³µÄË÷Òý£¨Êǵڼ¸Ò³£©

int getNumber()

·µ»Ø×÷ΪListµÄÒ³ÃæÄÚÈÝ

List<T> getContent()

·µ»Øµ±Ç°ÔÚÕâ¸öÒ³ÉϵÄÔªËØµÄÊýÁ¿

int getNumberOfElements()

·µ»ØÓÃÓÚÇëÇóµ±Ç°Ò³µÄPageable

default Pageable getPageable()

·µ»ØÒ³µÄ´óС¡£

int getSize()

·µ»ØÒ³µÄÅÅÐò²ÎÊý¡£

Sort getSort()

Ò³ÃæÊÇ·ñÓÐÄÚÈÝ¡£

boolean hasContent()

ÊÇ·ñÓÐÏÂÒ»Ò³¡£

boolean hasNext()

ÊÇ·ñÓÐÉÏÒ»Ò³

boolean hasPrevious()

µ±Ç°Ò³ÊÇ·ñÊǵÚÒ»¸ö

boolean isFirst()

µ±Ç°Ò³ÊÇ·ñÊÇ×îºóÒ»¸ö

boolean isLast()

ÏÂÒ»Ò³µÄPageable

boolean isLast()

ÉÏÒ»Ò³µÄPageable

Pageable previousPageable()
 
   
2506 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö