您的位置:首页 > 其它

传智播客学习日记Day20

2013-08-05 22:03 302 查看
今天是jdbc学习的第三天,通过这几天的学习,学会了怎样编写java程序对数据库进行增删改查,老师的讲解独到,精辟,编写代码的风格严谨,做到精益求精,一段要写很多行的代码,老师教我们抽取多余的代码,得到通用并且精简的代码。

一步一个脚印,老师依然为我们复习了昨天的内容:

1.事务的ACID属性(举例了银行取钱的列子)

2.JDBC的事务处理(强调在出现异常时,调用rollback();方法回滚事务)

3.批处理JDBC语句提高处理速度(记住使用的方法addBatch(String) executeBatch();)

4.Statement的批量处理

5.PreparedStatement批量传参

......

接着老师讲解了这两天我们做的练习题。老师教我们怎么进行DAO的重构,

以下是重构的部分代码:

packagecd.itcast.jdbc.day1.util;

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.util.ArrayList;

importjava.util.List;

publicclass DBExecutor {

Connection conn = null;

PreparedStatement preSate = null;

protectedvoid update(String sql,Object...params){

try {

conn= DBUtil.getConn();

preSate = conn.prepareStatement(sql);

for(inti=1;i<params.length;i++){

preSate.setObject(i,params[i]);

}

int n = preSate.executeUpdate();

System.out.println("一共影响了:" + n);

} catch (SQLException e) {

e.printStackTrace();

}finally {

DBUtil.close(conn, preSate, null);

}

}

protectedObject getObject(String sql,HandlderResult hr,Object...params){

ResultSet rs = null;

try{

conn= DBUtil.getConn();

preSate =conn.prepareStatement(sql);

for(inti=1;i<params.length;i++)

preSate.setObject(i,params[i]);

rs = preSate.executeQuery();

Object object=rs.next();

System.out.println("--------------"+object);

if(object!=null){

return hr.getResult(rs);

}

}catch(Exception e){

}finally{

DBUtil.close(conn, preSate, rs);

}

return null;

}

protectedObject getList(String sql,HandlderResult hr,Object...params){

List<Object> list=newArrayList<Object>();

ResultSet rs = null;

try{

conn= DBUtil.getConn();

preSate =conn.prepareStatement(sql);

rs = preSate.executeQuery();

while(rs.next()){

list.add(hr.getResult(rs));

}

return list;

}catch(Exception e){

}finally{

DBUtil.close(conn, preSate, rs);

}

return list;

}

}

这种方式是自己编写工具类。我们也可以使用dbutils,使用dbutils要导入第三方的:commons-dbutils-1.5.jar。

使用dbutils我们常常要用到:QueryRunner类。

1.创建一个QueryRunner类的实例:

QueryRunnerqueryRunner=new QueryRunner(DBUtil.getDataSource());

QueryRunner类的主要方法:

public Object query(Connection conn, Stringsql, Object[] params, ResultSetHandler rsh) throws SQLException:

执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。

public int update(Connection conn, Stringsql, Object[] params) throws SQLException:

用来执行一个更新(插入、更新或删除)操作。

public int update(Connection conn, String sql) throws SQLException:

用来执行一个不需要置换参数的更新操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: