Commons里的DButil

今天试用了一下,感觉还不错。说下需求:
直接用jdbc天天开连接,关连接么的头疼。
要将结果转化为xml格式,这个用XStream格式。
用hibernate来搞这个有点杀鸡用牛刀的意思,如果直接用jdbc又有点繁琐。所以试用了一下这个东西。
看代码:
**
* 一直想弄个自己的RowProcessor,没成功....只好改变策略了,在sql语句中将同名列alias掉
* @author Kaka
*
*/
public class DBUtilTest {

public static Connection getConnection2() throws SQLException,
ClassNotFoundException {
Connection conn = null;

// 从配置文件deploy.properties配置数据库连接
// InputStream is = new FileInputStream("deploy.properties");
// Properties prop = new Properties();
// prop.load(is);
String url = "jdbc:mysql:?";
String user = "";
String password = "";
String connString = url + "user=" + user + "&password=" + password;
// System.out.println(connString);
// 或得连接
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(connString);

return conn;
}

public static void main(String[] args) throws SQLException, ClassNotFoundException {
/**
失败的代码
RowProcessor rp=new BasicRowProcessor(new BeanProcessor(){
protected Person processColumn(ResultSet rs,
int index,
Class<?> propType)
{
try {
if(rs.next()){
Person p=new Person();
try {
p.setName(rs.getString("User.Name"));
//    p.setSupplier(rs.getString("supplier.Name"));
//    p.ID=(rs.getInt("User.ID"));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return p;
}
else
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
});
**/
/**
* 有用的就这么几句
*/
ResultSetHandler<List<Person>> h = new BeanListHandler<Person>(Person.class);//结果处理
QueryRunner run = new QueryRunner();//queryRunner
Connection conn = getConnection2(); // open a connection
try{
//注意这里的alias
List<Person> result = run.query(conn, "SELECT User.ID,User.Name,supplier.Name as Supplier FROM User inner join supplier on supplier.Creator=User.ID", h);     
//XStream的alieas
XStream xs=new XStream();
xs.alias("person", Person.class);
//将结果转化为xml格式
System.out.println( xs.toXML(result));;
} finally {
DbUtils.close(conn); 
}



}
}
person类
package db;

