今天很开心,,,用德鲁伊把增删改查做出来嘞,果然需要多练,并且总结。
首先,看一下基本的结构
解释:我这里用到一个表Course 在condao包里(因为之前在这个类里用到过,懒得再写了),connpool包下有一个接口CourseDao和一个类Druid(我设计的不好,因为对包的分类不明白,其实应该放在test包下),connpool包下又创建了一个包,其下有一个类CourseDaoImpl,来实现CourseDao接口。
简单的包结构:
代码展示:
Course类 (这个要与数据库对应,才能操作)
package com.august.condao;
public class Course {
private String cno;
private String cname;
private int credit;
private int semester;
public Course() {
}
public Course(String cno, String cname, int credit, int semester) {
this.cno = cno;
this.cname = cname;
this.credit = credit;
this.semester = semester;
}
public String getCno() {
return cno;
}
public void setCno(String cno) {
this.cno = cno;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public int getCredit() {
return credit;
}
public void setCredit(int credit) {
this.credit = credit;
}
public int getSemester() {
return semester;
}
public void setSemester(int semester) {
this.semester = semester;
}
@Override
public String toString() {
return "Course{" +
"cno='" + cno + '\'' +
", cname='" + cname + '\'' +
", credit=" + credit +
", semester=" + semester +
'}';
}
}
CourseDao
public interface CourseDao {
int delete(String cno);
int insert(Course c);
int update(Course c);
List<Course> select();
}
CourseDaoImpl
public class CourseDaoImpl implements CourseDao {
@Override
public int delete(String cno) {
int row=0;
try {
Connection conn= Druid.getDruid().getConnection();
PreparedStatement ps=conn.prepareStatement("delete from course where cno=?");
ps.setString(1,cno);
row=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return row;
}
@Override
public int insert(Course c) {
int row=0;
try {
Connection conn=Druid.getDruid().getConnection();
PreparedStatement ps=conn.prepareStatement("insert into course values (?,?,?,?);");
ps.setString(1,c.getCno());
ps.setString(2,c.getCname());
ps.setInt(3,c.getCredit());
ps.setInt(4,c.getSemester());
row=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return row;
}
@Override
public int update(Course c) {
int row=0;
try {
Connection conn=Druid.getDruid().getConnection();
PreparedStatement ps=conn.prepareStatement("update course set cname=?,credit=? where cno=?");
ps.setString(1,c.getCname());
ps.setInt(2,c.getCredit());
ps.setString(3,c.getCno());
row=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return row;
}
@Override
public List<Course> select() {
List<Course> list=new ArrayList<>();
try {
Connection conn=Druid.getDruid().getConnection();
PreparedStatement ps=conn.prepareStatement("select * from course");
ResultSet rs=ps.executeQuery();
while (rs.next()) {
Course c=new Course(rs.getString("cno"),rs.getString("cname"),
rs.getInt("credit"),rs.getInt("semester"));
list.add(c);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
Druid 测试类+工具类
public class Druid {
private static final DruidDataSource druid=new DruidDataSource();
private Druid(){
druid.setDriverClassName("com.mysql.jdbc.Driver");
druid.setUrl("jdbc:mysql://localhost:3306/demo3" +
"?useUnicode=true&characterEncoding=utf-8&useSSL=false");
druid.setUsername("root");
druid.setPassword("root");
}
public static DruidDataSource getDruid(){
return druid;
}
public static void main(String[] args) {
CourseDao dao=new CourseDaoImpl();
/*delete的测试*/
// System.out.println(dao.delete("c011"));
/*insert的测试*/
// System.out.println(dao.insert(new Course("c003","大创",2,2)));
/*update的测试*/
// System.out.println(dao.update(new Course("c003","体育课",4,2)));
/*select的测试*/
List<Course> list=dao.select();
for (Course course : list) {
System.out.println(course);
}
}
}