import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
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 org.apache.commons.dbutils.handlers.ScalarHandler;
import com.xxxx.utils.JDBCUtils;
@SuppressWarnings("unchecked")
public class BaseDao {
public Object[] getParam(List<Object> param) {
Object[] params = new Object[param.size()];
for(int i = 0;i < param.size();i++){
params[i] = param.get(i);
}
return params;
}
public List<Object> getList(Class type, String sql) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
List<Object> list = new ArrayList<>();
try {
list = qr.query(sql, new BeanListHandler(type));
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public List<Object> getList(Class type, String sql, Object[] param) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
List<Object> list = new ArrayList<>();
try {
list = qr.query(sql, new BeanListHandler(type), param);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public List<Object> getList(Class type, String sql, List<Object> param) {
return getList(type, sql, getParam(param));
}
public List<Object> getList(Connection conn, Class type, String sql) {
QueryRunner qr = new QueryRunner();
List<Object> list = new ArrayList<>();
try {
list = qr.query(conn, sql, new BeanListHandler(type));
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public List<Object> getList(Connection conn, Class type, String sql, Object[] param) {
QueryRunner qr = new QueryRunner();
List<Object> list = new ArrayList<>();
try {
list = qr.query(conn, sql, new BeanListHandler(type), param);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public List<Object> getList(Connection conn, Class type, String sql, List<Object> param) {
return getList(conn, type, sql, getParam(param));
}
public Object getObject(Class type, String sql, Object[] param) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
Object obj = new ArrayList<>();
try {
obj = qr.query(sql, new BeanHandler(type), param);
} catch (SQLException e) {
e.printStackTrace();
}
return obj;
}
public Object getObject(Connection conn, Class type, String sql, Object[] param) {
QueryRunner qr = new QueryRunner();
Object obj = new ArrayList<>();
try {
obj = qr.query(conn, sql, new BeanHandler(type), param);
} catch (SQLException e) {
e.printStackTrace();
}
return obj;
}
public Long count(String sql) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
Long count = 0L;
try {
count = qr.query(sql, new ScalarHandler());
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}
public Long count(String sql, Object[] param) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
Long count = 0L;
try {
count = qr.query(sql, new ScalarHandler(), param);
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}
public Long count(String sql, List<Object> param) {
return count(sql, getParam(param));
}
public int update(String sql, Object[] param) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
int row = 0;
try {
row = qr.update(sql, param);
} catch (SQLException e) {
e.printStackTrace();
}
return row;
}
public int update(String sql, List<Object> param) {
return update(sql, getParam(param));
}
public int update(Connection conn, String sql, Object[] param){
QueryRunner qr = new QueryRunner();
int row = 0;
try {
row = qr.update(conn, sql, param);
} catch (SQLException e) {
e.printStackTrace();
}
return row;
}
public int update(Connection conn,String sql, List<Object> param) {
return update(conn,sql, getParam(param));
}
public Object[][] getParam(String[] ids) {
Object[][] params = new Object[ids.length][];
for (int i = 0; i < params.length; i++) {
params[i] = new Object[]{ids[i]};
}
return params;
}
public int upBatch(String sql, Object[][] param) {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
int result = 0;
try {
result = qr.batch(sql, param).length;
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public int upBatch(Connection conn, String sql, Object[][] param){
QueryRunner qr = new QueryRunner();
int result = 0;
try {
result = qr.batch(conn, sql, param).length;
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
}