博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第二篇,整体架构dbutils dao篇
阅读量:7057 次
发布时间:2019-06-28

本文共 3100 字,大约阅读时间需要 10 分钟。

hot3.png

如果您喜欢sql而不是hql,或者不喜欢用hibernate,jroo提供了一个通过sql操作数据库的dao,可满足您对sql的喜爱。
jroo采用dbutils操作sql,sql语句可写在java类中或外部xml文件中,或在页面上sql语句,哪种方式都可满足您的喜爱。
在页面上写sql的方式,可见演示程序的“系统管理”>“sql/hql管理”菜单。
dbutils的dao接口BaseDbutilsDao中的方法有:
public interface BaseDbutilsDao {
/**
* 执行insert/update/delete语句
* @param sql
* @param params
*
* Exception 
*/
public int update(SqlBuilder sqlBuilder) throws Exception;
/**
* 外部sql,执行insert/update/delete语句
* @param queryName
* @param paramMap
*
* Exception
*/
public int update(String queryName,Map<String,?> paramMap) throws Exception;
/**
* 批量执行指定的SQL语句
* @param sql
* @param params
*
* Exception 
*/
public int[] batch(String sql, Object[][] params) throws Exception;
    
/**
* 执行统计查询语句,语句的执行结果必须只返回一个数值
* @param sql
* @param params
*
* Exception
*/
public long findCount(SqlBuilder sqlBuilder) throws Exception;
    /**
     * 外部sql查询
     * @param queryName
     * @param paramMap
     *
     * Exception
     */
public long findCount(String queryName,Map<String,?> paramMap) throws Exception;
 /** 
     * 查询出结果集中的第一条记录,并封装成对象 
     * @param beanClass 类名 
     * @param sqlBuilder
     * 对象 
     */ 
public <T> T findOne(Class<T> beanClass, SqlBuilder sqlBuilder) throws Exception;
/**
* 外部sql查询
* @param <T>
* @param beanClass
* @param queryName 查询名
* @param paramMap
*
* Exception
*/
public  <T> T findOne(Class<T> beanClass,String queryName,Map<String,?> paramMap) throws Exception;
    /** 
     * 执行查询,将结果集的每行结果保存到Bean中,然后将所有Bean保存到List中 
     * @param beanClass 类名 
     * @param sqlBuilder
     * 查询结果 
     */ 
public <T> List<T> findList(Class<T> beanClass, SqlBuilder sqlBuilder) throws Exception;
/**
* 外部sql查询,返回list
* @param <T>
* @param beanClass
* @param queryName
* @param paramMap
*
* Exception
*/
public  <T> List<T> findList(Class<T> beanClass,String queryName,Map<String,?> paramMap) throws Exception;
/**
* 执行查询,结果集保存到Map中
* @param <T>
* @param beanClass
* @param sqlBuilder
* @param keyPropertyName 作为Map结果集的key
* @param clazzOrPropertyName 作为Map结果集的value,实体或实体中的属性名称
*
* Exception
*/
public <T> Map<?, ?> findMap(Class<T> beanClass,SqlBuilder sqlBuilder,String keyPropertyName,Object clazzOrPropertyName) throws Exception;
/**
* 外部sql查询,返回Map
* @param <T>
* @param beanClass
* @param paramMap
* @param keyPropertyName 作为Map结果集的key
* @param clazzOrPropertyName 作为Map结果集的value,实体或实体中的属性名称
*
* Exception
*/
public  <T> Map<?, ?> findMap(Class<T> beanClass,String queryName,Map<String,?> paramMap,String keyPropertyName,Object clazzOrPropertyName) throws Exception;
/**
     *  mysql 分页查询,仅适用于mysql
     * @param entityClass
     * @param sqlBuilder
     * @param page
     *
     */
public <T> Page findPage(Class<T> beanClass,SqlBuilder sqlBuilder,Page page) throws Exception;
/**
* 外部sql分页查询,
* @param <T>
* @param beanClass 封装查询出来的数据的对象
* @param page 分页对象
* @param queryName 查询名
* @param paramMap 参数名值对
*
* Exception
*/
    public <T> Page findPage(Class<T> beanClass,Page page, String queryName,Map<String,?> paramMap) throws Exception;
}
SqlBuilder同Hibernate dao的HqlBuilder,使用方法类似StringBuilder,具体使用可见上一篇的hibernate dao的HqlBuilder。
在xml中sql如:
然后在action或service中,传递查询名称和Map参数名值对,调用BaseDbUtilsDao的不同方法即可。
同一个查询名称sql,调用不同的方法,可返回一条数据,List数据、Map数据、分页数据和数量统计。

转载于:https://my.oschina.net/yeshujun/blog/99064

你可能感兴趣的文章
linux centos 网卡错误 Device eth0 does not seem to
查看>>
Yii项目开发总结
查看>>
通过rsync实现同步
查看>>
看透Objective-C构造方法
查看>>
linux Centos6.5 下python2.6升级到2.7
查看>>
JS,Jquery获取各种屏幕的宽度和高度
查看>>
我的友情链接
查看>>
linux 下代理服务squid的配置
查看>>
String的两种实例化方式的区别?
查看>>
UML类图几种关系的总结
查看>>
证监会公布《证券期货业信息系统安全等级保护基本要求(试行)》
查看>>
静态顺序表常见各个接口的实现
查看>>
[office]word2010整个目录层级缩进
查看>>
iOS ASIHTTPRequest详解
查看>>
如何安全的使用比特币
查看>>
从http切换到https
查看>>
Iperf安装使用及测试专线带宽
查看>>
jenkins持续集成简介
查看>>
Linux 判断Cacti模板的版本
查看>>
linux系统下如何禁止ping命令或允许ping命令的方法
查看>>