在写程序前写好文档:
readme.txt
1.准备开发环境 1.1导入开发包 mysql驱动 c3po连接池 dbutils fileupload组件: 1)io包 beanutils开发包: log4j开发包 jstl开发 1.2创建组织程序的开发包 com.du.dao.impl com.du.service.impl com.du.web.controller com.du.utils junits.test com.du.domain 1.3 准备库和表 create database day18; use day18; create table upfile ( id varchar(40) primary key, uuidname varchar(100) not null unique, filename varchar(100) not null, savepath varchar(255) not null, uptime datetime not null, description varchar(255), username varchar(40) not null ); 2.做实体 3.做dao 4.做service 5.做web层
jdbc工具类,jdbcutils:
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtils {
private static DataSource ds;
static {
ds = new ComboPooledDataSource();//c3p0获取连接池
}
public static DataSource getDataSource() {
return ds;
}
}
注意:用c3p0获取连接池的时候,要编写c3p0-config.xml 文档
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/day18</property> <property name="user">root</property> <property name="password">root</property> <property name="acquireIncrement">5</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">5</property> <property name="maxPoolSize">20</property> </default-config> <named-config name="flx"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/day16</property> <property name="user">root</property> <property name="password">root</property> <property name="acquireIncrement">5</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">5</property> <property name="maxPoolSize">20</property> </named-config> </c3p0-config>
在里面编写好要连接的数据库信息!
Dao层
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.du.dao.UpfileDao;
import com.du.domain.Upfile;
import com.du.utils.JdbcUtils;
public class UpfileDaoImpl implements UpfileDao {
/*
* create table upfile
(
id varchar(40) primary key,
uuidname varchar(100) not null unique,
filename varchar(100) not null,
savepath varchar(255) not null,
uptime datetime not null,
description varchar(255),
username varchar(40) not null
);
*/
public void add(Upfile uf){
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());//dbutils
String sql ="insert into upfile(id,uuidname,filename,savepath,uptime,description,username) values(?,?,?,?,?,?,?)";
Object[] params={uf.getId(),uf.getUuidname(),uf.getFilename(),uf.getSavepath(),uf.getUptime(),uf.getDescription(),uf.getUsername()};
try {
qr.update(sql, params);
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
public List getAll(){
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql="select * from upfile";
try {
List list =(List) qr.query(sql, new BeanListHandler(Upfile.class));
return list;
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
public Upfile find(String id){
QueryRunner qr =new QueryRunner(JdbcUtils.getDataSource());
String sql="select * from upfile where id = ?";
try {
Upfile up=(Upfile) qr.query(sql, id, new BeanHandler(Upfile.class));
return up;
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
}
注意:QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
这句话是要导入dbutils包
service层:
import java.util.List;
import com.du.dao.UpfileDao;
import com.du.domain.Upfile;
import com.du.factory.DaoFactory;
public class BusinessServiceImpl {
UpfileDao dao = DaoFactory.getInstance().getDao(UpfileDao.class);
public void add(Upfile up){
dao.add(up);
}
public List getAll(){
return dao.getAll();
}
public Upfile find(String id){
return dao.find(id);
}
}
注意:这里用到了工厂模式
import java.io.IOException;
import java.util.Properties;
public class DaoFactory {
//单例模式
private static Properties pro =new Properties();
static{
try {
pro.load(DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static DaoFactory instance = new DaoFactory();
private DaoFactory(){
}
public static DaoFactory getInstance(){
return instance;
}
public <T> T getDao(Class<T> interfaceClass){
String name=interfaceClass.getSimpleName();//获取类的名字,之后在properties中获取相应的Dao
String daoname=pro.getProperty(name);
try {
return (T) Class.forName(daoname).newInstance();
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
}
配置文件:
UpfileDao=com.du.dao.impl.UpfileDaoImpl