第四步:为每一个接口创建相应的实现类,在实现类中实现对表的操作
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]