Android sqlite数据库操作通用框架 下载本文

[置顶] Android sqlite数据库操作通用框架AHibernate(一)-CRUD示例和使用步骤

AHibernate简介

一句话描述,使用AHibernate框架进行sqlite数据库操作您将从重复性劳动中解脱出来.

(一)支持功能:

1.自动建表,支持属性来自继承类:可根据注解自动完成建表,并且对于继承类中的注解字段也支持自动建表.

2.自动支持增删改,增改支持对象化操作:增删改是数据库操作的最基本单元,不用重复写这些增删改的代码,并且添加和更新支持类似于hibernate中的对象化操作.

3.查询方式灵活:支持android框架提供的方式,也支持原生sql方式. 4.查询结果对象化:对于查询结果可自动包装为实体对象,类似于hibernate框架.

5.查询结果灵活:查询结果支持对象化,也支持结果为List>形式,这个方法在实际项目中很实用,且效率更好些.

6.日志较详细:因为android开发不支持热部署调试,运行报错时可根据日志来定位错误,这样可以减少运行Android的次数.

(二)不足之处:

1.id暂时只支持int类型,不支持uuid,在sqlite中不建议用uuid.

2.现在每个方法都自己开启和关闭事务,暂时还不支持在一个事务中做多个操作然后统一提交事务.

(三)作者寄语:

昔日有JavaScript借Java发展,今日也希望AHibernate借Hibernate之名发展.希望这个项目以后会成为开源社区的重要一员,更希望这个项目能给所有Android开发者带便利.欢迎访问我的博客:http://blog.csdn.net/lk_blog,这里有这个框架的使用范例和源码,希望朋友们多多交流完善这个框架,共同推动中国开源事业的发展,AHibernate期待与您共创美好未来!!! 框架源代码见下一篇博

客:http://blog.csdn.net/lk_blog/article/details/7456125 ,源代码供大家交流使用,欢迎朋友们对代码提供宝贵意见. 先看一个使用例子吧,看看您是否满意:

[java] view plaincopyprint?

1. package com.tgb.lk.demo; 2.

3. import java.util.List; 4. import java.util.Map; 5.

6. import com.tgb.lk.demo.R; 7.

8. import com.tgb.lk.demo.dao.impl.StudentDaoImpl; 9. import com.tgb.lk.demo.dao.impl.TeacherDaoImpl; 10. import com.tgb.lk.demo.model.Student; 11. import com.tgb.lk.demo.model.Teacher;

12.

13. import android.app.Activity; 14. import android.os.Bundle; 15.

16. public class MainActivity extends Activity { 17. @Override

18. public void onCreate(Bundle savedInstanceState) { 19. super.onCreate(savedInstanceState); 20. setContentView(R.layout.main); 21.

22. // 熟悉用接口的朋友注意哦,这里也可以定义为接口哦,见StudentDaoImpl.java中

的注释.

23. TeacherDaoImpl teacherDao = new TeacherDaoImpl(MainActivity.this); 24. StudentDaoImpl studentDao = new StudentDaoImpl(MainActivity.this); 25.

26. // 添加

27. Teacher teacher = new Teacher(); 28. teacher.setName(\米老师\29. teacher.setAge(50); 30. teacher.setTitle(\教授\

31. Long teacherId = teacherDao.insert(teacher); 32.

33. Student student1 = new Student(); 34. student1.setName(\35. student1.setAge(26);

36. student1.setClasses(\五期提高班\

37. student1.setTeacherId(teacherId.intValue()); 38. Long studentId1 = studentDao.insert(student1); 39.

40. Student student2 = new Student(); 41. student2.setName(\42. student2.setAge(26);

43. student2.setClasses(\五期提高班\

44. student2.setTeacherId(teacherId.intValue()); 45. Long studentId2 = studentDao.insert(student2);

46.

47. Student student3 = new Student(); 48. student3.setName(\49. student3.setAge(27);

50. student3.setClasses(\五期提高班\

51. student3.setTeacherId(teacherId.intValue()); 52. Long studentId3 = studentDao.insert(student3); 53.

54. // 查询

55. // 方式1:根据Id查询单个对象

56. // 结果:student1Student [id=1, name=lk,age=26,teacherId=1, classes=

五]

57. Student student4 = studentDao.get(studentId1.intValue()); 58. System.out.println(\59.

60. // 方式2:查询出表中的所有记录 61. // 执行结果如下:

62. // list1:Student [id=1, name=lk,age=26,teacherId=1, classes=五期提高

班]

63. // list1:Student [id=2, name=cls,age=26,teacherId=1, classes=五期提高

班]

64. // list1:Student [id=3, name=lb,age=27,teacherId=1, classes=五期提高

班]

65. List list1 = studentDao.find(); 66. for (Student student : list1) {

67. System.out.println(\68. } 69.

70. // 方式3:限制条件查询和查询结果 71. // 执行结

果:list2:Student [id=2, name=cls,age=0,teacherId=0, classes=null]

72. List list2 = studentDao.find(new String[] { \

73. \

ll,