ºìÁªLinuxÃÅ»§
Linux°ïÖú

FastQuery v1.0.8·¢²¼£¬Êý¾Ý³Ö¾Ã²ã¿ò¼Ü

·¢²¼Ê±¼ä:2016-06-16 09:35:19À´Ô´:ºìÁª×÷Õß:baihuo
FastQuery v1.0.8 ·¢²¼ÁË£¬FastQuery»ùÓÚJavaÓïÑÔ.ËûµÄʹÃüÊÇ:¼ò»¯Java²Ù×÷Êý¾Ý²ã.
×öΪһ¸ö¿ª·¢Õß, ½ö½öÖ»ÐèÒªÉè¼ÆDAO½Ó¿Ú¼´¿É,ÆäÄÚ²¿²ÉÓÃASM¶¯Ì¬Éú³ÉʵÏÖ,Ö´Ðпì. Òò´Ë,´úÂë¼ò½à¶øÓÅÑÅ.´Ó¶ø,´ó·ù¶ÈÌáÉý¿ª·¢Ð§ÂÊ.
×ñÑ­·ÇÇÖÈëʽԭÔòÉè¼Æ,ËÉñîºÏ,ºÜÈÝÒ×ÓëÆäËüÈÝÆ÷»ò¿ò¼Ü¼¯³É.
ÌṩÁËÒ»×é¼òµ¥µÄAnnotation.Ïû·ÑÕßÖ»ÓùØÐÄ×¢½âµÄº¬Òå.Õâ¾ÍʹµÃ¿ò¼ÜµÄºËÐıãÓÚÖØ¹¹,±ãÓÚ³ÖÐøÁ¼ÐÔ·¢Õ¹.
½ØÖÁ·¢²¼1.0°æ,·¢ÏÖ×öÁËÈçϸĽø:
1.0.1 ÔöÇ¿À¹½ØÆ÷×÷Ó÷¶Î§ºÏ·¨Ð£Ñé.
1.0.2 Ö§³ÖÅúÁ¿update,Ö§³ÖÊÂÎñ
1.0.3 ÐÂÔö×Ô¶¨ÒåÀà¼ÓÔØÆ÷
1.0.4 #{#table} , #{#id} ºÏ·¨Ê¹Óüì²â
1.0.5 RepositoryÒì³£´¦Àí
1.0.6 ÐÂÔö·ÖÒ³¹¦ÄÜ
1.0.7 ÔöÇ¿fastquery.json
1.0.8 ¿ØÖÆ·ÖÒ³Çø¼äµÄλÖÃ,Êý¾ÝÔ´ÓÅÏȼ¶,ÐÂÔö@NotCount

²¿·ÖÀý×Ó[code]// ½«ÈýÌõ¸Ä²Ù×÷ÄÉÈëµ½Ò»¸öÊÂÎñÖÐ.
@Transactional
@Modifying
@Query("update `userinfo` set `name`=?1 where id=?3")
@Query("update `userinfo` set `age`=?2 where id=?3")
// °ÑÖ÷¼üidÐÞ¸ÄΪ1,ĿǰÖ÷¼üid=1ÊÇ´æÔÚµÄ.ÕâÐлᱨ´í.ÄÇôǰÁ½ÐÐËù×öµÄ²Ù×÷È«²¿Ê§Ð§.
@Query("update `userinfo` set `id`=1 where `id`=?3")
int updateBatch(String name,Integer age,Integer id);
// ×¢Òâ:
// 1).·µ»ØÖµÈç¹ûÊÇintÀàÐÍ,±íʾÕâ¸öÊÂÎñ³É¹¦Ìá½»ºóËùÓиIJÙ×÷ËùÓ°ÏìµÄÐÐÊý×ܺÍ.
// 2).·µ»ØÖµÈç¹ûÊÇint[]ÀàÐÍ,±íʾÕâ¸öÊÂÎñ³É¹¦Ìá½»ºó,ÿ¸ö×îСÐ޸ĵ¥ÔªËùÓ°ÏìÐÐÊýµÄ¼¯ºÏ.
// ¾ÙÀý˵Ã÷: ÈôÓиöÊÂÎñT,ËüÀïÃæÓÐ3Ìõ¸Ä²Ù×÷,·Ö±ð½ÐU1,U2,U3.
// T³É¹¦Ìá½»ºó,U1,U2,U3ËùÓ°ÏìµÄÊý¾ÝÐÐÊý·Ö±ðΪN1,N2,N3.
// Ôò: ·µ»ØÖµÎª: new int[]{N1,N2,N3}[/code]·ÖÒ³[code]public interface UserInfoDBService extends QueryRepository {
// countField : Ã÷È·Ö¸¶¨ÇóºÍ×Ö¶Îcount(countField),ĬÈÏÖµÊÇ"id"
@Query(value="select id,name,age from `userinfo` where 1",countField="id")
Page> findAll(Pageable pageable);

// Èç¹ûûÓÐÖ¸¶¨ÇóºÍÓï¾ä,ÄÇôÓÉfastquery·ÖÎö³ö×îÓŵÄÇóºÍÓï¾ä
@Query("select id,name,age from `userinfo` #{#where}")
@Condition(l="age",o=Operator.GT,r="?1") // age > ?1
@Condition(c=COperator.AND,l="id",o=Operator.LT,r="?2") // id < ?2
Page find(Integer age,Integer id,Pageable pageable);

