Orm——源码library使用
昨天一口气写了四篇博客,洪荒之力也是用的七七八八了,当然做事要有始有终,今天就给大家讲一下我搭的这个Orm小功能模块怎么使用在项目中。想要看整个框架原理的请依次浏览以下章节:
1、ORM开篇
首先我们看一下library的项目结构:
东西不多,用起来也很简单,需要注意的是:你写自己的DataBaseHelper需要继承library中的BaseDatabaseHelper;你写自己的Application需要继承library中的BaseDao,且记得在清单文件中声明:
我这里直接用的是library中的BaseApplication。
db数据库模块都是大同小异,我就不多说了,我这里重点说下,要是用这个library除了上面两点,你还需要做什么,这个library又有什么好处。
第一步:建立bean目录,写实体类,这个对于大家应该是家常便饭,我这里还是以Student举例:
package pdm.com.ormdatabase.bean;
import java.util.Random;
/**
* Created by pdm on 2016/10/3.
* CSDN :http://write.blog.csdn.net/postlist
* GitHub :https://github.com/flyingfishes
*/
public class Student {
private Integer stuId;
private String stuName;
private String stuClass;
public Student() {
super();
stuName = "name_"+ new Random().nextInt(10000);//随机取数
stuClass="class_"+new Random().nextInt(10000);
// TODO Auto-generated constructor stub
}
public Student(String stuName, String stuClass) {
super();
this.stuName = stuName;
this.stuClass = stuClass;
}
public Integer getStuId() {
return stuId;
}
public void setStuId(Integer stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuClass() {
return stuClass;
}
public void setStuClass(String stuClass) {
this.stuClass = stuClass;
}
@Override
public String toString() {
return "Student [stuId=" + stuId + ", stuName=" + stuName
+ ", stuClass=" + stuClass + "]";
}
}
第二步:写xml映射关系文件:
需要注意的是:命名规则:实体类名 + orm + xml,以Student为例:student.orm.xml(如果你不想这么写,可以改library源码,允许你随便改)
这里的规则,依然是column值对应你数据库表字段名,property值对应Student中的成员变量名,需要注意beanName和daoName路径需要是全路径。<orm tablename="students" beanName="pdm.com.ormdatabase.bean.Student" daoName="pdm.com.ormdatabase.dao.StudentDao"> <!-- 是否自增长identity --> <key column="_sid" property="stuId" type="java.lang.Integer" identity="true"></key> <item column="stu_name" property="stuName" type="java.lang.String"></item> <item column="stu_classname" property="stuClass" type="java.lang.String"></item> </orm>
第三步:建立dao目录,写dao类,这里注意写法就行了:
public class StudentDao extends BaseDao<Student> {
public StudentDao(BaseDatabaseHelper helper) {
super(helper,Student.class);
// TODO Auto-generated constructor stub
}
public Orm getOrm(){
return super.getOrm();
}
}
做完这三步,我们就可以愉快的使用数据库的增删改查了,有没有使用Gson解析的感觉,就这么简单,不管你以后项目怎么加表,你只要做这三步,我们继续看如何使用(这里只贴部分使用代码,看全部请下载源码:Orm_Reflect_DB):
<span style="white-space:pre"> </span>//初始化dao对象
dao = new StudentDao(BaseDatabaseHelper.getInstance(this));
Student student = new Student();
list = null;
//获取dao对应的对象映射对象
orm = dao.getOrm();
try {
dao.insert(student); //插入一个Student对象到数据库
student = new Student();
String where = orm.getKey().getColumn() + "=?"; //修改数据库的条件字段,所有数据库字段都可以通过orm对象获取,不用一个个字段粘贴了吧
String[] args = new String[]{"1"};//条件字段的值
dao.update(student, where, args); //修改主键值 = 1的Student
list = dao.selectAll();<span style="white-space:pre"> </span>//查询所有字段
} catch (Exception e) {
e.printStackTrace();
}
是不是so easy!!!每一个dao类对应一张表的操作,贴效果图:
到这里Orm部分就结束了,欢迎各位参考指正,如有需要会继续强大、更新。
欢迎下载源码Orm_Reflect_DB