OrmLite简单使用
以收货地址管理为例来简单掌握该框架使用,涉及数据库增删改查操作
表设计:ReceiptAddressInfo //收货地址信息表
t_receipt_address | ||
字段名 | 字段类型 | |
id | id | int |
姓名 | name | String |
手机号 | phone | String |
备用号 | otherPhone | String |
收货地址 | receiptAddress | String |
详细地址 | detailAddress | String |
标签(类别) | lable | String |
添加时间 | updateTime | Long |
添加依赖
compile 'com.j256.ormlite:ormlite-android:5.0'
使用
1.首先数据库帮助类MySqliteHelper 继承OrmLiteSqliteOpenHelper。
重写相应方法和构造函数
构造方法:用来确定数据库
onCreate方法:用来创建数据库表
onUpgrade方法:用来升级数据库
代码如下:
public class MySqliteHelper extends OrmLiteSqliteOpenHelper {
private static final String databaseName ="";//数据库名
private static final SQLiteDatabase.CursorFactory factory =null;//指针工厂
private static final int databaseVersion = 1;//数据库版本
public MySqliteHelper(Context context) {
super(context, databaseName, factory, databaseVersion);//创建数据库
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource,ReceiptAddressInfo.class);//创建一个地址信息表ReceiptAddressInfo。
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
}
}
2.创建表的映射bean类ReceiptAddressInfo(需要有特别要求)完成映射关系
//使用OrmLite时对bean类的要求
/**
* 1.无参构造函数
* 2.get/set
* 3.映射表名
* 4.映射字段
*/
对应的bean类如下:
//3.映射表名
@DatabaseTable(tableName = "t_receipt_address")//映射表名为t_receipt_address
public class ReceiptAddressInfo {
//使用OrmLite时对bean类的要求
/**
* 1.无参构造函数
* 2.get/set
* 3.映射表名
* 4.映射字段
*/
//1.无参构造函数
public ReceiptAddressInfo() {
}
//4.映射字段
@DatabaseField(columnName = "_id",generatedId = true)//映射表字段为:_id,并且自增
private int id;
@DatabaseField(columnName = "name")
private String name;
@DatabaseField(columnName = "uid")
private String uid;
@DatabaseField(columnName = "sex")
private String sex;
@DatabaseField(columnName = "phone")
private String phone;
@DatabaseField(columnName = "other_phone")
private String otherPhone;
@DatabaseField(columnName = "receipt_address")
private String receiptAddress;
@DatabaseField(columnName = "detail_address")
private String detailAddress;
@DatabaseField(columnName = "lable")
private String lable;//公司 家庭 无
@DatabaseField(columnName = "update_time")
private long updateTime=System.currentTimeMillis();
//2.get/set
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
..........略........
public long getUpdateTime() {
return updateTime;
}
public void setUpdateTime(long updateTime) {
this.updateTime = updateTime;
}
}
3.数据库操作—增
//模拟几个收货地址
MySqliteHelper helper = new MySqliteHelper(MyApp.getContext());
try {
mDao = helper.getDao(ReceiptAddressInfo.class);
} catch (SQLException e) {
e.printStackTrace();
}
for (int i = 0; i < 20; i++) {
ReceiptAddressInfo bean=new ReceiptAddressInfo();
bean.setUid("uid"+i);
bean.setName("用户"+i);
bean.setSex("man");
bean.setPhone("1111");
bean.setOtherPhone("1111");
bean.setReceiptAddress("北京昌平北七家");
bean.setDetailAddress("修正大厦4");
bean.setLable("公司");
try {
mDao.create(bean);//增加操作
} catch (SQLException e) {
e.printStackTrace();
}
}
4.数据库操作—查
public void loadData() {
try {
List<ReceiptAddressInfo> infos = mDao.queryForAll();
//查询所有数据,按照插入顺序。
view.showList(infos);
} catch (SQLException e) {
e.printStackTrace();
}
}
//按照时间的逆序来进行查询
public void loadData() {
try {
// List<ReceiptAddressInfo> infos = mDao.queryForAll();
List<ReceiptAddressInfo> infos = mDao.queryBuilder().orderBy("update_time",false).query();
//按照update_time的倒叙来进行查询(关键字queryBuilder)
view.showList(infos);//展示数据
} catch (SQLException e) {
e.printStackTrace();
}
}
5.数据库操作—改
public void update(ReceiptAddredsInfo bean) {
try {
mDao.update(bean);
view.showMessage("更新成功");
} catch (SQLException e) {
e.printStackTrace();
}
}