ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

JPQL(Ò»)
2015-11-21 01:40:28 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:3´Î
Tags£ºJPQL

5¡¢ JPQL

JPQL£¨JavaPersistence Query Language£©£¬ÊÇ»ùÓÚʵÌåµÄ²éѯ£¬Ëù²éѯµÄÄÚÈݶ¼ÊÇʵÌå»òʵÌåÊôÐÔ¡£

5.1¡¢²éѯʵÌå

SELECT c FROM Customer c

JPQLÓï¾äÓëSQL»ù±¾ÀàËÆ£¬µ«ËüÊÇ»ùÓÚʵÌåµÄ²éѯ¡£ÔÚ³õ´ÎʹÓÃʱ£¬ÐèҪעÒâÒÔϼ¸¸öÎÊÌâ¡£

1) ʵÌåÃûºÍÊôÐÔÇø·Ö´óСд£»

2) JPQLÖеı£Áô¹Ø¼ü×Ö²»Çø·Ö´óСд£»

3) ±êʶʵÌåµÄ±ðÃû£¬Ò²²»Çø·Ö´óСд£»

4) ʵÌåµÄ±ðÃû¿ÉÒÔʹÓÃAS¹Ø¼ü×ÖÀ´±êʶ£¬AS¹Ø¼ü×ÖÒ²¿ÉÒÔÊ¡ÂÔ£»

5.2¡¢ÊµÌåÊôÐÔ

²éѯʱÈç¹ûʹÓÃÁËʵÌåµÄ±ðÃû£¬ÔÚSELECT²éѯʱ±ã¿ÉÒÔÒýÓøÃʵÌåµÄÊôÐÔ£¨¶ø²»ÊDZíµÄ×Ö¶ÎÃû£©£¬ÈçÏÂ:

SELECT c.name FROM Customer c

Èç¹û²éѯµÄʵÌåÊôÐÔÊÇÁíÒ»¸öʵÌ壨һ¶ÔÒ»¹ØÏµ£©£¬Ò²¿ÉÒÔͨ¹ýÊôÐÔºó¡°.¡±À´»ñµÃʵÌåµÄÊôÐÔ£¬ÈçÏÂ

SELECT c.address FROM Customer c

SELECT c.address.street FROM Customer c£¨¶à¼¶µ¼º½£©

?

5.3¡¢¹ØÁª²éѯ

JPAÌṩÁËÁ½ÖÖÏÔʾ¹ØÁªÊµÌåµÄ·½Ê½£¬·Ö±ðΪÄÚÁ¬½Ó£¨INNERJOIN£©ºÍ×óÍâÁ¬½Ó£¨LEFTOUTER JOIN£©¡£

Ê×ÏȻعËÏ´«Í³SQLÖеÄÄÚÁ¬½Ó¡¢ÍâÁ¬½Ó¡¢×óÁ¬½Ó¡¢ÓÒÁ¬½Ó·½Ê½¡£¼ÙÉèÓбítb_customerºÍ±ítb_order·Ö±ð¶ÔӦʵÌåCustomerºÍOrder£¬±íÖÐÊý¾ÝÈçÏÂ

tb_customerÊý¾Ý

id

name

email

address_id

1

zhangsan

zhangsan@163.com

6

2

lisi

lisi@163.com

7

3

wangwu

wangwu@163.com

8

?

tb_orderÊý¾Ý

id

num

customer_id

create_date

5

10002

1

?

6

10003

1

?

7

10004

5

?

8

10005

1

?

9

10006

3

?

1) ÄÚÁ¬½Ó

ÄÚÁ¬½Ó²éѯҲ½Ð×ÔÈ»Á¬½Ó²éѯ£¬ËüÊÇÁ½¸ö±í¹ØÁªµÄ×îС¼¯ºÏ¡£Ò²¾ÍÊÇ˵£¬×ó±íÖеÄÊý¾ÝºÍÓÒ±íÖеÄÊý¾Ý¶¼´æÔÚʱ²Å»á¹ØÁª£¬²¢ÇÒÖ´ÐÐÄÚÁ¬½Ó²éѯʱ²»»á³öÏÖnullÖµ¡£ÈçÖ´ÐÐÏÂÃæµÄSQLÓï¾ä

SELECT * from tb_customer c INNER JOIN tb_order o ONc.id=o.customer_id

²éѯµÄ½á¹ûÈçÏÂ

c.id

c.name

o.id

o.num

o.customer_id

1

zhangsan

5

10002

1

1

zhangsan

6

10003

1

1

zhangsan

8

10005

1

3

wangwu

9

10006

3

