我是靠谱客的博主 动听皮卡丘,最近开发中收集的这篇文章主要介绍DAO 设计2、查询方式的设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

创建了一个 <dao-config><datasource><connection>DAO 类用来做所有的事情,包括查询。查询方法如下:

</connection></datasource></dao-config>

java 代码
  1. public List query(Class clazz, String sql, List params) throws DAOException;  

第一个参数是用来接受封装的类。
有时候仅查询一个字段,根本不用封装:
java 代码
  1. public List query(String sql, List params) throws DAOException; 

如果封装,就要考虑查询结果字段到对象属性的映射关系。根据公司的数据库设计规范,单词之间用下划线连起来。所以简单的替换一下就可以了。比如 USER_NAME 字段<dao-config><datasource><connection>就映射到 userName 属性。

如果查询结果中的字段有多,那这个字段的值就只好丢弃;如果类的属性有多,也不会给它赋值。




分页查询。有时候会用到分页查询,所以添加了一个方法:
</connection></datasource></dao-config>
java 代码
  1. public Page queryPage(Class clazz, String sql, List params, int pageIndex, int pageSize)  
  2.             throws DAOException;  

Page 对象除了包含查询结果外还有 totalNum 属性,表示查询总结果数。




表格封装的查询。有时候查询语句是动态生成的,没法确定查询结果的字段个数,用类来封装显然不合适。于是定义了一个通用的表格结构用来封装,并添加了 queryTable() <dao-config><datasource><connection>方法: </connection></datasource></dao-config>
java 代码
 
  1. public DataTable queryTable(String sql) throws DAOException;   
  2. public DataTable queryTable(String sql, List params, int pageIndex, int pageSize)     
  3.                  throws DAOException;   

DataTable 对象包含的其实就是一堆 HashMap。不过它同 Page 一样有一个查询总结果数,而且添加了一些方法方便提取数据。这种查询的使用方式如下:
java 代码
 
  1. DAO dao = DAO.getDAO(SOURCE_NAME);  
  2. DataTable table = dao.queryTable("select * from tt_test");  
  3. assertEquals(6, table.getColumns());  
  4. Map row = table.query("name""张三丰"); // 在查询结果中搜索  
  5. assertNotNull(row);  




静态字段作为映射关系配置。有些字典表或配置表,一开始就被全部读入并缓存起来。为了少写代码,DAO 提供将静态字段 TN 作为表名来查询的方式。如果类中存在 String 类型的静态字段 TN,则可以使用这个方法:
java 代码
 
  1. public List query(Class clazz) throws DAOException; 
<dao-config><datasource><connection></datasource></dao-config>

最后

以上就是动听皮卡丘为你收集整理的DAO 设计2、查询方式的设计的全部内容,希望文章能够帮你解决DAO 设计2、查询方式的设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部