public class Person {
int ID;
String name;
String supplier;

public String getSupplier() {
return supplier;
}
public void setSupplier(String supplier) {
this.supplier = supplier;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}

因为可能要用到多表的join等操作,所以字段有可能是会有重名的,这时候直接BeanListHandler<Person>(Person.class)使用它貌似不work,就尝试了自己实现RowProcessor,想覆盖掉 BasicRowProcessor 或则BeanProcessor里面相关的方法,搞了半天没搞定,Google了下也没见有人这么搞...郁闷了一下
返回去看文档,说是可以在数据库查询的alias掉....
这个就简单了
不用这么复杂的要写个自己的转换方法。
由于只是test,所以代码极度不规范,见谅见谅

转载于:https://www.cnblogs.com/macula7/archive/2010/08/10/1960404.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你一直憋着的那个屁,放出来时真的有人知道吗?我先告诉你憋着不放的屁会到哪去……...

全世界只有3.14 % 的人关注了爆炸吧知识制作团队制作人 超模君编剧 恐恐恐插画 杨羊羊友情出演 超模君 想增加更多的奇怪知识&#xff1f;带你入学↓↓↓关注“爆炸吧知识”日增怪知识&#xff01;

Android中View绘制流程

2019独角兽企业重金招聘Python工程师标准>>> 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的&#xff0c;该函数做的执行过程可简单概况为 根据之前设置的状态&#xff0c;判断是否需要重新计算视图大小(measure)、是否重新需要安置视图的…

从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery…

如何更改 C# Record 构造函数的行为

如何更改 C# Record 构造函数的行为Record[1] 是 C# 9 中的一个新功能。Record是从Structs[2]借用的特殊类&#xff0c; 因为它们具有 基于值的相等性&#xff0c;您可以将它们视为两类类型之间的混合体。默认情况下&#xff0c;它们或多或少是不可变的&#xff0c;并且具有语法…

java克鲁斯卡尔算法_Java语言基于无向有权图实现克鲁斯卡尔算法代码示例

所谓有权图&#xff0c;就是图中的每一条边上都会有相应的一个或一组值。通常情况下&#xff0c;这个值只是一个数字如&#xff1a;在交通运输网中&#xff0c;边上的权值可能表示的是路程&#xff0c;也可能表示的是运输费用(显然二者都是数字)。不过&#xff0c;边上的权值也…

[原]一步一步自己制作弹出框

说到javascript弹出框的制作,将其实现步骤分开&#xff0c;其实很容易。下面&#xff0c;将拆分页面弹出框的制作步骤。首先&#xff0c;准备编辑工具(废话)&#xff0c;其实&#xff0c;您可以使用notepad..嘿嘿。弹出框的组成结构&#xff1a; 1.一个页面遮罩层。 2.一个di…

那些你从未见过的神奇物理化学实验,今天全给你整理了!

全世界只有3.14 % 的人关注了爆炸吧知识1.电荷吸引水流2.比空气重的六氟化硫六氟化硫&#xff08;SF6&#xff09;&#xff0c;法国两位化学家Moissan和Lebeau于1900年合成的人造惰性气体&#xff0c;具有良好的电气绝缘性能及优异的灭弧性能&#xff0c;是一种优于空气和油之间…

Makefile 使用总结

1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些…

学C#的感想

我学C#已经一个学期了&#xff0c;却发现自己对C#的了解只是一点皮毛而已&#xff0c;根本什么都不能做。自己也试过去编写一些写程序&#xff0c;但就是只会那些简单的&#xff0c;一旦遇到复杂点的程序&#xff0c;就是狗咬乌龟—无从下口了。现在回想&#xff0c;都不知道自…

ASP.NET Core使用Middleware有条件地允许访问路由

问题有时&#xff0c;我们可能在Web API中包含一些具有调试功能的请求。比如我们上次的文章中“晕了&#xff01;这个配置值从哪来的&#xff1f;”使用的获取配置值的功能&#xff1a;endpoints.MapGet("/test2/{key:alpha}", async context > {var key context…

java匹配两个字符_·代表任意一个字符,*代表任意一串字符,判断两个字符串是否匹配?...

代表任意一个字符&#xff0c;*代表任意一串字符&#xff0c;判断两个字符串是否匹配&#xff1f; 如题&#xff0c;代表任意一个字符&#xff0c;*代表任意一串字符&#xff0c;判断两个字符串是否匹配&#xff1f;假如a字符串为&#xff1a;as*bncb,b字符串为asdfgvbbnchb,则…

如何用最低的成本教育出最棒的孩子?看完这些公众号你就知道了

全世界只有3.14 % 的人关注了爆炸吧知识真正决定人与人之间的差距的&#xff0c;其实是我们对事物的见识与内心的格局&#xff0c;见识的深浅决定人生的深浅&#xff0c;格局的大小决定了人生之路是宽是窄。今天给大家推荐几个有深度、有想法的公众号&#xff0c;希望能够给你带…

Virtualbox 无缝整合linux和windows双系统

一直以来&#xff0c;为了使用公司规定的内部通信工具RTX, 而不得不在ubuntu上安装一个virtualbox以运行RTX, 但是由于是运行在虚拟机里面&#xff0c;所以经常不能及时的回复同时的消息&#xff0c;而造成沟通的延迟。 所以就想着&#xff0c;能不能及时的在ubuntu上面看到…

archlinux yaourt安装 以及出错细节 database file for archlinuxfr does not exist.

archlinux yaourt安装 但一直报错如下&#xff1a; :: Synchronizing package databases... core is up to date   extra is up to date   community is up to date  error: failed retrieving file archlinuxfr.db from repo.archlinuxcn.org : The requested URL …

WCF分布式开发常见错误(10):套接字连接中断,The socket connection was aborted

&#xff08;使用Windows Service作为宿主的时候也会出现这样的情况&#xff0c;搜索的&#xff09; 我们这里是自定义托管宿主&#xff0c;在进行WCF编程开发过程时&#xff0c;使用NetTcpBinding绑定协议&#xff0c;作为通讯协议&#xff0c;可能会引发这样的异常&#xff0…

聊一聊对外API接口的存活检查可以怎么做

背景 公司内部的API接口一般会分为两大类&#xff0c;一类是直接暴露在公网可以访问的&#xff0c;一类是只能在局域网内访问的。暴露在公网的一般就是业务网关以及一些和第三方公司有着某些合作&#xff0c;从而进行数据交互的接口。检查API接口是否存活&#xff0c;第一反应应…

mysql slave 1032_修复mysql slave复制1032错误

一台从库出现1032错误&#xff0c;那1032是什么错误&#xff0c;我们看一下[rootBLAVDP021 ~]# perror 1032MySQL error code 1032 (ER_KEY_NOT_FOUND): Cant find record in %-.192s简单说&#xff0c;就是在从库上找不到相应的记录,同时在show slave status\G;中有相关输出&a…

各种机械原理动态图,看完脑洞大开,绝对涨姿势!

全世界只有3.14 % 的人关注了爆炸吧知识1.钥匙开锁2.撬锁3.汽车换挡4.手枪上膛发射5.炮弹发射原理6.手雷爆炸7.洗衣机8.缝纫机9.心脏10. 近视眼手术&#xff1a;原理其实很简单&#xff0c;就是把角膜削成一个“隐形眼镜”。11.零钱分类12.吹号转载来源&#xff1a;物理好教师部…

HDOJ 1875 HDU 1875 畅通工程再续 ACM 1875 IN HDU

MiYu原创, 转帖请注明 : 转载自 ______________白白の屋题目地址: http://acm.hdu.edu.cn/showproblem.php?pid1875题目描述:畅通工程再续Time Limit: 2000/1000MS (Java/Others) Memory Limit: 32768/32768K (Java/Others)Total Submission(s): 3822Accepted Subm…

CSharp设计模式读书笔记(10):装饰模式(学习难度:★★★☆☆,使用频率:★★★☆☆)...

装饰模式(Decorator Pattern)&#xff1a; 动态地给一个对象增加一些额外的职责&#xff0c;就增加对象功能来说&#xff0c;装饰模式比生成子类实现更为灵活。 模式角色与结构&#xff1a; 示例代码&#xff1a; using System; using System.Collections.Generic; using Syste…