×ó±íΪtb_customer£¬ÓÒ±íΪtb_oreder¡£×ó±íÖÐid=2µÄ¼Ç¼£¬ÔÚÓÒ±íÖв»´æÔÚ¡£ÓÒ±íÖÐid=7µÄ¼Ç¼£¬ÔÚ×ó±íÖÐÒ²²»´æÔÚ£¬ËùÒÔÔÚʹÓÃÄÚÁ¬½Ó²éѯʱ²»´æÔÚ×ÅÁ½ÏîÊý¾Ý¡£

2) ×óÁ¬½Ó

×óÁ¬½ÓÊÇÒÔ×ó±íΪ»ù´¡£¬Èç¹ûÓÒ±íµÄÊý¾ÝÓйØÁªÔòÏÔʾ£¬Èç¹ûÓÒ±íÖÐûÓÐÊý¾ÝÔòÏÔʾΪnull¡£Ò²¾ÍÊÇ˵×óÁ¬½Ó²éѯµÄÈ«²¿ÊÇ×ø±êµÄÊý¾Ý£¬¶øÓÒ±íµÄÊý¾Ý²»Ò»¶¨ÊÇÈ«²¿µÄ£¬ÈçÏÂ

SELECT * from tb_customer c LEFT JOIN tb_order o ONc.id=o.customer_id

c.id

c.name

o.id

o.num

o.customer_id

1

zhangsan

5

10002

1

1

zhangsan

6

10003

1

1

zhangsan

8

10005

1

2

lisi

null

null

null

3

wangwu

9

10006

3

?

3) ÓÒÁ¬½Ó²éѯ

ÓÒÁ¬½Ó²éѯÓë×óÁ¬½Ó²éѯÏà·´£¬ËüÊÇÒÔÓÒ±íΪ²éѯ»ù´¡¡£Èç¹û×ó±íÊý¾ÝÓйØÁªÔòÏÔʾ£¬Ã»ÓÐÔòÏÔʾnull¡£ÈçÏÂ

SELECT * from tb_customer c RIGHT JOIN tb_order o ONc.id=o.customer_id

c.id

c.name

o.id

o.num

o.customer_id

1

zhangsan

5

10002

1

1

zhangsan

6

10003

1

null

null

7

10004

5

1

zhangsan

8

10005

1

3

wangwu

9

10006

3

4) ÍâÁ¬½Ó²éѯ

ÍâÁ¬½Ó²éѯÊÇÏà¶ÔÓÚÄÚÁ¬½Ó²éѯÀ´ËµµÄ£¬×ܵÄÀ´Ëµ×óÁ¬½Ó²éѯºÍÓÒÁ¬½Ó²éѯ¶¼ÊôÓÚÍâÁ¬½Ó²éѯ£¬Ö»²»¹ýÊÇ·½Ïò²»Í¬¶øÒÑ¡£

±íÁ¬½Ó²éѯµÄ¹ØÏµÈçÏÂͼËùʾ:

\

Ó봫ͳµÄSQLÓï¾äÏà±È£¬JPAÖ»ÌṩÁËÁ½ÖÖ·½Ê½µÄ±íÁ¬½Ó:ÄÚÁ¬½ÓºÍ×óÁ¬½Ó¡£

l ÄÚÁ¬½Ó

ÄÚÁ¬½ÓÊÇ×î³£ÓõÄÁ¬½Ó·½Ê½£¬Á¬½Óºó¹ØÁªÊý¾Ý²»»á³öÏÖnullÖµ£¬Óï·¨ÈçÏÂ:

[INNER] JOIN

SELECT c,o FROM Customer c JOIN c.orders o

l ×óÁ¬½Ó

×óÁ¬½ÓÒ²¿ÉÒÔ½Ð×ö×óÍâÁ¬½Ó£¬ËüÊÇÒÔ×ó±íΪ»ù´¡£¬¹ØÁªÓÒ±í¡£Á¬½ÓºóÓÒ±íÖеÄÊý¾Ý¿ÉÄÜΪnullÖµ£¬ÈçÏÂ

LEFT[OUTER] JOIN

SELECT c,o FROMCustomer c LEFT JOIN c.orders o

´Ëʱ£¬²éѯ½á¹ûÊÇËùÓеĿͻ§£¬¼´Ê¹¿Í»§Ã»Óж©µ¥£¬Ò²ÊÇ¿ÉÒÔ²éѯµ½µÄ¡£

l ץȡÁ¬½Ó

