1111 */
1212public class JBQuery <T extends JBObject > {
1313 private String className ;
14+ private Class <T > clazz ;
1415 private String whereSting ;
1516 private Boolean isRunning ;
1617 JBQueryConditions conditions ;
@@ -33,6 +34,14 @@ public JBQuery<T> setClassName(String className) {
3334 return this ;
3435 }
3536
37+ public Class <T > getClazz () {
38+ return clazz ;
39+ }
40+
41+ public void setClazz (Class <T > clazz ) {
42+ this .clazz = clazz ;
43+ }
44+
3645 /**
3746 * 查询当前查询是否进行中
3847 *
@@ -119,8 +128,13 @@ public Map<String, List<JBQueryOperation>> getWhere() {
119128 }
120129
121130 public JBQuery (String className ) {
131+ this (className , null );
132+ }
133+
134+ JBQuery (String className , Class <T > clazz ) {
122135 JBUtils .checkClassName (className );
123136 this .className = className ;
137+ this .clazz = clazz ;
124138 this .conditions = new JBQueryConditions ();
125139 }
126140
@@ -612,13 +626,18 @@ public void onSuccess(JBResult result) {
612626 if (callback == null ) {
613627 return ;
614628 }
615- List <T > list = processResults (result .getData ());
616- if (list .size () > 0 ) {
617- T o = list .get (0 );
618- callback .done (true , o , null );
619- } else {
620- callback .done (false , null , new JBException (JBCode .OBJECT_NOT_EXIST ));
629+ try {
630+ List <T > list = processResults (result .getData ());
631+ if (list .size () > 0 ) {
632+ T o = list .get (0 );
633+ callback .done (true , o , null );
634+ } else {
635+ callback .done (false , null , new JBException (JBCode .OBJECT_NOT_EXIST ));
636+ }
637+ } catch (Exception e ) {
638+ callback .done (false , null , new JBException (JBCode .INTERNAL_JSON_ERROR ));
621639 }
640+
622641 }
623642
624643 @ Override
@@ -670,9 +689,15 @@ private void findFromJavaBaas(final boolean sync, final JBFindCallBack callback)
670689 JBHttpClient .INSTANCE ().sendRequest (path , JBHttpMethod .POST , null , getParameters (), sync , new JBObjectCallback () {
671690 @ Override
672691 public void onSuccess (JBResult result ) {
673- List <T > list = processResults (result .getData ());
674- if (callback != null ) {
675- callback .done (true , list , null );
692+ try {
693+ List <T > list = processResults (result .getData ());
694+ if (callback != null ) {
695+ callback .done (true , list , null );
696+ }
697+ } catch (Exception e ) {
698+ if (callback != null ) {
699+ callback .done (false , null , new JBException (JBCode .INTERNAL_JSON_ERROR ));
700+ }
676701 }
677702 }
678703
@@ -798,7 +823,7 @@ protected Map<String, String> assembleParameters() {
798823 return conditions .assembleParameters ();
799824 }
800825
801- protected List <T > processResults (Map <String , Object > map ) {
826+ protected List <T > processResults (Map <String , Object > map ) throws Exception {
802827 if (map == null || map .get ("result" ) == null ) {
803828 return Collections .emptyList ();
804829 }
@@ -818,7 +843,12 @@ protected List<T> processResults(Map<String, Object> map) {
818843 return Collections .emptyList ();
819844 }
820845 for (Map <String , Object > object : list ) {
821- JBObject jbObject = new JBObject (className );
846+ JBObject jbObject ;
847+ if (clazz != null ) {
848+ jbObject = clazz .newInstance ();
849+ } else {
850+ jbObject = new JBObject (className );
851+ }
822852 JBUtils .copyPropertiesFromMapToJBObject (jbObject , object );
823853 result .add ((T ) jbObject );
824854 }
0 commit comments