发表于: 2017-05-01 01:22:00

1 1459


今日目标:完善删改查的方法。


Retrieves any auto-generated keys created as a result of executing this  Statement object. If this Statement object did not generate any keys, an empty ResultSet object is returned. 

这个 ps.getGeneratedKeys()方法,返回的是对这个Statement执行之后,诞生的自增id。如果该Statement不增加任何id,返回空的结果集。


在查询方法中,关于时间戳查阅了一篇文章获取该类型的数据可以使用:java.sql.Timestamp类型 。

节省篇幅,查询类只返回了qq 报名方向和名字三个值。

  1. package com.qhs.DB_crud.DAO;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.sql.Timestamp;
  9. import com.qhs.DB_crud.bean.Student;
  10. public class studentDao implements DAO{
  11.    public studentDao() {
  12.        try {
  13.            Class.forName("com.mysql.jdbc.Driver");
  14.        } catch (ClassNotFoundException e) {
  15.            // TODO Auto-generated catch block
  16.            e.printStackTrace();
  17.        }
  18.    }
  19.    public Connection getConnection() throws SQLException{
  20.        return DriverManager.getConnection("jdbc:mysql://localhost:3306/学员报名?characterEncoding=UTF-8","root","admin");
  21.    }
  22.    public boolean add(Student student) {
  23.        //增
  24.        boolean flag = false;
  25.        String sql = "insert into signup values(UNIX_TIMESTAMP(now())*1000,UNIX_TIMESTAMP(now())*1000,null,?,?,?,?,?,?,?,?,?,?,?,?)";
  26.        try(
  27.        //try-resource-catch
  28.                Connection c = getConnection();
  29.                PreparedStatement ps = c.prepareStatement(sql);
  30.            ){
  31.        //添加参数
  32.            ps.setString(1, student.getName());
  33.            ps.setString(2, student.getQq());
  34.            ps.setString(3, student.getMajor());
  35.            ps.setString(4, student.getStart_date());
  36.            ps.setString(5, student.getSchool());
  37.            ps.setString(6, student.getOnlineclass());
  38.            ps.setString(7, student.getOnlineno());
  39.            ps.setString(8, student.getDiarylink());
  40.            ps.setString(9, student.getAim());
  41.            ps.setString(10, student.getRecommender());
  42.            ps.setString(11, student.getCensor());
  43.            ps.setString(12, student.getWherefrom());
  44.            ps.execute();
  45.            ResultSet rs = ps.getGeneratedKeys();
  46.            if(rs.next()){
  47.                flag = true;
  48.            }
  49.        } catch (SQLException e) {
  50.            // TODO Auto-generated catch block
  51.            e.printStackTrace();
  52.        }
  53.        return flag;
  54.    }
  55.    public boolean update(Student student) {
  56.        // TODO Auto-generated method stub
  57.        //改-完成
  58.        boolean flag = false;
  59.        //根据id去查找记录,并且修改
  60.        String sql = "update signup set update_at = UNIX_TIMESTAMP(now())*1000, ?,?,?,?,?,?,?,?,?,?,?,? where Id = ?)";
  61.        try(
  62.        //try-resource-catch
  63.                Connection c = getConnection();
  64.                PreparedStatement ps = c.prepareStatement(sql);
  65.            ){
  66.        //添加参数
  67.            ps.setString(1, student.getName());
  68.            ps.setString(2, student.getQq());
  69.            ps.setString(3, student.getMajor());
  70.            ps.setString(4, student.getStart_date());
  71.            ps.setString(5, student.getSchool());
  72.            ps.setString(6, student.getOnlineclass());
  73.            ps.setString(7, student.getOnlineno());
  74.            ps.setString(8, student.getDiarylink());
  75.            ps.setString(9, student.getAim());
  76.            ps.setString(10, student.getRecommender());
  77.            ps.setString(11, student.getCensor());
  78.            ps.setString(12, student.getWherefrom());
  79.            ps.setInt(13, student.getId());
  80.            //直接把执行结果赋值到定义的flag中
  81.            flag = ps.execute();
  82.        } catch (SQLException e) {
  83.            // TODO Auto-generated catch block
  84.            e.printStackTrace();
  85.        }
  86.        return flag;
  87.    }
  88.    public boolean delete(Student student) {
  89.        // TODO Auto-generated method stub
  90.        //删-完成
  91.        boolean flag = false;
  92.        String sql = "delete from signup where id = ?)";
  93.        try(
  94.        //try-resource-catch
  95.                Connection c = getConnection();
  96.                PreparedStatement ps = c.prepareStatement(sql);
  97.            ){
  98.            //直接把执行结果赋值到定义的flag中
  99.            ps.setInt(1, student.getId());
  100.            flag = ps.execute();
  101.        } catch (SQLException e) {
  102.            // TODO Auto-generated catch block
  103.            e.printStackTrace();
  104.        }
  105.        return flag;
  106.    }
  107.    public Student get(Student student) {
  108.        // TODO Auto-generated method stub
  109.        //查
  110.        String sql = "select * from signup where name = ?)";
  111.        try(
  112.        //try-resource-catch
  113.                Connection c = getConnection();
  114.                PreparedStatement ps = c.prepareStatement(sql);
  115.            ){
  116.        //添加参数
  117.            ps.setString(1, student.getName());
  118.            ResultSet rs = ps.executeQuery();
  119.            if (rs.next()) {
  120.                student = new Student();
  121. //                Timestamp createtime = rs.getTimestamp(1);
  122. //                String createtime2 = createtime.toString();
  123. //                Timestamp updatetime = rs.getTimestamp(2);
  124. //                String updatetime2 = createtime.toString();
  125.                String name = rs.getString(4);
  126.                String qq = rs.getString(5);
  127.                String major = rs.getString(6);
  128.                student.setName(name);
  129.                student.setQq(qq);
  130.                student.setMajor(major);
  131.                }
  132.        } catch (SQLException e) {
  133.            // TODO Auto-generated catch block
  134.            e.printStackTrace();
  135.        }
  136.        return student;
  137.    }
  138. }


明日目标:

  • 18.学习Junit,并尝试写自己的第一个单元测试,记着要写在自己的src/main/test下。
  • 19.学习Spring,配置Spring和Junit
  • 20.编写单元测试的代码,注意,你也可以尝试一下,先写单元测试的代码,再写接口,再写实现类。
  • 21.查看日志,并转成Debug模式,练习调试,学会查看单步执行时的变量值。

收获:

加深了对预编译statement、statement的理解,同时确定了运行类和dao类之间沟通只使用实体。

mysql时间戳在java.sql包里有对应的类Timestamp,采用 ts = Timestamp.valueOf(tsStr);  和tsStr = ts.toString();互转。

对sql基本增删改查有了进一步的了解熟悉,多写几次,应该不会和今天一样需要查教程。


遇到的问题:暂无(都解决了


返回列表 返回列表
评论

    分享到