发表于: 2018-01-19 23:56:25
2 475
今日完成:
Jdbc:
1 加载驱动 Class.forName("com.mysql.jdbc.driver");
2 获得连接 Connection con=DriverManager.getConnection(url,userName,password);
3 获得Statement Statement st=con.createStatement();
4 执行sql并获得ResultSet rs=st.executeQuery(sql);
5 处理rs中的数据
while (rs.next()) {
System.out.println(rs.getString("Aname"));
}
6 处理异常
7 关闭连接
JdbcTemplate可以理解为将不变的部分1、2、3、4、6、7抽象成抽象类的普通方法,而将5作为抽象函数,由子类根据需要进行实现:
public abstract class JDBCTemplate {
//普通方法
public Object execute(String sql) {
String url="";
String userName="";
String password="";
Connection con=null;
Statement st=null;
ResultSet rs=null;
try{
Class.forName("com.mysql.jdbc.driver");
con=DriverManager.getConnection(url,userName,password);
st=con.createStatement();
rs=st.executeQuery(sql);
//把的第五步抽象出来交给子类处理
Object object=doResultSet(rs);
return object;
}
catch (ClassNotFoundException e){
e.printStackTrace();
}
catch(SQLException e){
e.printStackTrace();
}
finally{
try{
if(rs!=null){
rs.close();
rs=null;
}
}catch(SQLException e){
e.printStackTrace();
}
}
return null;
}
//抽象出来 交给子类处理
public abstract Object doResultSet(ResultSet rs);
}
Spring对jdbc进行深层次的封装,在配置文件中将DataSource注入到JdbcTemplate,再将JdbcTemplate注入到DAOimpl中。
DAOimpl类中使用JdbcTemplate实现CRUD
JdbcTemplate主要提供以下五类方法:
execute方法:可以用于执行任何SQL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。
最后可以通过spring的getbean获取DAO实现类。
明日计划:
1. 学习Spring注解
2. 总结Spring+mybatis
3. 总结Linux常用命令。
遇到的问题:
1. JdbcTemplate提供了CRUD的多种方法,该如何选择,有没有最有的方法
收获:
1. 通过和jdbc做比较,对Spring+JdbcTempale有了比较清晰的理解,spring的依赖注入节省了很多代码书写,降低了耦合,也提高了代码的复用
评论