传智播客学习日记Day20
来源:互联网 发布:淘宝皮草专卖 编辑:程序博客网 时间:2024/05/22 10:27
今天是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:
用来执行一个不需要置换参数的更新操作。
- 传智播客学习日记Day20
- 传智播客-Java学习笔记day20
- java学习day20
- java学习day20
- Hadoop日记Day20---ZooKeeper系列(四)
- Hadoop日记Day20---ZooKeeper系列(三)
- Hadoop日记Day20---ZooKeeper系列(二)
- Hadoop日记Day20---Zookeeper系列(一)
- day20
- day20
- Day20
- day20
- DAY20
- JavaScript-day20-个人学习笔记
- IO流+JAVA学习笔记-DAY20
- 学习笔记(逆向汇编)Day16-Day20
- 学习笔记(逆向汇编)Day16-Day20
- 传智播客学习日记Day1
- glBlendEquation
- LayoutInflater 使用
- 传智播客学习日记Day19
- Grails2中的Sets, Lists 和Maps
- FusionCharts简单教程(一)---建立第一个FusionCharts图形
- 传智播客学习日记Day20
- sql 中的存储过程需要注意的地方
- java中ServerSocket和Socket的简单用法
- Win7下搭建Qt+OpenCV开发环境
- 传智播客学习日记Day23
- 无驱动打印开钱箱
- 黑马程序员---类型、存储和变量
- 3个著名加密算法(MD5、RSA、DES)的解析
- 添加xml文件编辑语法提示