dhroid - Dhdb orm简化sqlite数据库操作

android数据库其实使用的不多,dhroid框架中的网络缓存使用了数据库我就写了也写了一个数据库操作工具

dhroid 数据库基本还是单表操作多,为了简单我只做了单表,那些级联,懒加载,什么的分两个操作区解决吧

初始化在application中基于ioc的配置

//数据库初始化
DhDB db=IocContainer.getShare().get(DhDB.class);
db.init("dhdbname", Const.DATABASE_VERSION);

 


如果你的数据库在sd卡上,你可以 

db.initInSD("文件夹位置", "dhdbname", Const.DATABASE_VERSION);

bean定义
@Entity(table="student")
public class Student {

@Column(pk=true)//主键不能为基本类型
public Long id;
public String name;
@Column(name="num_no")
public String num;
@Column(name="create_time")
public Date createTime;
public int age;
public int sex;
public boolean dangyuang;

@NoColumn
public String temp;
//setget...
}

 


@Entity(table="student") 表示这个对象进行持久化,可以不添加,默认都可以,默认对象名和表名相同


默认的属性都会被持久化的默认列名和属性名相同
@Column(pk=true)定义主键
@Column(name="num_no")定义列名

@NoColumn 表示不参加持久化

属性支持基本数据类型

获取Dhdb对象下面我是用的ioc 你也可以制作单例

@Inject
DhDB db;

 

 


保存和更新
if(student == null){
student=new Student();
isnew=true;
}
student.setName(nameV.getText().toString());
student.setNum(numV.getText().toString());
student.setSex(Integer.parseInt(sexV.getText().toString()));
student.setAge(Integer.parseInt(ageV.getText().toString()));
student.setDangyuang(dangyuanV.getText().toString().equals("1")?true:false);
student.setCreateTime(new Date());
if(isnew){
db.save(student);
}else{
db.update(student);
}

 

删除

db.delete(student);

 


查询(基本的sql你还是需要了解的啊)

List<Student> list=db.queryList(Student.class, ":name like ? or :num like ?","%name%","%num%");

 


:num 已:开头的占位符表示对象属性(这里的num属性对应数据库里的num_no)

这样就可以使用对象属性进行查询,而不用了解数据库
? 占位符指数据用后面的数据替换 方法支持多个参数
了解spring jdbctemplete 的应该很喜欢这样的写法


增删改查都都有了是不是很好用啊

posted @ 2015-07-16 09:51  n1rAy  阅读(922)  评论(0编辑  收藏  举报