[Hbase]
第三章:Room数据库使用,android输入法开发软键盘切换
数据库
发布于:2021-12-26 14:08
|
阅读数:354
|
评论:0
|
@Entity(tableName = "user_info", ignoredColumns = {"num1", "num3"})
public class Student {
//PrimaryKey 必须要有,且不为空,autoGenerate 主键的值是否由Room自动生成,默认false
@PrimaryKey(autoGenerate = true)
public int id;
//指定该字段在表中的列的名字
@ColumnInfo(name = "name")
public String name;
//@ColumnInfo:表中的字段,默认用下面的字段名age
@ColumnInfo
public int age;
//忽略该字段
@Ignore
public String studyNum;
@ColumnInfo
public String num1;
@ColumnInfo
public String num2;
@ColumnInfo
public String num3;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", studyNum='" + studyNum + '\'' +
", num1='" + num1 + '\'' +
", num2='" + num2 + '\'' +
", num3='" + num3 + '\'' +
'}';
}
}
package cn.yumakeji.jetpackroomstudy;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
@Dao
public interface StudentDao {
/**
- OnConflictStrategy.REPLACE :直接覆盖
- @param students
*/
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(Student... students);
//只能传递对象的,删除时根据Student中的主键 来比对的
@Delete
void delete(Student... student);
//只能传递对象的,更新时根据Student中的主键 来比对的
@Update(onConflict = OnConflictStrategy.REPLACE)
void update(Student... student);
//获取表中所有数据
@Query("select * from user_info")
List<Student> findAll();
//根据name来查找数据(这里是一对一,如果是一对多,这里可以写List<Student>)
@Query("select * from user_info where name = :name")
Student findByName(String name);
//根据name来查找数据(这里是一对多,如果是一对一,这里可以写Student)
@Query("select * from user_info where age = :age")
List<Student> findByAge(int age);
/**
- 注意,冒号后面必须紧跟参数名,中间不能有空格。大于小于号和冒号中间是有空格的。
- select *from cache where【表中列名】 =:【参数名】------>等于
- where 【表中列名】 < :【参数名】 小于
- where 【表中列名】 between :【参数名1】 and :【参数2】------->这个区间
- where 【表中列名】like :参数名----->模糊查询
- where 【表中列名】 in (:【参数名集合】)---->查询符合集合内指定字段值的记录
- @param ids
- @return
*/
//查找参数集合
@Query("select * from user_info where id in (:ids)")
List<Student> findByIds(int[] ids);
}
import cn.yumakeji.jetpackroomstudy.global.AppGlobals;
@Database(entities = {Student.class}, version = 1)
public abstract class RoomDataBase extends RoomDatabase {
private static final RoomDataBase database;
static {
//创建一个内存数据库
//但是这种数据库的数据只存在于内存中,也就是进程被杀之后,数据随之丢失
//Room.inMemoryDatabaseBuilder()
database = Room.databaseBuilder(AppGlobals.getApplication(), RoomDataBase.class, "jetpack_demo")
//是否允许在主线程进行查询
.allowMainThreadQueries()
//数据库创建和打开后的回调
//.addCallback()
//设置查询的线程池
//.setQueryExecutor()
//.openHelperFactory()
//room的日志模式
//.setJournalMode()
//数据库升级异常之后的回滚
//.fallbackToDestructiveMigration()
//数据库升级异常后根据指定版本进行回滚
//.fallbackToDestructiveMigrationFrom()
//数据库升级的入口(如果没有配置升级的时候会将数据库内容全部清除)
// .addMigrations(CacheDatabase.sMigration)
.build();
}
/**
*/
public abstract StudentDao getStudentDao();
public static RoomDataBase get() {
return database;
}
/**
- 数据库升级的入口(如果没有配置升级的时候会将数据库内容全部清除)
*/
// static Migration sMigration = new Migration(1, 3) {
// @Override
// public void migrate(@NonNull SupportSQLiteDatabase database) {
// database.execSQL("alter table teacher rename to student");
// database.execSQL("alter table teacher add column teacher_age INTEGER NOT NULL default 0");
// }
// };
}
public class MainActivity extends AppCompatActivity {
private List<Student> mList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i = 0; i < 10; i++) {
Student student = new Student();
student.name = "huangxiaoguo" + i;
student.age = 18 + i;
student.num1 = String.valueOf(Math.round(Math.random() * 10) + 1);
student.num2 = String.valueOf(Math.round(Math.random() 10) 10 + 10);
student.num3 = String.valueOf(Math.round(Math.random() 10) 10 + 20);
mList.add(student);
}
}
/**
最后
本文在开源项目GitHub中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...
目前已经更新的部分资料,需要的自己取:
|
免责声明:
1. 本站所有资源来自网络搜集或用户上传,仅作为参考不担保其准确性!
2. 本站内容仅供学习和交流使用,版权归原作者所有!© 查看更多
3. 如有内容侵害到您,请联系我们尽快删除,邮箱:kf@codeae.com
|
|
|
|
|