根据“Java 数据库连接、关闭、增删改查方法的封装(一)之JDBCUtil工具类”的文章实现连接了数据库、关闭数据库、增删改查工具类。接着往下分析。
1.首先根据数据库中表的列名和类型编辑一个实体类放在entry包中,本文以Student为例。
package entry;
public class Student{
private int id;
private String name;
private int gradeId;
public Student() {
}
public Student (int id, String name, int gradeId) {
this.id = id;
this.name = name;
this.gradeId = gradeId;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setGradeId(int gradeId) {
this.gradeId = gradeId;
}
public int getGradeId() {
return gradeId;
}
public String toString() {
return "Student [id=" + id + ", name=" + name + ", gradeId=" + gradeId +
"]";
}
}
1.首先编写一个BaseDao 接口,如图所示,BaseDao 中运用泛型,此时可以匹配不同的实体类。本文以Student为例
/***
* 基础类定义接口方法,其他接口可以通过继承实现增删改查方法
* 定义为泛型可以适应所有引用类型
* @author Administrator
*
* @param <T>
*/
public interface BaseDao<T> {
void insert(T args);
void update(T args);
void delete(int id);
T getById(int id);
List<T> getAll();
}
2.编写类接口,以Student为例
public interface IStudentDao extends BaseDao<Student>{
}
创建IStudentDao接口的实现类,会自动生成增删改查方法,如图所示
package daoImp;
import java.util.List;
import dao.IStudentDao;
import entry.Student;
public class StudentDaoImp implements IStudentDao {
@Override
public void insert(Student args) {
// TODO Auto-generated method stub
}
@Override
public void update(Student args) {
// TODO Auto-generated method stub
}
@Override
public void delete(int id) {
// TODO Auto-generated method stub
}
@Override
public Student getById(int id) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Student> getAll() {
// TODO Auto-generated method stub
return null;
}
}
现在我们就把增删改查方法补充完整
public class StudentDaoImp implements IStudentDao{
@Override
public void insert(Student args) {
// TODO Auto-generated method stub
String sql="insert into student values(null,?,?)";
JDBCUtil.executeUpdate(sql, args.getName(),args.getGradeId());
}
@Override
public void update(Student args) {
// TODO Auto-generated method stub
String sql="update student set name=?,gradeId=? where id=?";
JDBCUtil.executeUpdate(sql, args.getName(),args.getGradeId(),args.getId());
}
@Override
public void delete(int id) {
// TODO Auto-generated method stub
String sql="delete from student where id=?";
JDBCUtil.executeUpdate(sql, id);
}
@Override
public Student getById(int id) {
// TODO Auto-generated method stub
String sql="select * from student where id=?";
List<Map<String,Object>> list=JDBCUtil.Query(sql, id);
for(Map<String,Object> map:list){
String name=(String) map.get("name");
String gradeId=(String) map.get("gradeId");
return new User(id, name, gradeId);
}
return null;
}
@Override
public List<Student> getAll() {
// TODO Auto-generated method stub
String sql="select * from student";
List<Map<String,Object>> list=JDBCUtil.Query(sql);
List<Student> li=new ArrayList<>();
for(Map<String,Object> map:list){
Integer id=Integer.parseInt(map.get("id").toString());
String name=(String) map.get("name");
String gradeId=(String) map.get("gradeId");
Student stu=new User(id,name,gradeId);
li.add(stu);
}
return li;
}
}