DBExecutor主要的功能
使用了读写锁,支持多线程操作数据。
支持事务
支持ORM
缓存Sql,缓存表结构
这个类库主要用于android 数据库操作。 始终围绕着一个类对应一个表的概念。 只要创建一个实体类,就不用当心它怎么存储在数据库中,不用重新写增删改查的代码。基本的功能已经帮你实现好了。 增删改查数据只要一句搞定
boolean isSuccess = db.insert(person); boolean isSuccess = db.updateById(person); boolean isSuccess = db.deleteById(Person.class,1); List persons = db.findAll(Person.class);
---library_DB02 是项目的源码。
---DBLibrary_TestCase 是项目的测试用例,主要介绍该类库详细的用法
---doc 是网页文档
---db.jar 是该类库的jar包
---doc.chm 是该类库的chm文档
---设计框架.docx 是该类库的uml图生成的图片
---设计框架.mdl 是该类库的uml图,描述整个类库的架构
如果有什么建议可以发我邮箱 告知。794629068@qq.com
最后非常感谢XUtils代码的作者wyouflf。 该代码是对开源项目XUtils的数据库模块进行重构,及性能优化。 因为他的框架设计的非常合理。很多都是在其基础上完善的。
@Table(name = "Person") public class Person { @Id(autoIncrement = true) private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
必须包含@Id,@Id声明的字段对应表里的id。autoIncrement = true 自增长。 @Table 声明表的名字。@Table可以不需要。如果没有@Table以包名+类名为表的名字
支持基本类型以及基本类型的封装类,java.sql.Date 定义的字段。如果要支持其他类型的字段请查看DBLibrary_TestCase中的TestColumnConverter.java
1.DBExecutor主要用于执行sql语句,一个数据库对应一个DBExecutor
获取默认数据库的执行者 DBExecutor executor = DBExecutor.getInstance(context); 获取指定的数据库的执行者 DBExecutor.getInstance(dbHelper)
主要的方法用 db.execute(sqls),db.executeQuery(sql)等 封装了简基本的增删改查操作,使用db.insert(person);可以保存一条记录。 执行sql的时候。不用考虑表是否创建。如果表不存在,会自动创建。
2.Sql用于DBExecutor 执行的Sql
与sql文本语句是有差别的。 区别在于Sql 里包含
sql.getTable();//操作的表
sql.getSqlText();//可以带有?占位符的sql语句
sql.getBindValues();//?占位符对应的值。
sql.setCheckTableExit(checkTableExit);//设置执行sql时检查表是否存在,默认为true如果 检查到表不存在自动创建,设置为false 不做检查 不要害怕复杂,我们可以通过SqlFactory 创建它Sql
3.SqlFactory主要用于创建Sql语句,可以创建复杂增删改查的sql语句。
// 查询语句 Sql sql = SqlFactory.find(Person.class); sql = SqlFactory.find(Person.class).where("name", "=", "试着飞"); sql = SqlFactory.find(Person.class).where("age", "=", "10").or("age", "=", 11); sql = SqlFactory.find(Person.class).where("age", "=", "10").orderBy("name", false); sql = SqlFactory.find(Person.class).where("age", "=", "10").orderBy("name", false).limit(1); sql = SqlFactory.find(Person.class).where("name", "like", "%飞"); sql = SqlFactory.find(Person.class).where("name", "like", "_着_"); sql = SqlFactory.find(Person.class).where("age", "in", new int[] { 10, 11, 12 }); sql = SqlFactory.find(Person.class).where("name", "in", new String[] { "小明", "小红" }); sql = SqlFactory.find(Person.class, "name", "age").where("name", "=", "试着飞"); sql = SqlFactory.find(Person.class, "count(*) as num").where("age", "=", "11"); sql = SqlFactory.find(Person.class, "max(age) as maxAge", "min(age) as minAge").where("sex", "=", "男"); sql = SqlFactory.find(Person.class, new MaxFunction("age", "maxAge"), new MinFunction("age", "minAge")).where("sex", "=", "男"); sql = SqlFactory.find(Person.class).where("name=? and age=?", new Object[] { "小明", 11 }); // 删除语句 sql = SqlFactory.deleteAll(Person.class); sql = SqlFactory.delete(Person.class).where("age", "=", 11); sql = SqlFactory.deleteById(Person.class, 11); sql = SqlFactory.deleteById(Person.class, new int[] { 11, 12 }); // 更新语句 sql = SqlFactory.update(Person.class, new String[] { "name", "age" }, new Object[] { "小明", "11" }).where("id", "=", 1); sql = SqlFactory.updateById(new Person(1, "小明", 11, "男")); sql = SqlFactory.updateById(new Person(1, "小明", 11, "男"), "name"); // 如果存在 id为1的记录,就更新,否则 插入一条新记录 sql = SqlFactory.updateOrInsertById(new Person(1, "小明", 11, "男")); // 插入语句 sql = SqlFactory.insert(new Person(1, "小明", 11, "男")); // 自拼接sql语句 sql = SqlFactory.makeSql(Person.class, "select * from Person where age = ?", new Object[] { 11 });
更多详细信息请查看项目文档里面的内容
https://github.com/eltld/DBExecutor android 数据库框架,sqlite database 转载于:https://www.cnblogs.com/eustoma/p/4579179.html
DBExecutor 主要的功能 1.使用了读写锁,支持多线程操作数据。 2.支持事务 3.支持ORM 4.缓存Sql,缓存表结构 这个类库主要用于android 数据库操作。 始终围绕着一个类对应一个表的概念。 只要创建一个实体类,就不用当心它怎么存储在数据库中,不用重新写增删改查的代码。基本的功能已经帮你实现好了。 增删改查数据只要一句搞定 boolean isSuccess = db.ins
从戏剧!框架文档: Play2.0中没有内置的JPA实现;您可以选择任何可用的实现。例如,要使用Hibernate,只需将依赖项添加到项目中: 我的选择是什么而不是冬眠? 你认为什么最适合留言板网站? 我知道Hibernate有一点开销,对吗?
本文向大家介绍什么是 ORM 框架?相关面试题,主要包含被问及什么是 ORM 框架?时的应答技巧和注意事项,需要的朋友参考一下 ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。 使用 ORM 的优点:提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。
ORM(Object-relational mapping),对象关系映射。 是为了解决面向对象与关系型数据库存在的不匹配问题。 ORM框架的优点: 开发效率更高 数据访问更抽象、轻便 支持面向对象封装
本文向大家介绍用 Composer构建自己的 PHP 框架之使用 ORM,包括了用 Composer构建自己的 PHP 框架之使用 ORM的使用技巧和注意事项,需要的朋友参考一下 回顾 经过前三篇文章 基础准备 、 构建路由 和 设计 MVC ,我们已经得到了一个结构比较完整的 MVC 架构的 PHP 微框架,但是距离一个真正能够上手使用的框架还差一样东西: 数据库封装 ,本篇就将讲述如何集成一个
大多数现代应用程序使用关系数据库来存储数据。 最近,许多供应商转而使用对象数据库来减轻数据维护的负担。 这意味着对象数据库或对象关系技术正在处理存储,检索,更新和维护。 此对象关系技术的核心部分是映射orm.xml文件。 由于xml不需要编译,因此我们可以轻松地对管理多个数据源进行更改。 对象关系映射 对象关系映射(ORM)简要介绍了什么是ORM以及它是如何工作的。 ORM是一种编程功能,可以将数
问题内容: 我已经使用Hibernate多年了,从来没有遇到过任何问题,但是刚刚意识到我的大部分工作都涉及CRUD方法,在这种方法中,我需要随意保存和修改数据。 问题是有些人想要制作2个单独的应用程序,一个要批量插入,另一个要对插入的数据执行搜索。 由于这种情况下的持久性有点用处,因此团队希望不使用Hibernate,而是在插入应用程序上使用原始查询,而在查询应用程序上使用jOOQ之类的东西。 那
介绍 imi 中目前支持两个模型:数据库模型、内存表模型 数据库模型与传统 php-fpm 框架下使用并无多大差别,甚至更加好用。 在 imi 框架中,提供了一个模型生成工具。使用该工具生成的模型,在使用时无需手动定义字段,支持 IDE 代码提示。 模型生成命令使用说明:https://doc.imiphp.com/dev/generate/model.html 模型字段和序列化 模型实例对象可以
Laravel Doctrine ORM A drop-in Doctrine ORM 2 implementation for Laravel 5+ $scientist = new Scientist( 'Albert', 'Einstein');$scientist->addTheory( new Theory('Theory of relativity'));Entity