一、后台數據庫操作方法(private端):
1.以下為后台查詢方法
BaseDAO dao = new BaseDAO();//只能在private端使用
String querySql="select * from demo_quotation where dr = 0";//完整正確的sql語句
Object result1 = dao.executeQuery("select vbillcode from demo_quotation where pk_salequotation='某個主鍵'", new ColumnProcessor());//查詢語句只能返回一行一列結果
List<Object[]> result2 = (List<Object[]>) dao.executeQuery(querySql, new ArrayListProcessor());//查詢語句可以返回多行多列
//for(Object[] obj : result2){ obj[0]...obj[n]}
Map<String, Object> result3 = (Map<String, Object>) dao.executeQuery("select * from demo_quotation where pk_salequotation='某個主鍵'", new MapProcessor());//查詢語句只返回一行結果
List<Map<String,String>> result4 = (List<Map<String, String>>) dao.executeQuery(querySql, new MapListProcessor());//查詢語句可以返回多行結果
//for(Map<String,String> map : result4){map.get("字段名")}
QuotationHVO result5 = (QuotationHVO) dao.executeQuery("select * from
demo_quotation where pk_salequotation='某個主鍵'", new BeanProcessor(QuotationHVO.class));//查詢語句只返回一個VO
List<QuotationHVO> result6 = (List<QuotationHVO>) dao.executeQuery(querySql,new BeanListProcessor(QuotationHVO.class));//查詢語句返回多個VO
Set<String> result =
(Set<String>) dao.executeQuery(sql, new BaseProcessor() {
private static final long serialVersionUID = 1L;
@Override
public Object processResultSet(ResultSet rs) throws SQLException {
Set<String> result = new HashSet<String>();
String cproductid = null;
while (rs.next()) {
cproductid = rs.getString("cproductid");
result.add(cproductid);
}
return result;
}
});
return result;
}
2.以下為新增更新刪除方法(手寫sql)
dao.executeUpdate("sql");
二、前台數據庫操作方法(client端):
IUAPQueryBS bs = NCLocator.getInstance().lookup(IUAPQueryBS.class);
bs.executeQuery(sql, processor);//processor跟第一點的basedao用法一致
三、
//后台通過主表主鍵查詢aggvo
BillQuery<AggPromoPolicyVO> query = new BillQuery<>(AggPromoPolicyVO.class);
query .query(keys);
//前台通過主表主鍵查詢aggvo
HYPubBO_Client.queryBillVOByPrimaryKey(class, hids)
//或者前后台都能用
IBillQueryService billQuery = NCLocator.getInstance().lookup(IBillQueryService.class);
以下例子可以防SQL注入(前后台都有個SQLParameter 參數能使用)
StringBuilder sql = new StringBuilder();
sql.append("select * from esoc_dispatchrecgoods ")
.append(" where dispatchnoteid=?").append(" and dr=?");
SQLParameter param = new SQLParameter();
param.addParam(pk_dispatchnoteid);
param.addParam(0);
List<DispatchRecGoodsVO> drgvoList = (List<DispatchRecGoodsVO>) dao
.executeQuery(sql.toString(), param, new BeanListProcessor(
DispatchRecGoodsVO.class))
前台提供兩個主要接口進行CURD操作:
IVOPersistence 該接口只支持前台增刪改操作
IUAPQueryBS 該接口主要支持前台的查詢操作
有了這兩個接口,就省去了寫后台接口的步驟,但是具體的操作還是要視情況而定。