下面是一个实现你想要的结果的例子。
Demo实体(表格):-
@Entity
class Demo {
@PrimaryKey
Long id;
Double value1;
Double value2;
Double value3;
Double value4;
Demo(){}
Demo(Double value1, Double value2, Double value3, Double value4) {
this.value1 = value1;
this.value2 = value2;
this.value3 = value3;
this.value4 = value4;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Double getValue1() {
return value1;
}
public void setValue1(Double value1) {
this.value1 = value1;
}
public Double getValue2() {
return value2;
}
public void setValue2(Double value2) {
this.value2 = value2;
}
public Double getValue3() {
return value3;
}
public void setValue3(Double value3) {
this.value3 = value3;
}
public Double getValue4() {
return value4;
}
public void setValue4(Double value4) {
this.value4 = value4;
}
}
DemoDao 道:-
@Dao
interface DemoDao {
@Insert
Long insertDemoRow(Demo demo);
@Query("SELECT '{\"Value 1\":'||max(value1)||', \"Value 2\":'||max(value2)||', \"Value 3\":'||max(value3)||' \"Value 4\":'||max(value4) AS Maximum FROM demo")
String getMaxvaluesFromDemo();
@Query("SELECT '{\"Value 1\":'||min(value1)||', \"Value 2\":'||min(value2)||', \"Value 3\":'||min(value3)||' \"Value 4\":'||min(value4) AS Minimum FROM demo")
String getMinvaluesFromDemo();
}
DemoDatabase抽象类
@Database(entities = {Demo.class},version = 1)
abstract class DemoDatabase extends RoomDatabase {
abstract DemoDao getDemoDao();
}
最后是一个调用活动(为了方便和简洁,使用了主线程):-
public class MainActivity extends AppCompatActivity {
DemoDatabase db;
DemoDao dao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = Room.databaseBuilder(this,DemoDatabase.class,"demo.db")
.allowMainThreadQueries()
.build();
dao = db.getDemoDao();
dao.insertDemoRow(new Demo(76.1,null,4897.847,null));
dao.insertDemoRow(new Demo(44.2,87.1,47.0,null));
dao.insertDemoRow(new Demo(null,1000.0,12.345,null));
dao.insertDemoRow(new Demo(2.3,0.0,9.1,99.0));
Log.d("DEMOINFO","Maximum " + dao.getMaxvaluesFromDemo());
Log.d("DEMOIBFO","Minimums " + dao.getMinvaluesFromDemo());
}
}
运行时(仅设计为运行一次)日志中的结果是:-
D/DEMOINFO: Maximum {"Value 1":76.1, "Value 2":1000.0, "Value 3":4897.847 "Value 4":99.0
D/DEMOIBFO: Minimums{"Value 1":2.3, "Value 2":0.0, "Value 3":9.1 "Value 4":99.0