/** * Calculates the minimum value on a given column. The value is returned * with the same data type of the column. * * <pre> * LitePal.min(Person.class, "age", int.class); * </pre> * * You can also specify a where clause when calculating. * * <pre> * LitePal.where("age > ?", "15").min(Person.class, "age", Integer.TYPE); * </pre> * * @param modelClass * Which table to query from by class. * @param columnName * The based on column to calculate. * @param columnType * The type of the based on column. * @return The minimum value on a given column. */ public <T> T min(Class<?> modelClass, String columnName, Class<T> columnType) { return min(BaseUtility.changeCase(modelClass.getSimpleName()), columnName, columnType); }
@Override public void onClick(View view) { int result = 0; switch (view.getId()) { case R.id.min_btn1: result = LitePal.min(Singer.class, "age", Integer.TYPE); mResultText.setText(String.valueOf(result)); break; case R.id.min_btn2: try { result = LitePal.where("age > ?", mAgeEdit.getText().toString()).min( Singer.class, "age", Integer.TYPE); mResultText.setText(String.valueOf(result)); } catch (Exception e) { e.printStackTrace(); } break; default: } }
/** * Calculates the minimum value on a given column. The value is returned * with the same data type of the column. * * <pre> * LitePal.min("person", "age", int.class); * </pre> * * You can also specify a where clause when calculating. * * <pre> * LitePal.where("age > ?", "15").min("person", "age", Integer.TYPE); * </pre> * * @param tableName * Which table to query from. * @param columnName * The based on column to calculate. * @param columnType * The type of the based on column. * @return The minimum value on a given column. */ public static <T> T min(String tableName, String columnName, Class<T> columnType) { synchronized (LitePalSupport.class) { FluentQuery cQuery = new FluentQuery(); return cQuery.min(tableName, columnName, columnType); } }
@Override public void run() { synchronized (LitePalSupport.class) { final T t = min(tableName, columnName, columnType); if (executor.getListener() != null) { Operator.getHandler().post(new Runnable() { @Override public void run() { executor.getListener().onFinish(t); } }); } } } };
@Test public void testMin() { int result = LitePal.min(Student.class, "age", Integer.TYPE); int realResult = -100; Cursor cursor = LitePal.findBySQL("select min(age) from " + studentTable); if (cursor.moveToFirst()) { realResult = cursor.getInt(0); } cursor.close(); assertEquals(realResult, result); result = LitePal.where("age > ?", "10").min(studentTable, "age", Integer.TYPE); cursor = LitePal.findBySQL("select min(age) from " + studentTable + " where age > ?", "10"); if (cursor.moveToFirst()) { realResult = cursor.getInt(0); } cursor.close(); assertEquals(realResult, result); }