在使用CustomDataset维护部门表的时候,曾经使用到了DeptDao对象,该对象是本例中我们对Dao使用方式的一种简化包装。
本文中CustomDataset开发时涉及到一些其他的Java对象,列表如下:
相关的类列表 |
|---|
hr.Constants |
hr.manage.dao.RowConverter |
hr.manage.dao.SqlExecutor |
hr.manage.dao.BaseDao |
hr.manage.dao.DeptDao |
hr.manage.dao.BranchDao |
详细代码如下:
Constants.java |
package hr;
/**
* 常量
*/
public class Constants {
// 数据源
public static final String DATA_SOURCE = "doradosample";
}
RowConverter.java |
package hr.manage.dao;
import java.sql.SQLException;
import com.bstek.dorado.utils.variant.VariantSet;
/**
* 用来将VariantSet转换成domain的接口
*/
public interface RowConverter {
public Object convert(VariantSet vs) throws SQLException;
}
SqlExecutor.java |
package hr.manage.dao;
import hr.util.DoradoUtils;
import com.bstek.dorado.data.ParameterSet;
import com.bstek.dorado.data.db.DBStatement;
/**
* 封装创建DBStatement,给statement的参数赋值和关闭DBStatement操作 具体是查询还是更新操作由子类实线
*
* @param <K>
*/
public abstract class SqlExecutor {
/**
* 公共操作(获取Statement和关闭之)
*
* @param sql
* @return
* @throws Exception
*/
public Object execute(String sql) throws Exception {
DBStatement stmt = DoradoUtils.getStatement(sql);
try {
ParameterSet p = stmt.parameters();
return extract(stmt, p);
} finally {
stmt.close();
}
}
/**
* 子类需要实现的CURD操作
*
* @param stmt
* @param p
* @return
* @throws Exception
*/
public abstract Object extract(DBStatement stmt, ParameterSet p)
throws Exception;
}
BaseDao.java |
package hr.manage.dao;
import hr.Constants;
import java.util.ArrayList;
import java.util.List;
import com.bstek.dorado.data.db.DBStatement;
import com.bstek.dorado.utils.variant.VariantSet;
/**
* Dao基类 定义一些基本的操作,如取得Dorado的DBStatement以及CRUD操作
*/
public abstract class BaseDao implements RowConverter {
protected DBStatement getStatement() {
DBStatement stmt = new DBStatement();
stmt.setDataSource(Constants.DATA_SOURCE);
return stmt;
}
protected DBStatement getStatement(String sql) {
DBStatement stmt = getStatement();
stmt.setSql(sql);
return stmt;
}
protected DBStatement getStatement(String type, String tableName) {
DBStatement stmt = getStatement();
stmt.setSql(type, tableName);
return stmt;
}
protected DBStatement getStatement(String type, String tableName,
String keyFields) {
DBStatement stmt = getStatement();
stmt.setSql(type, tableName, keyFields);
return stmt;
}
protected Object query(DBStatement stmt) throws Exception {
VariantSet vs = stmt.query();
return vs == null ? null : this.convert(vs);
}
protected List queryForList(DBStatement stmt) throws Exception {
List result = new ArrayList();
List list = stmt.queryForList();
for (int i = 0; i < list.size(); i++) {
VariantSet entity = (VariantSet) list.get(info);
result.add(this.convert(entity));
}
return result;
}
protected List queryForIntList(DBStatement stmt, String fieldName)
throws Exception {
List result = new ArrayList();
List list = stmt.queryForList();
for (int i = 0; i < list.size(); i++) {
VariantSet entity = (VariantSet) list.get(info);
result.add(new Integer(entity.getInt(fieldName)));
}
return result;
}
}
DeptDao.java |
package hr.manage.dao;
import hr.manage.domain.Dept;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.bstek.dorado.data.ParameterSet;
import com.bstek.dorado.data.db.DBStatement;
import com.bstek.dorado.utils.StringHelper;
import com.bstek.dorado.utils.variant.VariantSet;
/**
* 部门CURD操作
*/
public class DeptDao extends BaseDao {
public Object convert(VariantSet vs) throws SQLException {
Dept dept = new Dept();
dept.setDeptId(vs.getString("dept_id"));
dept.setBranchId(vs.getString("branch_id"));
dept.setDeptName(vs.getString("dept_name"));
return dept;
}
/**
* 取得所有的dept列表
*
* @return
* @throws Exception
*/
public List getAll() throws Exception {
String sql = "select * from dept";
return (List) new SqlExecutor() {
public Object extract(DBStatement stmt, ParameterSet p)
throws Exception {
return queryForList(stmt);
}
}.execute(sql);
}
/**
* 取得所有的dept列表
*
* @return
* @throws Exception
*/
public List getAll(ParameterSet parameters) throws Exception {
String deptId = parameters.getString("deptId");
String branchId = parameters.getString("branchId");
String deptName = parameters.getString("deptName");
DBStatement stmt = this.getStatement(DBStatement.SELECT, "dept");
ParameterSet p = stmt.parameters();
if (StringHelper.isNotEmpty(deptId)) {
p.setString("dept_id", deptId);
}
if (StringHelper.isNotEmpty(branchId)) {
p.setString("branch_id", branchId);
}
if (StringHelper.isNotEmpty(deptName)) {
p.setString("dept_name", deptName);
}
List result = new ArrayList();
List list = stmt.queryForList();
for (int i = 0; i < list.size(); i++) {
VariantSet entity = (VariantSet) list.get(info);
result.add(this.convert(entity));
}
return result;
}
/**
* 修改部门信息
*
* @param dept
*/
public void update(Dept dept) {
// @todo
}
/**
* 删除部门信息
*
* @param dept
*/
public void remove(Dept dept) {
// @todo
}
/**
* 新增部门信息
*
* @param dept
*/
public void save(Dept dept) {
// @todo
}
}
BranchDao.java |
package hr.manage.dao;
import hr.manage.domain.Branch;
import java.sql.SQLException;
import java.util.List;
import com.bstek.dorado.data.ParameterSet;
import com.bstek.dorado.data.db.DBStatement;
import com.bstek.dorado.utils.variant.VariantSet;
/**
* 部门CURD操作
*/
public class BranchDao extends BaseDao {
public Object convert(VariantSet vs) throws SQLException {
Branch branch = new Branch();
branch.setBranchId(vs.getString("branch_id"));
branch.setBranchName(vs.getString("branch_name"));
return branch;
}
/**
* 取得所有的user列表
*
* @return
* @throws Exception
*/
public List getAll() throws Exception {
String sql = "select * from branch";
return (List) new SqlExecutor() {
public Object extract(DBStatement stmt, ParameterSet p)
throws Exception {
return queryForList(stmt);
}
}.execute(sql);
}
}
EmployeeDao.java |
package hr.manage.dao;
import hr.manage.domain.Dept;
import hr.manage.domain.Employee;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.bstek.dorado.data.ParameterSet;
import com.bstek.dorado.data.db.DBStatement;
import com.bstek.dorado.utils.StringHelper;
import com.bstek.dorado.utils.variant.VariantSet;
/**
* 员工CURD操作
*/
public class EmployeeDao extends BaseDao {
public Object convert(VariantSet vs) throws SQLException {
Employee employee = new Employee();
employee.setEmployeeId(vs.getString("employee_id"));
employee.setEmployeeName(vs.getString("employee_id"));
employee.setSex(vs.getBoolean("sex"));
employee.setBirthday(vs.getDate("birthday"));
employee.setMarried(vs.getBoolean("married"));
employee.setSalary(vs.getFloat("salary"));
employee.setDegree(vs.getString("degree"));
employee.setEmail(vs.getString("email"));
employee.setWeb(vs.getString("web"));
employee.setCmnt(vs.getString("cmnt"));
return employee;
}
/**
* 取得所有的employee列表
*
* @return
* @throws Exception
*/
public List getAll() throws Exception {
String sql = "select * from employee";
return (List) new SqlExecutor() {
public Object extract(DBStatement stmt, ParameterSet p)
throws Exception {
return queryForList(stmt);
}
}.execute(sql);
}
/**
* 取得所有的employee列表
*
* @return
* @throws Exception
*/
public List getAll(ParameterSet parameters) throws Exception {
String deptId = parameters.getString("deptId");
List result = new ArrayList();
DBStatement stmt = this.getStatement(DBStatement.SELECT, "employee");
try {
ParameterSet p = stmt.parameters();
if (StringHelper.isNotEmpty(deptId)) {
p.setString("dept_id", deptId);
}
List list = stmt.queryForList();
for (int i = 0; i < list.size(); i++) {
VariantSet entity = (VariantSet) list.get(info);
result.add(this.convert(entity));
}
} finally {
stmt.close();
}
return result;
}
/**
* 修改员工信息
*
* @param dept
*/
public void update(Employee employee) {
// @todo
}
/**
* 删除员工信息
*
* @param dept
*/
public void remove(Employee employee) {
// @todo
}
/**
* 新增员工信息
*
* @param dept
*/
public void save(Employee employee) {
// @todo
}
}
(完)