1 一个类操作单表的增删改查
2 三层架构来构建程序,实现单表的操作
思路:三层架构(数据访问层、业务逻辑层、界面层)JDBC操作单表数据维护的实现:
1 创建数据库school及表student
2 创建三个层次的包:
cn.sdut.dao——放置数据访问层的类和接口
cn.sdut.biz——放置业务逻辑层的类和接口
cn.sdut.view——放置界面层的类和接口
3 创建cn.sdut.po包,里面放置Student.java类——JavaBean
4 各层次的程序代码:
(1)数据访问层:(cn.sdut.dao)
BaseDao.java——各种公共变量、数据库的连接和各种公共变量的关闭方法
StudentDao.java——学生表数据的增、删、改、查方法
(2)业务逻辑层:(cn.sdut.biz)
(3)界面层:(cn.sdut.view)
Main.java——测试
参考代码:
1 创建数据库school及表student
2 创建三个层次的包:
cn.sdut.dao——放置数据访问层的类和接口
cn.sdut.biz——放置业务逻辑层的类和接口
cn.sdut.view——放置界面层的类和接口
3 创建cn.sdut.po包,里面放置Student.java类——JavaBean
public class Student {
private int id;
private String name;
private String birthday;
private float score;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", birthday="
+ birthday + ", score=" + score + "]";
}
}
4 各层次的程序代码:
(1)数据访问层:(cn.sdut.dao)
BaseDao.java——各种公共变量、数据库的连接和各种公共变量的关闭方法
public class BaseDao {
Connection con;
PreparedStatement pst;
ResultSet rs;
public Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8";
con = DriverManager.getConnection(url, "root", "usbw");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
public void closeAll() {
try {
if (rs != null) {
rs.close();
}
if (pst != null) {
pst.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
StudentDao.java——学生表数据的增、删、改、查方法
public class StudentDao extends BaseDao{
public int add(Student student) {
// 增加记录
int result = 0;
con = getConnection();
String insertSql = "insert into student(name,birthday,score) values(?,?,?)";
try {
pst = con.prepareStatement(insertSql);
pst.setString(1, student.getName());
pst.setString(2, student.getBirthday());
pst.setFloat(3, student.getScore());
result = pst.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
closeAll();
}
return result;
}
public int del(int id) {
con = getConnection();
int result = 0;
// 删除记录
String deleteSql = "delete from student where id=?";
try {
pst = con.prepareStatement(deleteSql);
pst.setInt(1, id);
result = pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
closeAll();
}
return result;
}
public int update() {
return 0;
}
public int update(Student student) {
// 增加记录
int result = 0;
con = getConnection();
String updateSql = "update student set name=?,birthday=?,score=? where id=? ";
try {
pst = con.prepareStatement(insertSql);
pst.setString(1, student.getName());
pst.setString(2, student.getBirthday());
pst.setFloat(3, student.getScore());
pst.setInt(4,student.getId());
result = pst.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
closeAll();
}
return result;
}
public List<Student> queryAll() {
List<Student> students=new ArrayList<Student>();
con = getConnection();
// 查询记录
String querySql = "select * from student";
try {
pst = con.prepareStatement(querySql);
ResultSet rs = pst.executeQuery();
//System.out.println(rs);
while (rs.next()) {
Student stu=new Student();
int id = rs.getInt("id");
String name = rs.getString(2);
String birthday = rs.getString(3);
float score = rs.getFloat(4);
stu.setId(id);
stu.setName(name);
stu.setBirthday(birthday);
stu.setScore(score);
students.add(stu);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeAll();
}
return students;
}
}
(2)业务逻辑层:(cn.sdut.biz)
因业务简单,省略。
(3)界面层:(cn.sdut.view)
Main.java——测试
public class Main {
public static void main(String[] args) {
StudentDao studentDao=new StudentDao();
Student student=new Student();
student.setName("777");
student.setBirthday("2012-3-3");
student.setScore(22);
//studentDao.add(student); //增加1名学生,信息如上
//studentDao.del(6); //删除id=6的学生
student.setId(1);
student.setName(“王五”);
student.setBirthday(“1988-2-2”);
student.setScore(88);
studentDao.update(student); //将id为1的记录姓名、出生日期和成绩均修改
List<Student> students=studentDao.queryAll(); //查询所有学生
for(Student stu:students)
{
System.out.println(stu);
}
}
}