Android数据库hibernate框架

时间:2022-02-08 23:54:50

说明

/**
* YDL_Hibernate总结 <br/>
* (一)支持功能: 1.自己主动建表,支持属性来自继承类:可依据注解自己主动完毕建表,而且对于继承类中的注解字段也支持自己主动建表. 2.自己主动支持增删改
* ,增改支持对象化操作:增删改是数据库操作的最基本单元,不用反复写这些增删改的代码,而且加入和更新支持相似于hibernate中的对象化操作.
* 3.查询方式灵活:支持android框架提供的方式,也支持原生sql方式.
* 4.查询结果对象化:对于查询结果可自己主动包装为实体对象,相似于hibernate框架.
* 5.查询结果灵活:查询结果支持对象化,也支持结果为List<Map<String,String>>形式,这种方法在实际项目中非常有用,且效率更好些.
* 6.日志较具体:由于android开发不支持热部署调试,运行报错时可依据日志来定位错误,这样能够降低运行Android的次数. <br/>
* (二)不足之处: <br/>
* 1.id临时仅仅支持int类型,不支持uuid,在sqlite中不建议用uuid.
* 2.如今每一个方法都自己开启和关闭事务,临时还不支持在一个事务中做多个操作然后统一提交事务. <br/>
* (三)作者寄语:<br/>
* 昔日有JavaScript借Java发展,今日也希望YDL_Hibernate借Hibernate之名发展.
* 希望这个项目以后会成为开源社区的重要一员,更希望这个项目能给全部Android开发人员带便利.
* 欢迎訪问我的博客:http://blog.csdn.net/linglongxin24,
* 这里有这个框架的使用范例和源代码,希望朋友们多多交流完好这个框架,共同推动中国开源事业的发展,YDL_Hibernate期待与您共创美好未来!!!
*/
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // 熟悉用接口的朋友注意哦,这里也能够定义为接口哦,见StudentDaoImpl.java中的凝视.
TeacherDaoImpl teacherDao = new TeacherDaoImpl(MainActivity.this);
StudentDaoImpl studentDao = new StudentDaoImpl(MainActivity.this); // 加入
Teacher teacher = new Teacher();
teacher.setName("米老师");
teacher.setAge(50);
teacher.setTitle("教授");
Long teacherId = teacherDao.insert(teacher); Student student1 = new Student();
student1.setName("lk");
student1.setAge(26);
student1.setClasses("五");
student1.setTeacherId(teacherId.intValue());
Long studentId1 = studentDao.insert(student1); Student student2 = new Student();
student2.setName("cls");
student2.setAge(26);
student2.setClasses("五");
student2.setTeacherId(teacherId.intValue());
Long studentId2 = studentDao.insert(student2); Student student3 = new Student();
student3.setName("lb");
student3.setAge(27);
student3.setClasses("五期");
student3.setTeacherId(teacherId.intValue());
Long studentId3 = studentDao.insert(student3); // 查询
// 方式1:依据Id查询单个对象
// 结果:student1Student [id=1, name=lk,age=26,teacherId=1, classes=五]
Student student4 = studentDao.get(studentId1.intValue());
System.out.println("student4" + student4); // 方式2:查询出表中的全部记录
// 运行结果例如以下:
// list1:Student [id=1, name=lk,age=26,teacherId=1, classes=五]
// list1:Student [id=2, name=cls,age=26,teacherId=1, classes=五]
// list1:Student [id=3, name=lb,age=27,teacherId=1, classes=五期]
List<Student> list1 = studentDao.find();
for (Student student : list1) {
System.out.println("list1:" + student);
} // 方式3:限制条件查询和查询结果
// 运行结果:list2:Student [id=2, name=cls,age=0,teacherId=0, classes=null]
List<Student> list2 = studentDao.find(new String[] { "id", "name" },
" id = ? ", new String[] { studentId2.toString() }, null, null,
null, null);
for (Student student : list2) {
System.out.println("list2:" + student);
} // 方式4:使用sql查询出结果,此种方式是2,3,4中最灵活的.
// 运行结果:
// list3:Student [id=2, name=cls,age=26,teacherId=1, classes=五]
// list3:Student [id=3, name=lb,age=27,teacherId=1, classes=五期]
List<Student> list3 = studentDao.rawQuery(
"select * from t_student where id in (?,? ) ", new String[] {
studentId2.toString(), studentId3.toString() });
for (Student student : list3) {
System.out.println("list3:" + student);
} // 方式4进阶:假设想查询出米老师的学生,能够这样实现:
// 运行结果:
// list4:Student [id=1, name=lk,age=26,teacherId=1, classes=五]
// list4:Student [id=2, name=cls,age=26,teacherId=1, classes=五]
// list4:Student [id=3, name=lb,age=27,teacherId=1, classes=五期]
List<Student> list4 = studentDao
.rawQuery(
"select s.* from t_student s join t_teacher t on s.teacher_id = t.id where t.name= ? ",
new String[] { "米老师" });
for (Student student : list4) {
System.out.println("list4:" + student);
} // 方式5:我仅仅想知道姓名和年龄,查询得到List<Map<String,String>>形式.仅仅查2个字会比查询全部字段并封装为对象效率高吧,尤其字段值非常多时我们的手机更喜欢这样的方式哦.
// 结果:
// listMap1: name:lk;age:26
// listMap1: name:cls;age:26
// listMap1: name:lb;age:27
List<Map<String, String>> listMap1 = studentDao.query2MapList(
"select name,Age from t_student ", null);
for (Map<String, String> map : listMap1) {
// 查询的List中的map以查询sql中的属性值的小写形式为key,注意是小写形式哦.
System.out.println("listMap1: name:" + map.get("name") + ";age:"
+ map.get("age"));
} // 方式5进阶:我想知道前2名学生的姓名和班主任姓名,这样的方式是不是超灵活啊,用其它的方式查询都没这样的方式好用吧,哈哈.
// 结果:
// listMap2: student_name:lk;teacher_name:米老师
// listMap2: student_name:cls;teacher_name:米老师
List<Map<String, String>> listMap2 = studentDao
.query2MapList(
"select s.name sname,t.name tname from t_student s join t_teacher t on s.teacher_id = t.id limit ? ",
new String[] { "2" });
for (Map<String, String> map : listMap2) {
System.out.println("listMap2: student_name:" + map.get("sname")
+ ";teacher_name:" + map.get("tname"));
} // 更新
// 结果: Student [id=1, name=李坤,age=26,teacherId=1, classes=五期]
student1 = studentDao.get(studentId1.intValue());
student1.setName("李坤");
student1.setClasses("五期");
studentDao.update(student3);
System.out.println(student1); // 删除:支持单个id删除,也支持多个id同一时候删除哦.
studentDao.delete(studentId1.intValue());
studentDao.delete(new Integer[] { studentId2.intValue(),
studentId3.intValue() }); // 支持运行sql语句哦.
teacherDao.execSql("insert into t_teacher(name,age) values('米教授',50)",
null); }
}

