(JDBC四)JDBC实例(b)

第四步:为每一个接口创建相应的实现类,在实现类中实现对表的操作

   import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    import com.hyxy.teacher.dao.ITeacherDAO;
    import com.hyxy.teacher.entity.Teacher;
    import com.hyxy.teacher.util.DButil;
    public class TeacherDAOImpl implements ITeacherDAO {
    
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        
        /**
         * 插入教师对象
         */
        @Override
        public void saveTeacher(Teacher teacher) {
            try {
                //获取连接
                conn=DButil.getConnection();
                //2.获取ps对象
                ps=conn.prepareStatement("INSERT INTO teacher VALUES(null,?,?,?)");
                //3.为?赋值
                ps.setString(1,teacher.getTname());
                ps.setInt(2,teacher.getTage());
                ps.setDouble(3,teacher.getTsalary());
                //4.执行
                ps.executeUpdate();
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                DButil.closeConnection(ps, conn);
            }
        }
        
        /**
         * 删除教师对象
         */
        @Override
        public void deleteTeacher(Integer tid) {
            try{
                conn=DButil.getConnection();
                ps=conn.prepareStatement("DELETE FROM teacher WHERE tname=?");
                ps.setInt(1,tid);
                ps.executeUpdate();
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                DButil.closeConnection(ps, conn);
            }
        }
        
        /**
         * 寻找教师对象
         */
        @Override
        public Teacher findTeacherByTid(Integer tid) {
            Teacher t=null;
            try {
                conn=DButil.getConnection();
                ps=conn.prepareStatement("SELECT tid,tname,tage,tsalary FROM teacher WHERE tid=?");
                ps.setInt(1,tid);
                rs=ps.executeQuery();
                if(rs.next()) {
                    int id=rs.getInt("tid");
                    String name=rs.getString("tname");
                    int age=rs.getInt("tage");
                    Double salary=rs.getDouble("tsalary");
                    t=new Teacher(id,name,age,salary);
                    return t;
                }
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                DButil.closeConnection(rs, ps, conn);
            }
            return null;
        }
        
        /**
         * 修改教师对象
         */
        @Override
        public void updateTeacher(Teacher teacher) {
            try {
                conn=DButil.getConnection();
                ps=conn.prepareStatement("UPDATE teacher SET tname=?,tage=?,tsalary=? WHERE tid=?");
                ps.setString(1,teacher.getTname());
                ps.setInt(2,teacher.getTage());
                ps.setDouble(3,teacher.getTsalary());
                ps.setInt(4,teacher.getTid());
                ps.executeUpdate();
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                DButil.closeConnection(ps, conn);
            }
        }
        
        /**
         * 遍历所有表对象
         */
        @Override
        public List<Teacher> findAllTeacher(String str) {
            List<Teacher> list=new ArrayList<Teacher>();
            try {
                conn=DButil.getConnection();
                String sql="";
                if(str!=null&&!"".equals(str)) {
                    sql="SELECT tid,tname,tage,tsalary FROM teacher LIKE ?";
                    ps=conn.prepareStatement(sql);
                    ps.setString(1,"%"+str+"%");
                }else {
                    sql="SELECT tid,tname,tage,tsalary FROM teacher";
                    ps=conn.prepareStatement(sql);
                }
                rs=ps.executeQuery();
                while(rs.next()) {
                    Teacher teacher=new Teacher(rs.getInt("tid"),rs.getString("tname"),rs.getInt("tage"),rs.getDouble("tsalary"));
                    list.add(teacher);
                }
            }catch(Exception e){
                e.printStackTrace();
            }finally {
                DButil.closeConnection(rs, ps, conn);
            }
            return list;
        }
        
        /**
         * 分页查询
         */
        @Override
        public List<Teacher> findAllTeacherByPages(int page,int pageSize,String column,String orderBy) {
            List<Teacher> list=new ArrayList<Teacher>();
            try {
                conn=DButil.getConnection();
                String sql="SELECT tid,tname,tage,tsalary FROM teacher ORDER BY "+column+" "+orderBy+" LIMIT ?,?";
                ps=conn.prepareStatement(sql);
                ps.setInt(1,(page-1)*pageSize);
                ps.setInt(2,pageSize);
                rs=ps.executeQuery();
                while(rs.next()) {
                    Teacher t=new Teacher(rs.getInt("tid"),rs.getString("tname"),rs.getInt("tage"),rs.getDouble("tsalary"));
                    list.add(t);
                }
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                DButil.closeConnection(rs,ps, conn);
            }
            return list;
        }
        
        /**
         * 获得总页数
         */
        @Override
        public int getTotalPages(int pageSize) {
            int totalRows=findAllTeacher("").size();
            return totalRows%pageSize==0?totalRows/pageSize:totalRows/pageSize+1;
        }
    
    }

