Android Room实现SQLite增删查改

1.添加依赖:

 //room实现sqlite数据库
    def room_version = "2.2.0-alpha01"
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

2.创建room实现三步走:

2.1:创建entity实体类:记得加上注解@Entity

@Entity
public class User {
    //添加id自动生成的注解
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "_id")//定义数据库列名为 _id
    private int id;
    private String name;
    private int age;
    @Ignore
    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    @Ignore
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public User (){}

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

3.添加dao层接口实现对sqlite数据库的增删查改:

/**
 * 该接口里面实现的是对于数据库进行增删查改的注解开发SQL语句
 */
@Dao
public interface UserDao {
    //插入数据
    @Insert
    void insertUser(User...users);

    //删除(可以传递如何参数进行查找删除)
    @Delete
    void delete(User... users);

    //修改
    @Update
    void updateUser(User... users);

    //查询全部数据
    @Query("select * from user")
    List findAll();

    //查询name查找
    @Query("select * from user where name=:name")
    List findByName(String... name);

    //根据id查找
    @Query("select * from user where _id=:id")
    User findById(int... id);

    //删除数据库表全部数据
    @Query("delete from user")
    void DeleteAll();
}

4.创建Datebase继承RoomDatabase实现创建数据库和创建表

/**
 * 这是一个抽象类用于MainActiyity实现里面的抽象方法
 * 1.添加注解 创建或者关联表数据
 */
@Database(entities = {User.class},version = 2,exportSchema = false)
public abstract class UserDatabase extends RoomDatabase {

    //单例模式 返回db
    private static UserDatabase INSTANCE;

    //用户操作Dao,必须暴露dao,dao被用户拿到后,就能进行增删查改
    public abstract UserDao getUserDao();

    public static synchronized UserDatabase getInstance(Context context){
        if (INSTANCE == null){
            INSTANCE = Room.databaseBuilder
                    (context.getApplicationContext(),UserDatabase.class,"say.db")
                    //数据库默认异步线程
                    //用于测试:强制开机 主线程也可以操作数据库(测试可以用,真实环境不要用)
                    .allowMainThreadQueries()
                    .build();
        }
        return INSTANCE;
    }
}

5.最后在MainActitity类里面调用Dao层方法实现增删查改

/**
 * room实现sqlite数据库的crud
 * 1.添加依赖
 * 2.添加实体类
 * 3.添加接口类 实现增删查改的注解开发SQL语句
 * 4.添加类继承RoomDataBase 实现创库创表
 */
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //插入两个数据
    public void insert(View view){
        //id属于自增不用赋值
        User user1 =new User("admin",12);
        User user2 = new User("test",13);
        UserDatabase.getInstance(this)
                .getUserDao()
                .insertUser(user1,user2);
        System.out.println("插入数据成功");
    }

    //条件删除:通过id筛查数据进行对比删除
    public void delete(View view){
        User user = new User();
      user.setId(1);
      UserDatabase.getInstance(this).getUserDao().delete(user);
        System.out.println("根据条件id删除数据成功");
    }

    //条件修改:id
    public void update(View view){
        User user = new User();
        user.setId(1);
        user.setName("张三");
        user.setAge(14);
        UserDatabase.getInstance(this).getUserDao().updateUser(user);
        System.out.println("根据id修改数据成功");
    }

    //条件查询 根据findByName
    public void findByName(View view){
        String name ="amdin";
        List list = UserDatabase.getInstance(this).getUserDao().findByName(name);
        for (User user : list){
            System.out.println(user.toString());
            Log.e("tt", user.toString());
        }
    }

    //条件查询:根据findById
    public void findById(View view){
        Integer id = 1;
        User user = UserDatabase.getInstance(this).getUserDao().findById(id);
        System.out.println("数据响应成功"+user.toString());
        Log.e("tt", user.toString());
    }

    //条件查询全部:findAll
    public void findAll(View view){
        List list = UserDatabase.getInstance(this).getUserDao().findAll();
        for (User u : list){
            System.out.println(u.toString());
            Log.e("tt", u.toString());
        }
    }

    //删除全部数据
    public void deleteAll(View view){
        UserDatabase.getInstance(this).getUserDao().DeleteAll();
        System.out.println("删除全部数数据成功");
    }

}

7.activity_main.xml里面简单布局,此处简单实现一下就可以了:




    

 android:onClick="insert" insert对应的就是咱们MainActiyity里面写的方法,

public void insert(View view){} 通过View view绑定实现监听点击触发事件

Android Room实现SQLite增删查改_第1张图片

你可能感兴趣的:(sqlite,android,数据库)