Demo和源代码下载

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Android数据库hibernate框架的更多相关文章

  1. android数据库持久化框架

    android数据库持久化框架

  2. android数据库持久化框架&comma; ormlite框架&comma;

    前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...

  3. Android 数据库ORM框架GreenDao学习心得及使用总结&lt&semi;一&gt&semi;

    转: http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁的读 ...

  4. Android 数据库ORM框架GreenDao学习心得及使用总结&lt&semi;二&gt&semi;

    转:http://blog.csdn.net/xushuaic/article/details/24496191 第五篇 查询 查询会返回符合某些特定标准的实体.你可以使用原始的SQL定制查询语句,或 ...

  5. Android 数据库框架ormlite

    Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...

  6. Android 数据库框架OrmLite的使用(一)

    在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

  7. 采用Hibernate框架的研发平台如何能够真正兼容Oracle和sqlServer数据库

    都说Hibernate框架的使用可以很容易的让你的研发平台支持多种不同类型的数据库,但实践表明,这里的“容易”,是相对的. 想让研发平台支持多种数据库,并不是一件简单的事,也可以这么说:并不是只要使用 ...

  8. Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite

    Android数据库框架--GreenDao轻量级的对象关系映射框架,永久告别sqlite 前不久,我在写了ORMLite这个框架的博文 Android数据库框架--ORMLite轻量级的对象关系映射 ...

  9. Android数据库框架——ORMLite轻量级的对象关系映射&lpar;ORM&rpar;Java包

    Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...

随机推荐

  1. Android ProgressBar分析及自定义ProgressBar

    ProgressBar是在执行耗时操作时的一种人性化设计.分为两种形式:转圈的,能显示进度的. 而能取决于是什么样式的PregressBar,当然就是PregressBar的样式啦~ Widget.P ...

  2. JavaBean与Jsp

    这一节我们总结一下JavaBean和Jsp的关系. 1. JavaBean javaBean是一个遵循特定写法的Java类,它通常具有如下特点:        1)这个java类必须具有一个无参构造函 ...

  3. &period;NET编译的目标平台&lpar;AnyCPU&comma;x86&comma;x64&rpar;

    转载:http://blog.sina.com.cn/s/blog_78b94aa301014i8r.html 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有D ...

  4. Java数据类型中String、Integer、int相互间的转换

    1.Integer转换成int的方法 Integer i;  int k = i.intValue(); 即Integer.intValue(); 2.int转换成Integer int i; Int ...

  5. libstdc&plus;&plus;&period;so&period;5&colon; cannot open shared object file&colon; No such file or directory

    中文分词一般会选择ICTCLAS的模块,虽然不能说很完美,但也算是一个不错的选择.它提供了windows版本和linux版本,并支持C/C#/JNI接口.这本来是一个不错的事情,但版本一多,官方似乎就 ...

  6. &lbrack;BZOJ 1188&rsqb; &lbrack;HNOI2007&rsqb; 分裂游戏 【博弈论&vert;SG函数】

    题目链接:BZOJ - 1188 题目分析 我们把每一颗石子看做一个单个的游戏,它的 SG 值取决于它的位置. 对于一颗在 i 位置的石子,根据游戏规则,它的后继状态就是枚举符合条件的 j, k.然后 ...

  7. 关于cgi、FastCGI、php-fpm、php-cgi

    搞了好长时间的php了,突然有种想法,想把这些整理在一起,于是查看各种资料,找到一片解释的很不错的文章,分享一下-- 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式 ...

  8. Node&period;js之操作文件系统(一)

    Node.js之操作文件系统(一) 1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建.写入及删除操作.,在fs模块中,所有对文件及目录的操作都可以使用同步与异步 ...

  9. &period;NET题目&lpar;收集来自网络&rpar;

    1: .NET和c#有什么区别? 答: .NET一般是指.NET FrameWork框架,是一种平台,一种技术 c#是一种编程语言,是可以基于.NET平台的应用 2: c#中的委托是什么?事件是不是一 ...

  10. 五&period;HashTable原理及实现学习总结

    有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相对应的valu ...