第五步:测试,此例中仅选取其中几个方法进行测试

import java.util.List;
import org.junit.Test;
import com.hyxy.teacher.dao.ITeacherDAO;
import com.hyxy.teacher.daoImpl.TeacherDAOImpl;
import com.hyxy.teacher.entity.Teacher;
public class TestTeacher {
    ITeacherDAO dao=new TeacherDAOImpl();
    @Test
    public void testInsert() {
        Teacher t1=new Teacher("李老师",22,4000.0);
        Teacher t2=new Teacher("刘老师",25,5000.0);
        Teacher t3=new Teacher("赵老师",31,6000.0);
        Teacher t4=new Teacher("郑老师",54,15000.0);
        Teacher t5=new Teacher("任老师",46,8000.0);
        Teacher t6=new Teacher("海老师",57,15000.0);
        dao.saveTeacher(t1);
        dao.saveTeacher(t2);
        dao.saveTeacher(t3);
        dao.saveTeacher(t4);
        dao.saveTeacher(t5);
        dao.saveTeacher(t6);
    }

测试结果:


    @Test
    public void testDelete() {
        Teacher t=new Teacher("张老师",23,6000.0);
        dao.saveTeacher(t);
        dao.deleteTeacher(t.getTid());
    }

测试结果:


    @Test
    public void testUpdate() {
        Teacher t=dao.findTeacherByTid(1);
        t.setTsalary(20000.0);
        dao.updateTeacher(t);
    }

测试结果:


    @Test
    public void testFindAllTeacher(){
        List<Teacher> list=dao.findAllTeacher("");
        for(Teacher teacher:list) {
            System.out.println(list);
        }
    }

测试结果:

Teacher [tid=1, tname=李老师, tage=22, tsalary=20000.0]
Teacher [tid=2, tname=刘老师, tage=25, tsalary=5000.0]
Teacher [tid=3, tname=赵老师, tage=31, tsalary=6000.0]
Teacher [tid=4, tname=郑老师, tage=54, tsalary=15000.0]
Teacher [tid=5, tname=任老师, tage=46, tsalary=8000.0]
Teacher [tid=6, tname=海老师, tage=57, tsalary=15000.0]
Teacher [tid=7, tname=张老师, tage=23, tsalary=6000.0]
    @Test
    public void testFindByLimit() {
        int page=1;
        int pageSize=3;
        if(page<0) {
            page=1;
        }else if(page>dao.getTotalPages(pageSize)) {
            page=dao.getTotalPages(pageSize);
        }
        List<Teacher> list=dao.findAllTeacherByPages(page,pageSize,"tage","ASC");
        for(Teacher teacher:list) {
            System.out.println(teacher);
        }
    }
}

测试结果:

Teacher [tid=1, tname=李老师, tage=22, tsalary=20000.0]
Teacher [tid=7, tname=张老师, tage=23, tsalary=6000.0]
Teacher [tid=2, tname=刘老师, tage=25, tsalary=5000.0]

猜你喜欢

转载自blog.csdn.net/z774884795/article/details/84479204