1.疑问
为什么清空了 数据库uid值还是自动往上加,而不是从0开始计数
1.User.java
package com.example.myapplication22;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class User {
@PrimaryKey(autoGenerate = true)
public int uid;
@ColumnInfo(name = "id")
public String id;
@ColumnInfo(name = "first_name")
public String firstName;
@ColumnInfo(name = "last_name")
public String lastName;
// Getters and setters are ignored for brevity,
// but they're required for Room to work.
// public User(int uid, String firstName, String lastName) {
// this.uid = uid;
// this.firstName = firstName;
// this.lastName = lastName;
// }
public User(String id, String firstName, String lastName) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
}
2.UserDao
package com.example.myapplication22;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import java.util.List;
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAll();
@Query("SELECT * FROM user WHERE uid = (:uid)")
List<User> findByUId(int uid);
@Query("SELECT * FROM user WHERE id = (:id)")
List<User> findById(String id);
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
List<User> loadAllByIds(int[] userIds);
@Query("SELECT * FROM user WHERE first_name LIKE :first AND "
+ "last_name LIKE :last LIMIT 1")
User findByName(String first, String last);
@Insert
void insertSome(User... users);
@Insert
void insert(User users);
@Insert
void insertAll(List<User> users);
@Delete
void delete(User user);
@Query("DELETE FROM user")
void deleteAll();
}
3. AppDatebase.java
package com.example.myapplication22;
import android.content.Context;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
//RoomDatabase@Database(entities = {User.class}, version = 1,exportSchema = false)
//public abstract class AppDatabase extends RoomDatabase {
// public abstract UserDao userDao();
//
//}
@Database(entities = { User.class }, version = 1,exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
private static final String DB_NAME = "UserDatabase.db";
private static volatile AppDatabase instance;
static synchronized AppDatabase getInstance(Context context) {
if (instance == null) {
instance = create(context);
}
return instance;
}
private static AppDatabase create(final Context context) {
return Room.databaseBuilder(
context,
AppDatabase.class,
DB_NAME).build();
}
public abstract UserDao getUserDao();
}
4.Mainativity.java 里调
package com.example.myapplication22;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.res.AssetManager;
import android.os.Bundle;
import com.alibaba.fastjson.JSON;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.os.Environment;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import com.iov.speech.IMyAidlInterface;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
AppDatabase.getInstance(MainActivity.this);
Button startService = (Button) findViewById(R.id.start_service);
Button startService1 = (Button) findViewById(R.id.start_service1);
Button startService2 = (Button) findViewById(R.id.start_service2);
Button startService3 = (Button) findViewById(R.id.start_service3);
startService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
AppDatabase.getInstance(MainActivity.this).getUserDao().deleteAll();
User user1 = new User("1","jack", "mayun");
AppDatabase.getInstance(MainActivity.this).getUserDao().insert(user1);
User user2 = new User("2","tony", "mahuateng");
AppDatabase.getInstance(MainActivity.this).getUserDao().insert(user2);
User user3 = new User("3","mm", "mmmmm");
// AppDatabase.getInstance(MainActivity.this).getUserDao().insert(user3);
User user4 = new User("4","nn", "nnnnnnn");
// AppDatabase.getInstance(MainActivity.this).getUserDao().insert(user4);
User user5 = new User("5","sss", "ssssssss");
AppDatabase.getInstance(MainActivity.this).getUserDao().insertSome(user3,user4,user5);
List<User> list =
AppDatabase.getInstance(MainActivity.this).getUserDao().getAll();
for (User user : list) {
Log.d("MyService", "user uid =====" + user.uid);
Log.d("MyService", "user id =====" + user.id);
Log.d("MyService", "user firstName =====" + user.firstName);
Log.d("MyService", "user lastName =====" + user.lastName);
}
List<User> userquery = AppDatabase.getInstance(MainActivity.this).getUserDao().findById("3");
for (User user : userquery) {
Log.d("MyService", "user id=3 uid =====" + user.uid);
Log.d("MyService", "user id=3 =====" + user.id);
Log.d("MyService", "user id=3 firstName =====" + user.firstName);
Log.d("MyService", "user id=3 lastName =====" + user.lastName);
}
int[] array = {1,2,3};
List<User> loadAllByIds = AppDatabase.getInstance(MainActivity.this).getUserDao().loadAllByIds(array);
for (User user : loadAllByIds) {
Log.d("MyService", "loadAllByIds user id=====" + user.uid);
Log.d("MyService", "user id =====" + user.id);
Log.d("MyService", "loadAllByIds user firstName =====" + user.firstName);
Log.d("MyService", "loadAllByIds user lastName =====" + user.lastName);
}
}
}
).start();
}
});
startService1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
AppDatabase.getInstance(MainActivity.this).getUserDao().deleteAll();
User user1 = new User("1","11", "one");
AppDatabase.getInstance(MainActivity.this).getUserDao().insert(user1);
User user2 = new User("2","22", "two");
AppDatabase.getInstance(MainActivity.this).getUserDao().insert(user2);
User user3 = new User("3","33", "three");
User user4 = new User("4","44", "fourth");
User user5 = new User("5","55", "fiveth");
AppDatabase.getInstance(MainActivity.this).getUserDao().insertSome(user3,user4,user5);
List<User> list =
AppDatabase.getInstance(MainActivity.this).getUserDao().getAll();
Log.d("MyService", "startService1 =======================");
for (User user : list) {
Log.d("MyService", "=======================");
Log.d("MyService", "user uid =====" + user.uid);
Log.d("MyService", "user id =====" + user.id);
Log.d("MyService", "user firstName =====" + user.firstName);
Log.d("MyService", "user lastName =====" + user.lastName);
}
List<User> userquery = AppDatabase.getInstance(MainActivity.this).getUserDao().findById("3");
for (User user : userquery) {
Log.d("MyService", "user id=3 uid =====" + user.uid);
Log.d("MyService", "user id=3 =====" + user.id);
Log.d("MyService", "user id=3 firstName =====" + user.firstName);
Log.d("MyService", "user id=3 lastName =====" + user.lastName);
}
}
}
).start();
}
});
}