1efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar/* 2efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * Copyright (C) 2016 The Android Open Source Project 3efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * 4efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 5efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * you may not use this file except in compliance with the License. 6efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * You may obtain a copy of the License at 7efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * 8efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 9efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * 10efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * Unless required by applicable law or agreed to in writing, software 11efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 12efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * See the License for the specific language governing permissions and 14efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * limitations under the License. 15efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar */ 16efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 17efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyarpackage foo.bar; 18bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.*; 19efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyarimport java.util.List; 20bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.lifecycle.LiveData; 21efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar@Dao 22efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyarabstract class ComplexDao { 2313a2048db98b1cc2dbd1692b73b794527975a446Yigit Boyar static class FullName { 2413a2048db98b1cc2dbd1692b73b794527975a446Yigit Boyar public int id; 2513a2048db98b1cc2dbd1692b73b794527975a446Yigit Boyar public String fullName; 2613a2048db98b1cc2dbd1692b73b794527975a446Yigit Boyar } 2717caba59e1fd850fe1381d7311d23afc4e07cdfbYuichi Araki 2817caba59e1fd850fe1381d7311d23afc4e07cdfbYuichi Araki private final ComplexDatabase mDb; 2917caba59e1fd850fe1381d7311d23afc4e07cdfbYuichi Araki 3017caba59e1fd850fe1381d7311d23afc4e07cdfbYuichi Araki public ComplexDao(ComplexDatabase db) { 3117caba59e1fd850fe1381d7311d23afc4e07cdfbYuichi Araki mDb = db; 3217caba59e1fd850fe1381d7311d23afc4e07cdfbYuichi Araki } 3317caba59e1fd850fe1381d7311d23afc4e07cdfbYuichi Araki 34b3c4d9308e4fd66beca3a7824a5db749ce2aace1Yuichi Araki @Transaction 35b3c4d9308e4fd66beca3a7824a5db749ce2aace1Yuichi Araki public boolean transactionMethod(int i, String s, long l) { 36b3c4d9308e4fd66beca3a7824a5db749ce2aace1Yuichi Araki return true; 37b3c4d9308e4fd66beca3a7824a5db749ce2aace1Yuichi Araki } 38b3c4d9308e4fd66beca3a7824a5db749ce2aace1Yuichi Araki 3913a2048db98b1cc2dbd1692b73b794527975a446Yigit Boyar @Query("SELECT name || lastName as fullName, uid as id FROM user where uid = :id") 4013a2048db98b1cc2dbd1692b73b794527975a446Yigit Boyar abstract public List<FullName> fullNames(int id); 4113a2048db98b1cc2dbd1692b73b794527975a446Yigit Boyar 42efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar @Query("SELECT * FROM user where uid = :id") 43efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar abstract public User getById(int id); 44efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 45efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar @Query("SELECT * FROM user where name LIKE :name AND lastName LIKE :lastName") 46efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar abstract public User findByName(String name, String lastName); 47efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 48efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar @Query("SELECT * FROM user where uid IN (:ids)") 49efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar abstract public List<User> loadAllByIds(int... ids); 50efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 5188865f77c35657a2bc545a718ca16a648fc8b62eYigit Boyar @Query("SELECT ageColumn FROM user where uid = :id") 52efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar abstract int getAge(int id); 53efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 5488865f77c35657a2bc545a718ca16a648fc8b62eYigit Boyar @Query("SELECT ageColumn FROM user where uid IN(:ids)") 55efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar abstract public int[] getAllAges(int... ids); 56efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 5788865f77c35657a2bc545a718ca16a648fc8b62eYigit Boyar @Query("SELECT ageColumn FROM user where uid IN(:ids)") 58efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar abstract public List<Integer> getAllAgesAsList(List<Integer> ids); 59846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar 60846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar @Query("SELECT * FROM user where uid = :id") 61846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar abstract public LiveData<User> getByIdLive(int id); 62846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar 63846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar @Query("SELECT * FROM user where uid IN (:ids)") 64846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar abstract public LiveData<List<User>> loadUsersByIdsLive(int... ids); 651d3d9d6121d53a4c11223ba475d8954315952a09Yigit Boyar 661d3d9d6121d53a4c11223ba475d8954315952a09Yigit Boyar @Query("SELECT ageColumn FROM user where uid IN(:ids1) OR uid IN (:ids2) OR uid IN (:ids3)") 671d3d9d6121d53a4c11223ba475d8954315952a09Yigit Boyar abstract public List<Integer> getAllAgesAsList(List<Integer> ids1, 681d3d9d6121d53a4c11223ba475d8954315952a09Yigit Boyar int[] ids2, int... ids3); 69efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar} 70