论坛首页 入门技术论坛

Apache的DBUtils

浏览 10093 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-05-25  
确实是的,我们公司现在已经放弃使用什么 iBatis, Hibernate 了;
简单高效就是最好的, 我们全部使用最底层的JDBC,外加一个数据库连接池组件而已。

发现,越是使用一些高集成的东西,我们会变得越笨,到最后连 Class.forName(); DriverManager.getConnection() 最基本的数据库连接都不会了。 那时就悲哀了。呵呵~~
0 请登录后投票
   发表时间:2011-05-25  
多少写点干啥用 优缺点 啥的啊
0 请登录后投票
   发表时间:2011-05-25  
用dbutils一年多的飘过
0 请登录后投票
   发表时间:2011-05-25  
dwbin 写道
george_space 写道
直接把SQL写在程序中,这样不太好吧,如果有n年前的系统,当初的开发者都消失了。
现在需要改一条SQL语句,还需要重新修改、编译这个老项目啊?

可以考虑把SQL语句提取出来,放到xml中,这样可以集中管理SQL,即使换数据库,也不同动程序,只要修改一下xml中的SQL即可。


实际上,把sql放在xml里面才费事,如果是一个不熟悉的人员来维护,需要先找到sql的别名,然后再到xml里面去改,我宁肯写成常量,或者直接写在代码里面

mybatis也支持代码生成SQL
0 请登录后投票
   发表时间:2011-05-25   最后修改:2011-05-25
caoyangx 写道
george_space 写道
直接把SQL写在程序中,这样不太好吧,如果有n年前的系统,当初的开发者都消失了。
现在需要改一条SQL语句,还需要重新修改、编译这个老项目啊?

可以考虑把SQL语句提取出来,放到xml中,这样可以集中管理SQL,即使换数据库,也不同动程序,只要修改一下xml中的SQL即可。

你就直接说是IBatis得了,把SQL写在XML中,并且掺杂着逻辑标签,你觉得很爽吗?你觉得DBA喜欢看这些XML标签偶尔出现些SQL关键字的内容吗?


其实把sql语句放到xml文件的不止ibatis吧,国内的bbossgroups中的持久层框架也可以把sql语句放到xml文件中,还支持热加载,改了后立马生效,不用重启应用,详细的情况可以参考文章《bbossgroups 开发系列文章之-最佳实践 》:
http://www.iteye.com/wiki/bbossgroups/3092-mvc-bboss-config
中的章节:数据库访问组件及sql语句配置文件和章节:dao组件管理及注入数据库访问组件

典型的配置如下:
<?xml version="1.0" encoding="UTF-8"?>

<properties>
	<property name="getRequesterDaoListInfo">
		<![CDATA[
			select r.*, o.ORG_NAME as service_requester_org_name from TD_ESB_REQUESTER r left join TD_SM_ORGANIZATION o 
			 on r.SERVICE_REQUESTER_ORG = o.ORG_ID
			 where 1=1
			#if($service_requester_code && !$service_requester_code.equals(""))
			 and SERVICE_REQUESTER_CODE = #[service_requester_code]
			#end
			#if($service_requester_account && !$service_requester_account.equals(""))
			 and SERVICE_REQUESTER_ACCOUNT like #[service_requester_account]
			#end
			#if($service_requester_name && !$service_requester_name.equals(""))
			 and SERVICE_REQUESTER_NAME like #[service_requester_name]
			#end
			#if($service_requester_org && !$service_requester_org.equals(""))
			 and SERVICE_REQUESTER_ORG = #[service_requester_org]
			#end
			
			order by create_time desc
		]]>
	</property>
	<property name="delete">
		<![CDATA[
			delete from TD_ESB_REQUESTER where SERVICE_REQUESTER_ID = ?
		]]>
	</property>
	<property name="findObjectById">
		<![CDATA[
			select r.*, o.ORG_NAME as service_requester_org_name from TD_ESB_REQUESTER r left join TD_SM_ORGANIZATION o 
			 on r.SERVICE_REQUESTER_ORG = o.ORG_ID where SERVICE_REQUESTER_ID = ?
		]]>
	</property>
	<property name="insert">
		<![CDATA[
			insert into TD_ESB_REQUESTER(ADDRESS ,BUSINESS_LINE_CODE ,CONTACT ,CREATE_TIME ,CREATOR ,EMAIL ,MODIFIER ,MODIFY_TIME ,PHONE ,SERVICE_REQUESTER_ACCOUNT ,SERVICE_REQUESTER_DESP ,SERVICE_REQUESTER_ID ,SERVICE_REQUESTER_NAME ,SERVICE_REQUESTER_ORG ,SERVICE_REQUESTER_PASSWORD ,USED_FLAG) values(#[address] ,#[business_line_code] ,#[contact] ,#[create_time] ,#[creator] ,#[email] ,#[modifier] ,#[modify_time] ,#[phone] ,#[service_requester_account] ,#[service_requester_desp] ,#[service_requester_id] ,#[service_requester_name] ,#[service_requester_org] ,#[service_requester_password] ,#[used_flag])
		]]>
	</property>
	<property name="update">
		<![CDATA[
			update TD_ESB_REQUESTER set ADDRESS=#[address] ,BUSINESS_LINE_CODE=#[business_line_code] ,CONTACT=#[contact] ,EMAIL=#[email] ,MODIFIER=#[modifier] ,MODIFY_TIME=#[modify_time] ,PHONE=#[phone] ,SERVICE_REQUESTER_ACCOUNT=#[service_requester_account] ,SERVICE_REQUESTER_DESP=#[service_requester_desp] ,SERVICE_REQUESTER_ID=#[service_requester_id] ,SERVICE_REQUESTER_NAME=#[service_requester_name] ,SERVICE_REQUESTER_ORG=#[service_requester_org] ,SERVICE_REQUESTER_PASSWORD=#[service_requester_password] where SERVICE_REQUESTER_ID = #[service_requester_id]
		]]>
	</property>
	<property name="updateFlag">
		<![CDATA[
			update TD_ESB_REQUESTER set USED_FLAG = #[used_flag], Modifier = #[modifier], Modify_time = #[modify_time] 
			where SERVICE_REQUESTER_ID = #[service_requester_id]
		]]>
	</property>	
	
</properties>
0 请登录后投票
   发表时间:2011-05-25  
有好有不好吧,现在都喜欢快速,啥注解都用上,那又为何反对将SQL写到代码里去
0 请登录后投票
   发表时间:2011-05-25  
com.mysql.jdbc.jdbc2.optional.MysqlDataSource
这个是??恕寡闻
0 请登录后投票
   发表时间:2011-05-25  
swanky_yao 写道
com.mysql.jdbc.jdbc2.optional.MysqlDataSource
这个是??恕寡闻

这个是mysql的jdbc包中的一个类,我用的是mysql-connector-java-3.1.12-bin.jar
1 请登录后投票
   发表时间:2011-05-25  
个人感觉,数据操作频繁的情况把sql放到框架的xml里统一配置挺好,开始麻烦,越往后越觉得方便……
0 请登录后投票
   发表时间:2011-05-25   最后修改:2011-05-25
common DBUtil 很轻巧,比JDBC省事,
感觉比 spring 封装的JDBC 更舒服一些,
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics