BaseDao:
package cn.zsp.dao.impl;
import cn.zsp.utils.JdbcUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
public abstract class BaseDao {
/*
这个地方主要是写一些基础的增删改操作让子类继承
*/
private QueryRunner runner=new QueryRunner();
/**
* 增删改通用方法
* @param sql
* @param args
* @return
*/
public int update(String sql,Object ...args)
{
Connection conn = null;
try {
conn = JdbcUtils.getConnection();
return runner.update(conn,sql,args);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
finally {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return -1;
}
/**
* 查询一个返回一个对象的方法,如果存在返回的不是null,不存在放回null
* @param type
* @param sql
* @param args
* @param <T>
* @return 如果存在返回的不是null,不存在放回null
*/
public <T>T queryForOne(Class<T> type,String sql,Object ...args){
Connection conn = null;
try {
conn = JdbcUtils.getConnection();
return runner.query(conn,sql,new BeanHandler<T>(type),args);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
finally {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return null;
}
/**
* 返回多个查询对象,返回的是集合形式
* @param type
* @param sql
* @param args
* @param <T>
* @return
*/
public <T>List<T> queryForList(Class<T> type, String sql, Object ...args)
{
Connection conn = null;
try {
conn = JdbcUtils.getConnection();
return runner.query(conn,sql,new BeanListHandler<T>(type),args);
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return null;
}
/**
* 返回一个单个的值
* @param sql
* @param args
* @return
*/
public Object queryForSingleValue(String sql,Object ...args){
Connection conn = null;
try {
conn = JdbcUtils.getConnection();
runner.query(conn,sql,new ScalarHandler(),args);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
finally {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return null;
}
}
功能接口
package cn.zsp.dao;
import cn.zsp.pojo.User;
public interface UserDao {
/**
* 根据用户名查询用户
* @param username
* @return
*/
public User queryUsername(String username);
/**
* 返回null说明用户不存在,密码错误
* @param username
* @param password
* @return
*/
public User queryUsernameAndPassword(String username,String password);
/**
* 返回-1说明保存失败
* @param user
* @return
*/
public int saveUser(User user);
}
功能实现:
package cn.zsp.dao.impl;
import cn.zsp.dao.UserDao;
import cn.zsp.pojo.User;
public class UserDaoImpl extends BaseDao implements UserDao {
@Override
public User queryUsername(String username) {
String sql ="select * from t_user where username=?";
return queryForOne(User.class, sql, username);
}
@Override
public User queryUsernameAndPassword(String username, String password) {
String sql ="select * from t_user where username=? and password=?";
return queryForOne(User.class, sql, username,password);
}
@Override
public int saveUser(User user) {
String sql ="insert into t_user (username,password,email)values" +
"(?,?,?)";
return update(sql,user.getUsername(),
user.getPassword(),
user.getEmail());
}
}