今天开始继续编写代码,用的IDE是Intellij Idea。
是在github上寻找到一个基础的涉及[会议管理系统]的web设计,在下载下来源码并重新编写源码,有如下感受。
该系统很少使用第三方框架,完整来说没有熟悉的ibatis,mybatis,spring,亦或是log4j这样的日志管理。
主要涉及技术:JDBC,MySQL,Servlet,Filter,Listener,jsp,jQuery、Ajax
重新复习了下大学的课程。
先从类和数据库交互说起,每次从页面传来的请求通过Web.xml找到对应的servlet处理类,没有spring的注入,那么每个类在使用的时候都需要重新创建一个毋庸置疑。
从servlet的doGet和doPost调用Service中的方法,Sevice调用Dao层的处理,Dao层是我第一个研究的重点,
服务器到数据库的交互不可无中生有,因此,在Dao中的每一次处理都会有一次数据库的连接,数据的处理,处理的结果,连接的断开。从代码来看主要涉及
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
这三个类,
Connection处理与数据库的连接,每次连接都需要驱动注册,连接的具体条件请参考这篇文章,很详细的解释了基础连接[原生JDBC]
PreparedStatement的对象通过connection.prepareStatement("Sql语句")来新建出来,这里需要注意的是PreparedStatement继承Statement类,算是对父类进行了优化处理,对于初学者很容易能掌握。
ResultSet是sql语句执行的结果,主要针对查询操作。当你要取出结果集中的数据时,通过while循环,条件是resultSet.next(),可以直接用resultSet.get属性("表列名")/get属性(index),index是查询结果的第几列的意思。
con = DBUtils.getConnection();
ps = con.prepareStatement("SELECT * FROM employee WHERE username=? AND password=?");
ps.setString(1, userName);
ps.setString(2, password);
rs = ps.executeQuery();
if (rs.next()) {
return new Employee(rs.getInt("employeeid"), rs.getString("employeename"), rs.getString("username"), rs.getString("phone"), rs.getString("email"), rs.getInt("status"), rs.getInt("departmentid"), rs.getString("password"), rs.getInt("role"));
}
上面代码就是一个数据库连接,通过用户名和密码查询一个员工实体的过程。
与快捷方便的框架相比,记住每次数据库连接后都需要关闭连接,依次关闭ResultSet,PreparedStatement,Connection!!
未完待续...