﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-本人已死，有事烧纸</title><link>http://www.blogjava.net/nico/</link><description>-nico</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 08:55:32 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 08:55:32 GMT</pubDate><ttl>60</ttl><item><title>突然灵感：SQL查询结果和POJO的映射</title><link>http://www.blogjava.net/nico/archive/2008/01/30/178586.html</link><dc:creator>Nico</dc:creator><author>Nico</author><pubDate>Wed, 30 Jan 2008 13:28:00 GMT</pubDate><guid>http://www.blogjava.net/nico/archive/2008/01/30/178586.html</guid><wfw:comment>http://www.blogjava.net/nico/comments/178586.html</wfw:comment><comments>http://www.blogjava.net/nico/archive/2008/01/30/178586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nico/comments/commentRss/178586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nico/services/trackbacks/178586.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 刚刚看了一篇关于IBM的pureQuery的介绍。<br />
&nbsp;&nbsp;&nbsp; 结合工作中的实际情况。忽然发现，大部分的模块都会有查询功能。尽管很多项目都使用了hibernate，但是，查询结果页面上的数据一般都不会是单纯某个hibernate entity object所具备的，很多都是几张表的数据凑起来的。要是再加上分页要求的话，使用HQL查询似乎有困难。使用纯SQL，JDBC查询的话相对简单，但是，每个地方都会编写几乎雷同的代码。而这种情况出现多次的话，大家都会去COPY，PASTE。很快，各种小问题就跟着来了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;所以，写一个实现如标题的小工具应该很有实用性。<br />
<br />
public class SQLResults2POJOUtil {<br />
&nbsp;&nbsp;&nbsp;&nbsp;public SQLResults2POJOUtil (java.sql.Connection queryConnection) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;List query(String sql, Object[] params, Class pojoClass) throws java.sql.SQLException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 第一步：执行SQL查询，得到结果集。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 第二步：将结果集中的每个column的name和pojoClass中的相关属性的set方法关联起来。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* 第三步：遍历结果集的每个数据，设置到pojoClass的实例。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;最后：返回pojoClass集合。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;这里面有2个关键点，第一是column name和属性名称匹配时要忽略大小写，忽略下划线<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 第二点是实际设置pojoClass实例的值时还要记得类型转换（常规转化就那么几种，可以考虑建立转化注册机制，方便实际使用中特殊类型转化的扩展需要）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;List query(String sql, Class pojoClass)&nbsp;throws java.sql.SQLException&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return (query(sql, null, pojoClass));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}
<img src ="http://www.blogjava.net/nico/aggbug/178586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nico/" target="_blank">Nico</a> 2008-01-30 21:28 <a href="http://www.blogjava.net/nico/archive/2008/01/30/178586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>