JavaWeb_MVC案例之DAO层设计
MVC案例之DAO层设计
建数据表
-使用Oracle数据库
--创建表
create table customers(
id number(10) primary key,
name varchar2(30) not null unique,
address varchar2(30),
phone varchar2(30)
)
--创建自增序列
create sequence id_seq start with 0 increment by 1 minvalue 0;
新建动态Web工程,加入 C3P0 数据源
- 1.c3p0
- 2.数据库驱动的 jar 包
编写 DAO、JdbcUtils工具类 和 CustomerDAO 接口
- 1.DAO代码:
/**
* All rights Reserved,Designed By XS
* @Title: DAO.java
* @Package com.xs.mvc_crud.dao
* @Description: TODO
* @author: XS
* @date: 2019年3月9日 上午11:22:55
* @version V1.0
*/
package com.xs.mvc_crud.dao;
import java.util.List;
/**
* @ClassName: DAO
* @Description: <T>:当前DAO处理的实体类是什么类型,封装了CRUD的方法,以供子类继承使用。
* 当前DAO直接在方法中获取数据库连接。
* @author: XS
* @date: 2019年3月9日 上午11:22:55
* @version V1.0
*/
/*------------------------ DAO代码 ------------------------*/
public class DAO<T> {
private Class<T> clazz;
/**
* @Title: getForValue
* @Description: 返回某一个字段的值,例如返回某一条记录的customerName,或返回数据表中有多少条记录等。
* @param sql
* @param args
* @return
* @return E
*/
public <E> E getForValue(String sql,Object ... args) {
return null;
}
/**
* @Title: getForList
* @Description: 返回T所对应的List
* @param sql
* @param args
* @return
* @return List<T>
*/
public List<T> getForList(String sql, Object ... args) {
return null;
}
/**
* @Title: get
* @Description: 返回对应的T的一个实例类的对象。
* @param sql
* @param args
* @return
* @return T
*/
public T get(String sql,Object ... args) {
return null;
}
/**
* @Title: update
* @Description: 该方法封装了INSERT、DELETE、UPDATE操作。
* @param sql: SQL 语句。
* @param args: 填充SQL语句的占位符。
* @return void
*/
public void update(String sql,Object ... args) {
}
}
- 2.JdbcUtils代码:
/**
* All rights Reserved,Designed By XS
* @Title: JdbcUtils.java
* @Package com.xs.mvc_crud.db
* @Description: TODO
* @author: XS
* @date: 2019年3月9日 下午12:36:46
* @version V1.0
*/
package com.xs.mvc_crud.db;
import java.sql.Connection;
/**
* @ClassName: JdbcUtils
* @Description: JDBC操作的工具类
* @author: XS
* @date: 2019年3月9日 下午12:36:46
* @version V1.0
*/
/*------------------------ JdbcUtils代码 ------------------------*/
public class JdbcUtils {
/**
* @Title: releaseConnection
* @Description: 释放Connection连接
* @return void
*/
public static void releaseConnection(Connection connection) {
}
/**
* @Title: getConnection
* @Description: 返回数据源的一个Connection对象
* @return
* @return Connection
*/
public static Connection getConnection() {
return null;
}
}
- 3.Customer实体类代码:
/**
* All rights Reserved,Designed By XS
* @Title: Customer.java
* @Package com.xs.mvc_crud.domain
* @Description: TODO
* @author: XS
* @date: 2019年3月9日 下午12:41:04
* @version V1.0
*/
package com.xs.mvc_crud.domain;
/**
* @ClassName: Customer
* @Description: TODO
* @author: XS
* @date: 2019年3月9日 下午12:41:04
* @version V1.0
*/
/*------------------------ Customer实体类代码 ------------------------*/
public class Customer {
private int id;
private String name;
private String address;
private String phone;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id: the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name: the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the address
*/
public String getAddress() {
return address;
}
/**
* @param address: the address to set
*/
public void setAddress(String address) {
this.address = address;
}
/**
* @return the phone
*/
public String getPhone() {
return phone;
}
/**
* @param phone: the phone to set
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
* <p>Title: toString</p>
* <p>Description: </p>
* @see java.lang.Object#toString()
* @return
*/
@Override
public String toString() {
return "Customer [id=" + id + ", name=" + name + ", address=" + address + ", phone=" + phone + "]";
}
}
- 4.CustomerDAO代码:
/**
* All rights Reserved,Designed By XS
* @Title: CustomerDAO.java
* @Package com.xs.mvc_crud.dao
* @Description: TODO
* @author: XS
* @date: 2019年3月9日 下午12:39:59
* @version V1.0
*/
package com.xs.mvc_crud.dao;
import java.util.List;
import com.xs.mvc_crud.domain.Customer;
/**
* @ClassName: CustomerDAO
* @Description: TODO
* @author: XS
* @date: 2019年3月9日 下午12:39:59
* @version V1.0
*/
/*------------------------ CustomerDAO代码 ------------------------*/
public interface CustomerDAO {
public List<Customer> getAll();
public void save(Customer customer);
public Customer get(int id);
public void delete(int id);
/**
* @Title: getCountWithName
* @Description: 返回和name相等的记录数
* @param name
* @return
* @return BigDecimal
*/
public BigDecimal getCountWithName(String name);
}
提供 CustomerDAO 接口的实现类:CustomerDAOJdbcImpl
- 1.CustomerDAOJdbcImpl代码:
/**
* All rights Reserved,Designed By XS
* @Title: CustomerDAOJdbcImpl.java
* @Package com.xs.mvc_crud.dao.impl
* @Description: TODO
* @author: XS
* @date: 2019年3月9日 下午12:47:50
* @version V1.0
*/
package com.xs.mvc_crud.dao.impl;
import java.util.List;
import com.xs.mvc_crud.dao.CustomerDAO;
import com.xs.mvc_crud.dao.DAO;
import com.xs.mvc_crud.domain.Customer;
/**
* @ClassName: CustomerDAOJdbcImpl
* @Description: TODO
* @author: XS
* @date: 2019年3月9日 下午12:47:50
* @version V1.0
*/
/*------------------------ CustomerDAOJdbcImpl代码 ------------------------*/
public class CustomerDAOJdbcImpl extends DAO<Customer> implements CustomerDAO {
/**
* <p>Title: getAll</p>
* <p>Description: </p>
* @see com.xs.mvc_crud.dao.CustomerDAO#getAll()
* @return
*/
@Override
public List<Customer> getAll() {
// TODO Auto-generated method stub
return null;
}
/**
* <p>Title: save</p>
* <p>Description: </p>
* @see com.xs.mvc_crud.dao.CustomerDAO#save(com.xs.mvc_crud.domain.Customer)
* @param customer
*/
@Override
public void save(Customer customer) {
// TODO Auto-generated method stub
}
/**
* <p>Title: get</p>
* <p>Description: </p>
* @see com.xs.mvc_crud.dao.CustomerDAO#get(int)
* @param id
* @return
*/
@Override
public Customer get(int id) {
// TODO Auto-generated method stub
return null;
}
/**
* <p>Title: delete</p>
* <p>Description: </p>
* @see com.xs.mvc_crud.dao.CustomerDAO#delete(int)
* @param id
*/
@Override
public void delete(int id) {
// TODO Auto-generated method stub
}
/**
* <p>Title: getCountWithName</p>
* <p>Description: </p>
* @see com.xs.mvc_crud.dao.CustomerDAO#getCountWithName(java.lang.String)
* @param name
* @return
*/
@Override
public BigDecimal getCountWithName(String name) {
// TODO Auto-generated method stub
return 0;
}
}