NC 数据库操作
一、后台数据库操作方法(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 该接口主要支持前台的查询操作
有了这两个接口,就省去了写后台接口的步骤,但是具体的操作还是要视情况而定。
NC 数据库操作的更多相关文章
- python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作
django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- MySQL 系列(二) 你不知道的数据库操作
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...
- ABP创建数据库操作步骤
1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- django数据库操作和中间件
数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- phpcms v9 中的数据库操作函数
1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') 返回 ...
随机推荐
- 虚拟机Ubuntu18.04——gcc版本的升降
致读者:这是本人第一篇博客,小试牛刀,希望能在以后的道路中分享出更多实用的技巧和知识,大家一起进步. 操作环境: VMware Workstation 14Pro .64位Ubuntu18.04系统 ...
- 如何清空css 的默认边距
在网页开发中,html的元素,有部分元素默认是有内外边距的,例如body 元素,是有默认边距的 所以在通常情况下,我们都要先清空元素的内外边距:使用通配符选择器* 清空元素的内边距和外边距 ;; } ...
- React16的interactiveUpdates
交互式更新是用户交互的结果. 它们比默认的非交互式更新(如服务器事件)具有更高的优先级. 异步模式下交互式更新的特殊之处在于,一次交互式更新可能会影响后续行为. 例如,一个表单字段上的"提交 ...
- MongoDB主从复制和副本集
MongoDB有主从复制和副本集两种主从复制模式,主从复制最大的问题就是无法自动故障转移,MongoDB副本集解决了主从模式无法自动故障转义的特点,因此是复制的首选.对于简单的主从复制无法自动故障转移 ...
- UE4C++定义属性修饰符总结
1.BlueprintAssignable 暴露该属性来在蓝图中进行赋值,用于绑定多播委托 2.BlueprintCallable 用于从蓝图中调用C++原生函数 3.BlueprintReadO ...
- JAVA企业级服务器应用之Tomcat
Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而 ...
- bootstrap日期选择
<input type="text" class="form-control datepicker" style="padding: 0.375 ...
- Commons Daemon procrun stdout initialized
参考 https://blog.csdn.net/qq_19865749/article/details/69664979 jvm路径错误
- 20175314 《Java程序设计》第七周学习总结
20175314 <Java程序设计>第七周学习总结 教材学习内容总结 第八章:常用实用类 String()类代表字符串:Java 程序中的所有字符串字面值(如 "abc&quo ...
- composer的安装以及具体使用
1. 简介 Composer 是 PHP5.3以上 的一个依赖管理工具.它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们.Composer 不是一个包管理器.是的,它涉及 "pa ...