java6.18下午实训总结

7.数据访问接口实现类:
在这里插入图片描述
按下快捷键之后:在这里插入图片描述
通常应该先将代码的整体结构(开头,结尾)码好,再慢慢进行内部代码量的填充
在这里插入图片描述
如果码代码的时候出现了异常,我们应该怎么解决呢?
选中异常范围
试试这里:
在这里插入图片描述
然后选择 8.try/catch/finally
学校数据访问接口实现类整体代码如下:

/**
 * 包名:net.qt.student.dao.impl
 * 类名:CollegeDaoImpl
 * 描述:学校数据访问接口实现类
 * 作者:谯婷
 * 日期:2019.6.18
 */
package net.qt.student.dao.impl;


import net.qt.student.bean.College;
import net.qt.student.dao.CollegeDao;
import net.qt.student.dbutil.ConnectionManager;

import java.sql.*;

public class CollegeDaoImpl implements CollegeDao {


    /**
     * 按id查询学校
     * @param id
     * @return
     */
    @Override
    public College findById(int id) {
        //声明学校对象
        College college = null;
        //1.获取数据库连接对象
        Connection conn = ConnectionManager.getConnection();
        //2.定义SQL字符串
        String strSQL = "SELECT * FROM t_college WHERE id = ?";

        try {
            //3.创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //4.设置占位符的值
            pstmt.setInt(1,id);
            //5.执行SQL查询,返回结果集
            ResultSet rs = pstmt.executeQuery();
            //6.判断结果集是否有记录
            if(rs.next()){
                //创建学校实体
                college = new College();
                //利用当前字段值设置属性
                college.setId(rs.getInt("id"));
                college.setName(rs.getString("name"));
                college.setPresident(rs.getString("president"));
                college.setStartTime(rs.getDate("start_time"));
                college.setTelephone(rs.getString("telephone"));
                college.setEmail(rs.getString("email"));
                college.setAddress(rs.getString("address"));
                college.setProfile(rs.getString("profile"));
            }
            //7.关闭预备语句对象
            pstmt.close();
            //8.关闭结果集对象
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //关闭数据库连接
            ConnectionManager.closeConnection(conn);
        }
        //返回学校对象
        return college;
    }

    /**
     * 更新学校方法
     * @param college
     * @return
     */

    @Override
    public int update(College college) {
        //1.定义更新记录数
        int count =  0;
        //1.获取数据库连接
        Connection conn =  ConnectionManager.getConnection();
        //2.定义SQL字符串
        String strSQL = "update t_college set name = ?, president = ?, start_time = ?,"
                + "telephone = ?, email = ?, profile = ? where id = ?";
        try {
            //3.创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //4.设置占位符的道
            pstmt.setString(1,college.getName());
            pstmt.setString(2,college.getPresident());

            pstmt.setTimestamp(3,new Timestamp(college.getStartTime().getTime()));
            pstmt.setString(4,college.getTelephone());
            pstmt.setString(5,college.getEmail());
            pstmt.setString(6,college.getProfile());
            pstmt.setInt(7,college.getId());
            //5.执行SQL语句,返回更新的记录数
            count = pstmt.executeUpdate();
            //6.关闭预备语句对象
            pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //
            ConnectionManager.closeConnection(conn);
        }

        //返回更新记录数
        return count;
    }
}


这是我的第一个CollegeDaoImpl学校数据访问接口实现类的成品,虽然是跟着老师的步骤来的,但是我速度有点慢,或者有的时候没注意,码的时候就出现了两个小插曲
第一个小插曲就是:
当我在更新学校方法中设置占位符的道的时候,找不到startTime的getTime()方法。原因是在College类中设置startTime的私有属性时,将它的字符类型设置错了,应该是:
在这里插入图片描述
后面改正一下就好了
第二个小插曲:
粗心的我把单词拼错了,邮箱应该是email,但是我有的地方拼成了emial或者emails,果然学好英语的重要性非比寻常哟~~~看来自己真的需要补补课啦
做好了CollegeDaoImpl学校数据访问接口实现类,那么怎么让他发挥功能呢?

8.这个时候我们需要再创建一个包,专门来存放归类测试类,再创建一个TestCollegeDaoImpl类用来测试
在这里插入图片描述
在这里插入图片描述
然后就会发现这下面出现了一个东西:在这里插入图片描述
完整的TestCollegeDaoImpl测试代码如下:

package net.qt.student.test;

import net.qt.student.bean.College;
import net.qt.student.dao.CollegeDao;
import net.qt.student.dao.impl.CollegeDaoImpl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class TestCollegeDaoImpl {

    @Before
    public void beforeTset(){
        System.out.println("单元测试开始了~");
    }

    @After
    public void afterTset(){
        System.out.println("单元测试结束了~");
    }

    @Test
    public void testFindById() {
        CollegeDao dao = new CollegeDaoImpl();
        College college = dao.findById(1);
        System.out.println(college);
    }

    @Test
    public void testUpdate() {
        CollegeDao dao = new CollegeDaoImpl();
        College college = dao.findById(1);
        college.setPresident("小王");
        int count = dao.update(college);
        if(count>0){
            System.out.println("恭喜,学校记录更新成功!");
        }else {
            System.out.println("遗憾,学校记录更新失败!");
        }
    }
}

让我们来测试一下代码:在这里插入图片描述
之后我们自己创建一个TestStatusDaoImpl类用来测试StatusDaoImpl
有了第一个测试类的经验,这个测试代码很容易就完成了

package net.qt.student.test;

import net.qt.student.bean.Status;
import net.qt.student.dao.StatusDao;
import net.qt.student.dao.impl.StatusDaoImpl;
import org.junit.Test;

public class TestStatusDaoImpl {
    @Test
    public void testFindById(){
        StatusDao dao = new StatusDaoImpl();
        Status status = dao.findById(1);
        System.out.println(status);
    }

    @Test
    public void tsetUpdate(){
        StatusDao dao = new StatusDaoImpl();
        Status status = dao.findById(1);
        status.setAuthor("无心剑");
        status.setTelephone("15984263712");
        status.setEmail("2624598742@qq.com");
        dao.update(status);
        status = dao.findById(1);
        System.out.println(status);
    }


}

运行结果:成功啦~
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值