曾耀峰
一、DBUtils
1.DBUtils的更新方法
update(String sql,Object...Object);
update()这个方法能执行对增删改等三个DML操作。实现原理是从PreparedStatement对象中获预编译语句的元数据对象,进而得到sql语句中,问号占位符"?"代表的参数个数,和参数的数据类型。然后遍历参数个数。利用pstmt.setObject()方法对参数赋值。
public static void update(String sql, Object... objects) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = C3P0Utils.getConnection();
pstmt = conn.prepareStatement(sql);
// 获取参数个数
ParameterMetaData pmd = pstmt.getParameterMetaData();
// 获取?号的个数,就是参数的个数。根据参数的个数设置数据的值
int count = pmd.getParameterCount();
for (int i = 1; i <= count; i++) {
pstmt.setObject(i, objects[i - 1]);
}
//执行SQL语句
pstmt.executeUpdate();
} catch (Exception e) {
System.out.println("1111");
}finally {
C3P0Utils.release(conn, pstmt);
}
这里比较有意思的是没有采用函数重载,而是使用了可变参数(Object...objs)的写法接收了不确定个数的方法。了解一下即可
2.DBUtils的查询方法
query(String sql,new ResultSetHandler,Object...objs)
根据ResultSetHandler接口的实现子类,有九个保存数据的方法。其中常用的是5个:
1)Object[] ArrayHandler:返回Object[] 得到一个记录的数据存放在数组中
List<Object[]> ArrayListHandler:返回一个ArrayList<Object[]> 查询多个
2)Object BeanHandler<Object>(Object.class):得到一个Object对象,注意后面传入class参数
List<Object> BeanListHandler<Object>(Object.class):得到一个装有Object对象的列表
3)Map<String ,Object> MapHandler<String,Object> 得到一个map集合对象。String表示列名。整个map集合就是存放的是一个记录的"列名":"值"这样的对象。列名不可能重复
List<Map<String, Object>> MapListHandler:得到一个装有map集合对象的list列表
*Map遍历取值的两种方法了解一下:
1.Set键找值:
//获取所有的键值
Set<String> keys = map.keySet();
for(String key:keys)
{
String value = map.get(key);
System.out.println("键:"+key +"---"+"值:"+value);
}
2.EntrySet 键-值对象遍历
Set<Map.Entry<String, String>> entrys = map.entrySet();
for(Map.Entry<String, String> entry:entrys)
{
String hunsband = entry.getKey();
String wife = entry.getValue();
System.out.println(hunsband+"-----"+wife);
}
提出一个疑问:map本身并没有遍历迭代器,只能通过Set集合来遍历。Set集合是无序的。因此在取出来的记录中。有可能是无序的。所以,应该少使用。
4) List<Object> ColumnListHandler("列名"):得到一次查询结果中,某一列的所有值
5) Object ScalarHandler() 只得到一个值
二、XML:
作用:作为配置文件,传输与存储数据。
解析步骤:
步骤一: 导入dom4j核心jar包
步骤二: 创建解析器
步骤三: 解析文档
步骤四: 获得根节点
步骤五: 从根节点获取其他节点
利用SAXReader解析,掌握一种即可。多了没用。以后通常用Json来传输数据
|