MVC案例之DAO层设计

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()方法
    在这里插入图片描述
    在这里插入图片描述
    这谁顶得住呀!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值