发表于: 2017-04-13 00:03:43
2 1082
今天做的事:
1、写完了StudentDAOImpl类
package DAO;
import oracle.javatools.db.DBUtil
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by wei on 2017/4/11.
*/
public class StudentDAOImp implements StudentDAO {
Connection connect = null;
PreparedStatement pstmt=null;
ResultSet rset = null;
@Override
public void addStudent(Student stu) {
String sql = "insert into student values {null,?,?,?,?}";
try {
connect = DBUtil.getConnection();
pstmt = connect.prepareStatement(sql);
pstmt.setString(1,stu.getName());
pstmt.setLong(2,stu.getId());
pstmt.setLong(3,stu.getCreate_at());
pstmt.setLong(4,stu.getUpdate_at());
pstmt.setString(5,stu.getClasses());
pstmt.executeUpdate();//执行给定的sql语句
System.out.println("添加学生成功");
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeAll(rset, pstmt, connect);
}
}
@Override
public void deleteStudent(int id) {
String sql = "delete student where id = ?";
try {
connect = DBUtil.getConnection();
pstmt = connect.prepareStatement(sql);
pstmt.setObject(2,id);
pstmt.executeUpdate();
System.out.println("删除学生成功");
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeAll(rset, pstmt, connect);
}
}
@Override
public void updateStudent(Student stu) {
String sql = "update student set name=? id=? classes=? create_at=? update_at=? ";
try {
connect = DBUtil.getConnection();
pstmt = connect.prepareStatement(sql);
pstmt.setString(1,stu.getName());
pstmt.setLong(2,stu.getId());
pstmt.setLong(3,stu.getCreate_at());
pstmt.setLong(4,stu.getUpdate_at());
pstmt.setString(5,stu.getClasses());
System.out.println("更新学生信息成功");
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeAll(rset, pstmt, connect);
}
}
@Override
public List<Student> getAllStudents() {
List<Student> students = new ArrayList<Student>();
String sql = "select * from student";
try {
connect = DBUtil.getConnection();
pstmt = connect.prepareStatement(sql);
rset = pstmt.executeQuery();//在此PreparedStatement对象中执行SQL查询,并返回查询生成的ResultSet对象。
while (rset.next()){
Student stu = new Student(rset.getString(1),rset.getLong(2),rset.getLong(3),rset.getLong(4),rset.getString(5));
students.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeAll(rset, pstmt, connect);
}
return students;
}
@Override
public Student getStudentById(int id) {
Student stu = null;
String sql = "select * from student where id=?";
try {
connect = DBUtil.getConnection();
pstmt = connect.prepareStatement(sql);
pstmt.setLong(2,id);
rset = pstmt.executeQuery();
if (rset.next()){
stu = new Student(rset.getString(1),rset.getLong(2),rset.getLong(3),rset.getLong(4),rset.getString(5));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeAll(rset, pstmt, connect);
}
return stu;
}
@Override
public List<Student> getStudentsByCondition(String name, String classes) {
List<Student> students = new ArrayList<Student>();
String sql = "select * from student where name like ? AND classes LIKE ?";
try {
connect = DBUtil.getConnection();
pstmt = connect.prepareStatement(sql);
pstmt.setObject(1,"%"+name+"%");
pstmt.setObject(5,classes);
rset = pstmt.executeQuery();
while (rset.next()){
Student stu = new Student(rset.getString(1),rset.getLong(2),rset.getLong(3),rset.getLong(4),rset.getString(5));
students.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeAll(rset, pstmt, connect);
}
return students;
}
}
遇到的问题:1、DBUtil不知道为何导入不进来,一直显示的红色
2、不了解ResultSet的作用
3、写到stu = new Student(.....)这一段的时候发现原来的Student类应该有个构造方法传参,但是博客里面没有提到,应该是忘了
4、rset.setLong()这里面的前一个参数为何可以直接填 1,2,3,4,5,意义不明
2、对Spring的 IOC进行了一些了解
IoC 容器:最主要是完成了完成对象的创建和依赖的管理注入等等。
先从我们自己设计这样一个视角来考虑:
所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的文件。
对象和对象关系怎么表示?
可以用 xml , properties 文件等语义化配置文件表示。
描述对象关系的文件存放在哪里?
可能是 classpath , filesystem ,或者是 URL 网络资源, servletContext 等。
回到正题,有了配置文件,还需要对配置文件解析。
不同的配置文件对对象的描述不一样,如标准的,自定义声明式的,如何统一? 在内部需要有一个统一的关于对象的定义,所有外部的描述都必须转化成统一的描述定义。
如何对不同的配置文件进行解析?需要对不同的配置文件语法,采用不同的解析器
收获:实现接口操作的方法大同小异,都是先连接数据库然后根据要求进行设置参数再执行sql语句
明天要做的事:编写测试类
评论