Simple数据访问层基于Spring JDBC。
Simple数据访问层的核心概念为“实体管理器”,所有对数据的访问都是通过不同的“实体管理器”产生的,这使得Simple对数据的访问更加简单、一致、也更为安全。
Simple提供了三种“实体管理器”,分别为:
表实体管理器
具有缓存(或分布式缓存)的表实体管理器
查询实体管理器
表实体管理器
表实体管理器提供了对单张物理表的基本操作(select,insert,update、delete),可以通过如下方式获取表实体管理器:
- ITableEntityManager tem =
- DataObjectManagerFactory.getTableEntityManager(dataSource, new Table("simple_test", "id"));
下面演示一些通过ITableEntityManager操作表数据的例子:
查询id等于1的单行记录
- Map data = tem.queryForMap(new UniqueValue(1));
- 或则
- TestBean bean = tem.queryForObject(new UniqueValue(1), TestBean.class);
查询id大于1的多行记录
- IQueryEntitySet
- 或则
- IQueryEntitySet
qs2 = tem.query(new ExpressionValue("id>1", TestBean.class));
插入id等于2的记录
- Map data2 = new HashMap();
- data2.put("id", 2);
- data2.put("f1", "value1");
- data2.put("f2", true);
- tem.insert(data2);
- 或则
- TestBean bean2 = new TestBean();
- bean2.setId(2);
- bean2.setF1("value1");
- bean2.setF2(true);
- tem.insert(bean2);
更新id等于2的记录
- data2.put("f1", "value1_update");
- tem.update(data2);
- 或则
- bean2.setF1("value1_update");
- tem.update(bean2);
删除id等于2的记录
- tem.delete(new ExpressionValue("id=2"));
操作多个物理表
在非事务环境下,操作多张表只需定义不同的表实体管理器:
- TestBean bean = new TestBean();
- bean.set…
- tem.insert(bean);
- ITableEntityManager tem2 =
- DataObjectManagerFactory.getTableEntityManager(dataSource, new Table("simple_test2", "id"));
- Test2Bean bean2 = new Test2Bean();
- bean2.set…
- tem2.insert(bean2);
- …
在事务环境下,操作多张表需要定义监听器:
- tem.insertTransaction (bean, new TableEntityAdapter() {
- public void afterInsert(final ITableEntityManager manager,
- final Object object, final SQLValue sqlValue) throws EntityException {
- …
- tem2.insert(bean2);
- }
- });
具有缓存(或分布式缓存)的表实体管理器
具有缓存(或分布式缓存)的表实体管理器继承自表实体管理器,其用法和表实体管理器一样,区别在于查询的结果对象,一个是从数据库直接创建的,一个是从缓存设备中获取的,Simple默认采用EHCahce来管理缓存。
查询实体管理器
和表实体管理器不同,查询实体管理器是基于SQL的,通过传递SQL语句来获取结果集,并且结果集对象以Map形式存在,可以通过如下方式获取表实体管理器:
- IQueryEntityManager qem = DataObjectManagerFactory.getQueryEntityManager(dataSource);
查询指定条件的单行或多行记录
- Map data = qem.queryForMap(
- new SQLValue("select * from table1 t1, table2 t2 where t1.c1=t2.c2 and t2.c3=?",
- new Object[] {1}));
- IQueryEntitySet
- new SQLValue("select * from table1 t1, table2 t2 where t1.c1=t2.c2"));
结果集(IQueryEntitySet)
IQueryEntitySet是一个高效、可靠的结果集,其设计准则:
有状态信息
动态及分页获取
可前后滚动
可定制缓存
下面是访问结果集的示例代码:
- TestBean bean;
- while((bean = qs.next()) != null) {
- System.out.println(bean.getId());
- }
- qs.move(2);
- System.out.println(qs.next());
分享文章:SimpleFramework框架高级特性之数据访问
转载注明:http://www.csdahua.cn/qtweb/news17/368317.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网