ʵÌåÊôÐԵļÓÔØÓÐÁ½ÖÖ·½Ê½£¬·ÖΪ¼´Ê±¼ÓÔØºÍÀÁ¼ÓÔØ¡£Í¬Ñù£¬¶ÔÓÚʵÌ幨ÁªµÄ²éѯ£¬Ò²¿ÉÒÔÉèÖòéѯʱµÄ¼ÓÔØ·½Ê½£¬Õâ¾ÍÊÇץȡÁ¬½Ó£¬ÈçÏÂ

[LEFT|INNER] JOIN FETCH

¼òµ¥µØËµÔÚJOIN¹Ø¼ü×Öºó¼ÓÉÏFETCH¹Ø¼ü×Ö£¬Ôò±íʾ²éѯΪץȡ²éѯ¡£ÊÂʵÉÏץȡÁ¬½ÓÖ÷ÒªÕë¶ÔʵÌåÊôÐÔΪÀÁ¼ÓÔØ·½Ê½µÄ£¬Ê¹ÓÃÄÚÁ¬½Ó²¢Ã»ÓмÓÔØ¹ØÁªµÄʵÌ壬ÈçÏÂ

SELECT c FROM Customer c JOIN c.orders o

´ËʱÔÚ¿Í»§¶Ëµ÷ÓÃgetOrders·½·¨½«Å׳öÒì³£¡£µ«Èô½«¹ØÁª²éѯÉèÖÃΪץȡ·½Ê½£¬ÈçÏÂ

SELECT c FROM Customer c JOIN FETCH

Ôò²éѯ½á¹ûµÄcustomer¶ÔÐÔÒѼÓÔØËù¹ØÁªµÄordersÊôÐÔ¡£

l ΨһÐÔ

µ±½øÐÐÁ¬½Ó²éѯʱ£¬Í¨³£»á²úÉúÒ»Ð©ÖØ¸´Êý¾Ý£¬ÈôҪȥµôÖØ¸´µÄÊý¾Ý£¬ÔÚ¹ØÁª²éѯʱ¿ÉÒÔʹÓÃDISTINCT¹Ø¼ü×Ö£¬ÈçÏÂ

SELECT DISTINCT c FROM Customer c JOIN c.orders o

5.4¡¢²Ù×÷·û

WHEREÌõ¼þ±í´ïʽ¿ÉÒÔ°üº¬±È½Ï²Ù×÷·ûºÍÂß¼­²Ù×÷·û,ÈçÏÂ

l ±È½Ï²Ù×÷·û

=¡¢>¡¢>=¡¢<¡¢<=¡¢<>¡¢[NOT]BETWEEN¡¢[NOT]LIKE¡¢

[NOT] BETWEEN¡¢[NOT] IN¡¢IS [NOT] NULL¡¢IS [NOT]EMPTY¡¢[NOT]MEMBER OF

l Âß¼­²Ù×÷·û

NOT¡¢AND¡¢OR

5.5¡¢BETWEEN

BETWEEN ²Ù×÷·ûÊDzéѯֵÔÚijһ¸öÖ¸¶¨·¶Î§ÄÚµÄËõд£¬Óï·¨ÈçÏÂ:

[NOT] BETWEEN ·¶Î§ÖµÒ» AND ·¶Î§Öµ¶þ

SELECT c FROM Customer WHRER c.asset BETWEEN 1000.0 and2000.0

5.6¡¢IN

IN²Ù×÷·û¿ÉÒÔ²éѯÔÚÖ¸¶¨µÄ¶à¸öÖµ£¬Óï·¨ÈçÏÂ:

[NOT] IN (Öµ{,Öµ}*|×Ó²éѯ)

5.7¡¢LIKE

LIKE ²Ù×÷·ûÓÃÀ´²éѯƥÅäÖ¸¶¨µÄ×Ö·û´®£¬Æ¥Åä×Ö·û´®µÄ¹Ø¼ü×Ö·ûÓÐÒÔÏÂÁ½ÖÖ:

1) Ï»­Ïß¡°_¡±£º±íʾƥÅäijһ¸ö×Ö·û£»

2) °Ù·ÖºÅ:±íʾƥÅäÁã¸ö»ò¶à¸ö×Ö·û£»

Èç¹ûÒª²éѯµÄ×Ö·û´®´æÔÚ¡°_¡±»ò¡°%¡±,ÔòÐèÒªÔÚÆ¥ÅäµÄ×Ö·û´®Ç°×ªÒÆ×Ö·û¡°

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºSQL½á¹¹»¯²éѯÓïÑÔ¼°Mysql»ù±¾²Ù×÷ ÏÂһƪ£ºÊý¾Ý¿âSQLServer2012±Ê¼Ç£¨¶þ£©¨..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: