发表于: 2017-06-14 22:46:52
2 1223
今天的学习内容(Spring JDBC Template 和 MySQL 语法)
首先请教一个问题,日报上贴代码如何能以代码的格式贴上去?
1. 新建项目
新建一个简单Maven项目;
在pom.xml 中添加dependency Junit;spring-core; spring-bean; spring-context; MySql Connector/J ; Spring-JDBC;
2. 什么是DAO(Data Access Object)
3. 在Eclipse Marketplace下安装了Spring IDE。
4. pom (project object model)
5. 在学习Spring Jdbc template时感觉无比吃力,发现既缺乏JDBC的知识,也缺乏Spring的一些知识,觉得先掌握单独使用JDBC再说吧。Spring中内容太多,不可能一次学完,可能要根据需要来学。
—————————————————————
(一些内容是自己的理解,不正确的地方还请师兄们指正!)
1. 什么是JDBC
连接db和Java应用的api
2. 将sql statement告诉jdbc driver,jdbc 在把命令发给db
3. JDBC Driver 是JDBC的核心,其提供了到db的连接,还会将一些call转换为特定的底层call
4. JDBC Driver 的 implementation 通常由db提供,(就是MySQL Connector /J ?)
5. JDBC api 在 java.sql javax.sql 中被定义的
6. api 中的 class: DriverManager; Connection; Statement; ResultSet; DataSource(用于connection pooling 是什么意思?);
7. 与db建立connection;
jdbc url 语法:
jdbc:<driver protocol>:<driver connection details> (jdbc:mysql://localhost:3306/db)
建立连接:
Connection myConn = DriverManager.getConnection(url, user, password);
DriverManager.getConnection()是可以直接call 的,不需要新建一个DriverManager对象。
exceptions: bad url or credentials; JDBC driver not in classpath
8. 建立一个Statement 对象;
Statement 对象是基于 Connection的,被用于执行sql语句。
Statement myStat = myConn.createStatement();
9. 执行sql命令;
ResultSet myRs = myStat.executeQuery(“”);
10. 处理结果Result Set;
ResultSet 的初始位置在第一行之前。
ResultSet.next() 移到下一行,并return true如果有下一行。
读取(这一行)的数据
ResultSet.getXXX(columnName)
ResultSet.getXXX(columnIndex) 以1开始
使用while() loop 来读取多行数据。
12. 插入数据和更新数据和删除数据使用同样的method, myStat.executeUpdate(“INSERT INTO xxx VALUES xxx”); 返回有多少行数据被修改。
13. prepared statement
PreparedStatement myPreStat = myConn.prepareStatement(“SELECT ? FROM xxx WHERE xxx < ?”);
myPreStat.setString(1, “name”);
myPreStat.setInt(2, 100);
ResultSet myRs = myPreStat.executeQuery();
使用prepared statement 分三步:新建一个PreparedStatement对象用 .prepareStatement() method 预先建立一个sql query, 用?代替具体的值;再用 .setXXX(num, value); 设定具体的值;再直接call .executeQuery(); 或 call .executeUpdate();
好处是可以重复使用多次。
其他内容之后根据需要再学习。
_____________________________________
?useSSL=false 加在 url 后面,可以避免下面的错误信息(但是并不知道为什么。。):
_____________________________________
如果在main method 的开头不写 throws SQLException 会怎么样?
关于任务的问题,第17个任务(编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。)对其中的一些概念还是不能理解,例如为什么要分开interface和implementation, 具体的形式大概是什么,也没有找到这个问题的其他日报,能否给一个其他日报的连接供参考。
问题:见高亮;
明天:尝试完成任务17,补充任务中需要的知识;
评论