MVC案例之DAO层设计
开发流程
构建数据库–>编写DAO接口–>编写Servlet–>编写JSP(怎么有种反了的感觉)
- 加入C3P0数据源
- 编写DAO,jdbcUtils工具类和CustomerDAO接口
- 提供CustomerDAO接口的实现类:CustomerDAOJDBCImplement
设计的DAO层类
Dao的代码
package dao;
import java.util.List;
//当前DAO处理的实体类型是什么,封装了基本的crud方法,
//以供子类继承使用
//整个DAO采用DButils解决方案
public class Dao <T>{
private Class<T> clazz;
/*
* 返回某一个字段的值例如返回某一条记录的customerName
*/
public <E> E getForValue(String sql,Object ... args){
return null;
}
/*
* 返回T所对应的List
*/
public List<T> getForList(String sql,Object ...args){
return null;
}
/*
* 返回T对应的一个实例类的对象
* sql
* args
*/
public T get(String sql,Object ...args) {
return null;
}
/*
* 该方法封装了Insert,Delete,Update操作
* sql:SQL语句
* args:填充sql语句的占位符
*/
public void update(String sql,Object ...args) {
}
}
CustomerDAO的代码
package dao;
import java.util.List;
import domain.Customer;
public interface CustomerDAO {
public List<Customer> getAll();
public void save();
public Customer get(Integer id);
public void delete(Integer id);
/*
* 返回name相等的记录数
*/
public long getCountWithName(String name);
}
Customer的代码
package domain;
public class Customer {
private Integer id;
private String name;
private String address;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Customer [id=" + id + ", name=" + name + ", address=" + address + ", phone=" + phone + ", getId()="
+ getId() + ", getName()=" + getName() + ", getAddress()=" + getAddress() + ", getPhone()=" + getPhone()
+ "]";
}
}
CustomerDAOJdbcImpl的代码
package impl;
import java.util.List;
import dao.CustomerDAO;
import dao.Dao;
import domain.Customer;
public class CustomerDAOJdbcImpl extends Dao<Customer> implements CustomerDAO{
@Override
public List<Customer> getAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public void save() {
// TODO Auto-generated method stub
}
@Override
public Customer get(Integer id) {
// TODO Auto-generated method stub
return null;
}
@Override
public void delete(Integer id) {
// TODO Auto-generated method stub
}
@Override
public long getCountWithName(String name) {
// TODO Auto-generated method stub
return 0;
}
}
遇到的问题
- 数据库报错
仔细一看自己写的创建表的代码
CREATE TABLE customers{
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30) NOT NULL UNIQUE,
address VARCHAR(30),
phone VARCHAR(30),
};
建表的时候把()写成了{},尴尬。
- 创建get(),set()
方便的创建get(),set()方法
这谁顶得住呀!!!