`

bbossgroups持久层ConfigSQLExecutor组件的典型用法-预编译操作

阅读更多
本文介绍bbossgroups持久层ConfigSQLExecutor组件的典型用法-预编译操作
本文分三部分:
1.dao层写法
2.sql配置文件配置方法(可以支持多种数据库sql配置)
3.涉及的datasource的配置
第一部分 dao层写法
package com.chinacreator.tjbb.dao.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;



import com.chinacreator.tjbb.dao.SjxftjDao;
import com.chinacreator.tjbb.dto.DssjxfTj;
import com.chinacreator.tjbb.dto.SjxftjDto;
import com.frameworkset.common.poolman.ConfigSQLExecutor;
import com.frameworkset.common.poolman.Record;
import com.frameworkset.common.poolman.handle.NullRowHandler;


public class SjxftjDaoImpl implements SjxftjDao{
	public static final String DBNAME = "stsmc";
	private static ConfigSQLExecutor executor = new ConfigSQLExecutor("com/chinacreator/tjbb/dao/impl/stxftj.xml");

	public List<SjxftjDto> findSjxftjList()  throws Exception{		
		return executor.queryListWithDBName(SjxftjDto.class, DBNAME, "findSjxftjList");
	}

	public List<DssjxfTj> findDstjList(String startDate,String endDate, String tbname) throws Exception{
		return executor.queryListWithDBName(DssjxfTj.class, DBNAME, "findDstjList", startDate,endDate,tbname);
	}

	public List<String> findDsMcList(String date) throws Exception{
		final List<String> list = new ArrayList<String>();
		executor.queryWithDBNameByNullRowHandler(new NullRowHandler() {
			@Override
			public void handleRow(Record record) throws Exception {
				list.add(record.getString("DSMC"));
			}
		}, DBNAME, "findDsMcList", date);
		return list;
	}


	
	
	public Map<String, String> findDsMcMap(String startDate,String endDate) throws Exception {
		final Map<String, String>  map = new HashMap<String, String>();
		executor.queryWithDBNameByNullRowHandler(new NullRowHandler() {
			@Override
			public void handleRow(Record record) throws Exception {
				String mc = record.getString("DSMC");
				String dm = record.getString("DSDM");
				map.put(dm, mc);
			}
		}, DBNAME, "findDsMcMap", startDate,endDate);
		
		return map;
	}
}




分享到:
评论
4 楼 yin_bp 2011-06-29  
ainidehsj 写道
public List<DssjxfTj> findDstjList(String startDate,String endDate, String tbname) throws Exception{   
     return executor.queryListWithDBName(DssjxfTj.class, DBNAME, "findDstjList", startDate,endDate,tbname);   
 }   

请问楼主:“findDstjList”是什么意思?


这个代表dao方法的一个名字,同时也代表sql配置文件中相应的sql语句的配置名称:
<property name="findDstjList">  
        <![CDATA[ 
        SELECT b.ds_mc DSDM,       sum(b.lines_output) XFZL,       sum(NVL(b.ds_lines_output, 0)) RKZL,       
         sum(NVL(b.ds_lines_updated, 0)) GXZL   
         FROM T_LOG_COUNT b where to_date(b.startdate, 'yyyy-mm-dd') >=       to_date(?, 'yyyy-mm-dd')   
          and to_date(b.startdate, 'yyyy-mm-dd') <=       to_date(?, 'yyyy-mm-dd')   
           and data_type = ?  group by b.ds_mc order by DSDM  
        ]]>  
    </property>  
3 楼 ainidehsj 2011-06-29  
public List<DssjxfTj> findDstjList(String startDate,String endDate, String tbname) throws Exception{  
27.        return executor.queryListWithDBName(DssjxfTj.class, DBNAME, "findDstjList", startDate,endDate,tbname);  
28.    }  
请问楼主:“findDstjList”是什么意思?
2 楼 yin_bp 2011-06-29  
第三部分.涉及的datasource的配置
<?xml version="1.0" encoding="gb2312"?>

<poolman>

<datasource>

    <dbname>stsmc</dbname>
	<loadmetadata>false</loadmetadata>
    <jndiName>jdbc/mysql-ds</jndiName>
    <driver>com.mysql.jdbc.Driver</driver>

     <url>jdbc:mysql://172.16.33.46:3306/etl</url> 

    <username>root</username>
    <password>123456</password>

    <txIsolationLevel>READ_COMMITTED</txIsolationLevel>

    <nativeResults>true</nativeResults>

    <poolPreparedStatements>false</poolPreparedStatements>

    <initialConnections>2</initialConnections>
    
    <minimumSize>0</minimumSize>
    <maximumSize>10</maximumSize>
	<!--控制connection达到maximumSize是否允许再创建新的connection
		true:允许,缺省值
		false:不允许-->
    <maximumSoft>false</maximumSoft>
    
    <!-- 
    是否检测超时链接(事务超时链接)
    true-检测,如果检测到有事务超时的链接,系统将强制回收(释放)该链接
    false-不检测,默认值
     -->
    <removeAbandoned>true</removeAbandoned>
	<!--
		链接使用超时时间(事务超时时间)
		单位:秒
	-->
    <userTimeout>50</userTimeout>
    <!-- 
    	系统强制回收链接时,是否输出后台日志
    	true-输出,默认值
    	false-不输出
     -->
    <logAbandoned>true</logAbandoned>
    
    <!-- 
    	数据库会话是否是readonly,缺省为false
     -->
    <readOnly>false</readOnly>
	
	<!--
		对应属性:timeBetweenEvictionRunsMillis
		the amount of time (in milliseconds) to sleep between examining idle objects for eviction 
	-->
	<skimmerFrequency>10</skimmerFrequency>
	<!--对应于minEvictableIdleTimeMillis 属性:
	minEvictableIdleTimeMillis the minimum number of milliseconds 
	an object can sit idle in the pool before it is eligable for evcition
	单位:秒
	
	空闲链接回收时间,空闲时间超过指定的值时,将被回收
	-->
	<connectionTimeout>60</connectionTimeout>
	<!--
	numTestsPerEvictionRun 
	the number of idle objects to 
	examine per run within the idle object eviction thread (if any)
	
	每次回收的链接个数 
	-->
    <shrinkBy>5</shrinkBy>
    <!--
    /**
     * 检测空闲链接处理时,是否对空闲链接进行有效性检查控制开关
     * true-检查,都检查到有无效链接时,直接销毁无效链接
     * false-不检查,缺省值
     */
     -->
    <testWhileidle>true</testWhileidle>


    <!--
        定义数据库主键生成机制
        缺省的采用系统自带的主键生成机制,
        外步程序可以覆盖系统主键生成机制
        由值来决定
        auto:自动,一般在生产环境下采用该种模式,
               解决了单个应用并发访问数据库添加记录产生冲突的问题,效率高,如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式
        composite:结合自动和实时从数据库中获取最大的主键值两种方式来处理,开发环境下建议采用该种模式,
                   解决了多个应用同时访问数据库添加记录时产生冲突的问题,效率相对较低, 如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式
    -->
    <keygenerate>composite</keygenerate>

	<!--poolman的日志信息输出改用log4j来输出到日志文件,相关的配置见log4j.properties文件-->
    <!--<logFile>dbaccess.log</logFile>
    <debugging>true</debugging>-->
    <!-- 请求链接时等待时间,单位:秒
    客服端程序请求链接等待时间超过指定值时,后台包等待超时异常
     -->
    <maxWait>60</maxWait>
    
    <!-- 
    	链接有效性检查sql语句
     -->
    <validationQuery>select 1</validationQuery>
    
    <autoprimarykey>false</autoprimarykey>
	<showsql>false</showsql>
	

  </datasource>

</poolman>
1 楼 yin_bp 2011-06-29  
第二部分.sql配置文件配置方法(可以支持多种数据库sql配置)
<?xml version="1.0" encoding="UTF-8"?>

<properties>

	<property name="findSjxftjList">
		<![CDATA[
		SELECT *  FROM T_TJ_SJXFLBXX WHERE 1=1
		]]>
	</property>
	<property name="findDsMcMap">
		<![CDATA[
		select distinct DSMC,DS_MC DSDM FROM T_LOG_COUNT where startdate = ( SELECT MAX(b.startdate)
					  FROM T_LOG_COUNT b   where to_date(b.startdate,'yyyy-mm-dd') >= to_date(?,'yyyy-mm-dd')
					  and to_date(b.startdate,'yyyy-mm-dd') <= to_date(?,'yyyy-mm-dd')) ORDER BY DSDM
		]]>
	</property>
	
	<property name="findDsMcMap-mysql">
		<![CDATA[
		select distinct DSMC,DS_MC DSDM FROM T_LOG_COUNT where startdate = ( SELECT MAX(b.startdate)
					  FROM T_LOG_COUNT b   where  b.startdate  >= ?
					  and  b.startdate  <= ?) ORDER BY DSDM
		]]>
	</property>
	
	<property name="findDsMcList">
		<![CDATA[
		select distinct dsmc FROM T_LOG_COUNT b where b.startdate = ?
		]]>
	</property>
	
	
	<property name="findDstjList">
		<![CDATA[
		SELECT b.ds_mc DSDM,       sum(b.lines_output) XFZL,       sum(NVL(b.ds_lines_output, 0)) RKZL,      
		 sum(NVL(b.ds_lines_updated, 0)) GXZL  
		 FROM T_LOG_COUNT b where to_date(b.startdate, 'yyyy-mm-dd') >=       to_date(?, 'yyyy-mm-dd')  
		  and to_date(b.startdate, 'yyyy-mm-dd') <=       to_date(?, 'yyyy-mm-dd')  
		   and data_type = ?  group by b.ds_mc order by DSDM 
		]]>
	</property>
	 
	<property name="findDstjList-mysql">
		<![CDATA[
		SELECT b.ds_mc DSDM,sum(b.lines_output) XFZL,sum(ifnull(b.ds_lines_output, 0)) RKZL,sum(ifnull(b.ds_lines_updated, 0)) GXZL  
		FROM T_LOG_COUNT b 
		where b.startdate >= ?   
		and b.startdate <=       
		?   and data_type = ?  
		group by b.ds_mc order by DSDM 
		]]>
	</property>
</properties>

相关推荐

    bbossgroups 3.1SQLExecutor组件ap使用实例

    在Java开发中,bbossgroups 3.1框架提供了一个名为SQLExecutor的组件,用于简化数据库操作。这个组件提供了一种高效的批处理和单条SQL执行的方式,它基于Apache License 2.0开源,允许开发者在遵守相应条款的情况下...

    bbossgroups 开发系列文章之一 最佳实践

    通过依赖注入,可以将数据库访问组件注入到DAO中,使得业务组件可以直接调用DAO方法进行数据操作。 业务组件管理及注入DAO组件是业务逻辑层的核心。业务组件通常包含了复杂的业务规则,它们通过依赖注入的方式获取...

    bbossgroups 3.0 发布,国内首款集

    ### bbossgroups 3.0 发布,国内首款集成多技术的企业级J2EE开发框架 #### 概述 近日,bbossgroups 3.0 正式发布,这款国内首款集AOP(面向切面编程)、MVC(模型-视图-控制器)、Persistent(持久化)、JSP ...

    bbossgroups 3.1培训教程.ppt

    **bbossgroups 3.1培训教程** bbossgroups 3.1是一个企业级J2EE开发框架,自2005年以来不断发展和完善,旨在提供高效、稳定的开发工具和解决方案。本教程将深入介绍bbossgroups 3.1的主要特性、发展历程以及其在...

    Bbossgroups体系架构.ppt

    本文将深入探讨Bbossgroups的体系架构,包括AOP内核、MVC框架、标签库、国际化、主题管理、RESTful架构、持久层框架、分布式事件框架、任务调度、服务发布与访问、安全管理等多个方面。 1. **AOP内核**:AOP(面向...

    bbossgroups 3.0 培训教程

    1. **模块化设计**:bbossgroups 3.0 采用模块化设计,使得各个组件可以独立使用,增强了代码的复用性和可维护性。开发者可以根据项目需求选择相应的模块,降低系统的复杂度。 2. **高性能的消息队列**:...

    企业级J2EE开源框架bboss

    2. **数据库操作**:BBoss提供了便捷的数据访问层(DAO),支持SQL动态生成、事务管理以及多种数据库的兼容性,使得数据库操作变得简单且高效。 3. **服务治理**:框架内置了服务注册与发现机制,可以实现微服务...

    2013年度中国优秀开源项目列表

    12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...

    bboss-elastic-tran:bboss 数据同步工具

    弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的elasticsearch来关联数据库。环境要求JDK要求:JDK 1.7+ Elasticsearch版本要求:1.X,2.X,5...

    java版地图源码-bboss-elasticsearch:最好的elasticsearch高级javarest客户端api-----bbos

    它以类似于mybatis的方式操作和访问elasticsearch。 环保要求 JDK 要求:JDK 1.7+ Elasticsearch 版本要求:1.X,2.X,5.X,6.X,7.x,+ Spring Booter 1.x,2.x,+ bbos 降 老板 弹性搜索 弹簧靴 全部 1.x 1.x,2.x 全部 2....

    基于Java和Shell的bboss session framework跨域集群节点会话共享与监控设计源码

    该框架包含222个文件,包括164个Java源文件、14个XML配置文件、6个Gradle构建文件、6个JAR包文件、6个属性文件等,旨在支持跨域应用集群节点的会话共享与监控,并提供示例站点http://session.bbossgroups.com/...

    bboss mvc 通过jsonp实现跨站跨域远程访问

    提供的压缩包文件"bbossgroups 框架培训教程.pptx"和"Bbossgroups演示文档.pptx"可能包含了更多关于bboss mvc框架的详细信息和使用示例,包括如何配置和使用JSONP等特性。建议查阅这些文档以获取更深入的理解。 总...

Global site tag (gtag.js) - Google Analytics