发表于: 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语句

明天要做的事:编写测试类




返回列表 返回列表
评论

    分享到