// countQuery : Ö¸¶¨×Ô¶¨ÒåÇóºÍÓï¾ä
@Query(value = "select id,name,age from `userinfo` #{#where}",
countQuery = "select count(id) from `userinfo` #{#where}")
@Condition(l = "age", o = Operator.GT, r = "?1") // age > ?1
@Condition(c=COperator.AND,l="id",o=Operator.LT,r="?2") // id < ?2
Page findSome(Integer age,Integer id,Pageable pageable);
}

// PageÊÇ·ÖÒ³µÄ³éÏó.ͨ¹ýËü¿ÉÒÔ»ñÈ¡·ÖÒ³Öеĸ÷ÖÖÊôÐÔ. ²¢ÇÒ¿ª·¢Õß²»ÓÃȥʵÏÖ.

Integer age = 10;
Integer id = 50;
int p = 1; // Ö¸¶¨·ÃÎʵÄÊǵڼ¸Ò³
int size = 3; // É趨ÿһҳ×î¶àÏÔʾ¼¸Ìõ¼Ç¼
Pageable pageable = new PageableImpl(p, size);
Page page = userInfoDBService.findSome(10, 50,pageable);
List userInfos = page.getContent(); // »ñÈ¡ÕâÒ³µÄÊý¾Ý
Slice slice = page.getNextPageable(); // ÏÂÒ»Ò³
int number = page.getNumber(); // µ±Ç°Ò³Êý(µ±Ç°Êǵڼ¸Ò³)
// ¸ü¶à page.? ¾Í²»×¸ÊöÁË.

Ëýת»»³ÉJSONºóµÄ½á¹¹ÈçÏÂ:

{
"content":[ // ÕâÒ³µÄÊý¾Ý
{
"name":"²é¶û˹?°Í±´Ææ","id":2,"year":1792
},
{
"name":"Ô¼º²?·ë?ŵÒÀÂü","id":3,"year":1903
},
{
"name":"°¢À¼?Âóϯɭ?ͼÁé","id":1,"year":1912
},
{
"name":"Ô¼º²?Âó¿¨Îý","id":4,"year":1927
},
{
"name":"µ¤Äá˹?ÀïÆæ","id":5,"year":1941
},
{
"name":"µÙÄ·?²®ÄÉ˹?Àî","id":6,"year":1955
}
],
"first": true, // ÊÇ·ñÊǵÚÒ»Ò³
"hasContent": true, // ÕâÒ³ÊÇ·ñÓÐÊý¾Ý
"hasNext": true, // ÊÇ·ñÓÐÏÂÒ»Ò³
"hasPrevious": false, // ÊÇ·ñÓÐÉÏÒ»Ò³
"last": false, // ÊÇ·ñÊÇ×îºóÒ»Ò³
"nextPageable": { // ÏÂÒ»Ò³µÄ»ù±¾ÊôÐÔ
"number": 1, // ¶¨Î»µÄÒ³Âë
"size": 15 // ÿҳ¶àÉÙÌõÊý¾Ý
},
"number": 1, // µ±Ç°Ò³Âë,´Ó1¿ªÊ¼
"numberOfElements": 6, // µ±Ç°Ò³µÄÕæÊµ¼Ç¼ÐÐÊý
"previousPageable": { // ÉÏÒ»Ò³µÄ»ù±¾ÊôÐÔ
"number": 0, // ¶¨Î»µÄÒ³Âë
"size": 15 // ÿҳ¶àÉÙÌõÊý¾Ý
},
"size": 15, // ÿҳÐÐÊý
"totalElements": 188, // ×ÜÐÐÊý
"totalPages": 13 // ×ÜÒ³Âë
}

Èç¹ûÔÚ·ÖÒ³º¯ÊýÉϱêʶ@NotCount,±íʾÔÚ·ÖÒ³Öв»Í³¼Æ×ÜÐÐÊý.
ÄÇô·ÖÒ³¶ÔÏóÖеÄtotalElementsµÄֵΪ-1L,totalPagesΪ-1.ÆäËûÊôÐÔ¶¼ÓÐЧÇÒÕæÊµ.
Èç¹ûÃ÷È·Ö¸¶¨²»Í³¼ÆÐÐÊý,ÄÇôÉèÖÃcountFieldºÍnativeQuery¾Í»á±äµÃÎÞÒâÒå.
ͨ³£·ÖÒ³µÄÇø¼ä¿ØÖÆÄ¬ÈÏ·ÅÔÚSQLÓï¾äµÄĩβ.
ÔÚ·ûºÏSQLÓï·¨µÄǰÌáÏÂ,ͨ¹ý#{#limit}¿ÉÒÔ°Ñ·ÖÒ³Çø¼ä·ÅÔÚSQLÀïµÄÈκεط½.[/code]ÏêÇé: http://git.oschina.net/xixifeng.com/fastquery

À´×Ô:¿ªÔ´ÖйúÉçÇø
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