一、list方法汇总
1.创建集合对象
此时我们创建的是ArrayList对象,而ArrayList是java已经写好的一个类
这个类在底层做了一些处理
打印对象不是地址值,而是集合中存储数据内容
在展示的时候会拿[]把所有的数据进行包裹
ArrayList list = new ArrayList<>();
2.方法
1.list.add(“增加元素”)
2.list.remove(“删除元素”)
3.list.remove(索引)
4.list.set(索引,”修改元素”)
5.list.get(索引)
6.for(int i = 0; i < list.size(); i++){
list.get(i);
}遍历
3.创建学生对象不能写在循环的外面
二、map方法汇总
1.map.put(“键”,”值”);
2.map.remove(“键”);
3.map.clear();
4.map.containsKey(“键”);
5.map.containValue(“值”);
6.map.isEmpty();
7.map.size();
三、NC开发常用方法汇总
1.前端使用数据库查询语句要用到的方法
private IUAPQueryBS service;
private IUAPQueryBS getService() {
if (service == null) {
service = NCLocator.getInstance().lookup(IUAPQueryBS.class);
}
return service;
2.后端使用数据库查询语句要用到的方法
private BaseDAO dao;
private BaseDAO getDao() {
if(dao == null) {
dao = new BaseDAO();
}
return dao;
}
3.编辑前后事件经常用到的方法
NullValueUtils.getNullStringValue()空字符型数据处理,null返回UFDouble.ZERO_DBL
NullValueUtils.getNullUFdoubleValue()空运算型数据处理,null返回””
getKey()获取当前编辑字段
getValue()获取当前编辑字段的值
getBillCardPanel().getBillModel("页签编码").getRowCount()获取表体总行数
getBillCardPanel().getBillTable().getSelectedRow()获取表体当前编辑行
getBillCardPanel().getHeadItem("字段名").getValueObject()获取表头字段的值
getBillCardPanel().getBillModel().getValueAt(row, "字段名")获取表体字段的值
getBillCardPanel().setHeadItem("字段名","值")给表头字段赋值
getBillCardPanel().setBodyValueAt("值",row, "字段名")给表体字段赋值
UFDouble型数据.compareTo(UFDouble.ZERO_DBL)==0判断UFDouble型数据是否为0
AggXxxVO aggvo = getSelectedAggVo()获取选中aggvo
aggvo.getParentVO()通过aggvo获取表头
XxxBVO[] bvos = (XxxBVO[]) aggvo.getChildren(XxxBVO.class)通过aggvo获取表体
4.接收sql查询后的对象
一列多行ColumnListProcessor 返回值: List
一列一行 ColumnProcessor Object
一行多列 ArrayProcessor Object[]
多行多列 ArrayListProcessor List<Object[]>
表头Vo接收beanProcessor 对象
表体Vo接收beanListprocessor List<对象>
5.删除数据时接收传过来json字符串的方法
JSONObject jsonObject = JSONObject.parseObject(jsonInfo);
String dataType = jsonObject.getString("datatype");
6.根据主键数组查询aggvo(只能在private下使用)
BillQuery<AggLoanfkVo> billQuery = new BillQuery< AggLoanfkVo>( AggLoanfkVo.class);
AggLoanfkVO[] loanfkvos = billQuery.query(list.toArray(new String[0]));
四、问题汇总
1.查询出现未知的错误:查询模板有问题
2.审批出现未知的错误:单据类型管理和单据转换规则有问题
3.自定义参照中,如果数据库查询有关联表的语句,关联表的字段要用as重命名(参照数据库字段名数组,参照数据库表或者视图名中重命名的地方要一致),不然前台会显示不出来
4.做完一张单子先试试增删该查好不好使,再做其他的功能
5.元数据生成的java源代码不一定可靠,一定要自己检查一边看有没有错,不然后面会有一堆问题
6.用友nc65开发中在删除时报错:
实体[xxx]没有实现制定的业务接口:nc.itf.uap.pf.metadata.IHeadBodyQueryItf
解决方案:
insert into md_bizitfmap
(bizinterfaceid,
bizitfimpclassname,
classattrid,
classattrpath,
classid,
dr,
industry,
intattrid,
ts,
versiontype)
values
('5205ef20-5eae-4c75-bad8-16639152e622',
null,
null,
null,
'f8402ac6-042a-4734-b254-4b76efd3fba6',
null,
null,
'5205ef20-5eae-4c75-bad8-16639152e622',
'2018-05-16 11:39:09',
null);
上面语句中,classid对应值换成报错的实体id,执行完一定要点提交才能生效,提交后重启服务。
7.下面两句话,如果调试出错,检查一边,如果没有错,就重启一下试试。
YhlypxytlxVO headvo=(YhlypxytlxVO) getService().executeQuery(sql, new BeanProcessor(YhlypxytlxVO.class));
List<YhlypxhtfkBVO> executeQuery = (List<YhlypxhtfkBVO>) getService().executeQuery(strsql, new BeanListProcessor(YhlypxhtfkBVO.class));
8.实体(vo)表名为md_class,classID名称为id
select * from md_class where id = ‘91aad9c9-be18-4e2a-89de-988390371d1e’
9.单据类型表名为bd_billtype,主键名称为pk_billtypecode
select * from bd_billtype where pk_billtypecode = ‘YH04’ order by ts desc
五、断点调试汇总
1.导包时,对应的包名一定要导对
2.操作后不进入断点,断点可以进入一个方法,断点不可以进入另一个方法,很有可能是能进入的那个方法里面处了问题,以至于后面的断点进不去,所以可以调试一下可以进入的那个方法,看看里面到底哪里处了问题。
例如sumnum = sumnum.add(bvos[i].getNnum())这句话,这句话断点调试时有错误,对bvos[i].getNnum()采用快捷键ctrl+shift+i,发现它里面的值是空,在这个值前面加上NullValueUtils.getNullUFdoubleValue空处理方法,把这句话变为
sumnum = sumnum.add(NullValueUtils.getNullUFdoubleValue(bvos[i].getNnum()));
这个问题就解决了。(因为这句话是写在for循环里,当进入循环体时,就可以调试看到bvos[i].getNnum()的值)
3.断点调试时,箭头指向的那一行就可以看到里面变量的值,而不是等到走到下一行后才能看上一行变量的值(例如问题2中的情况)
4.调试时的看到的空和0不一样,0不可以和空进行相加,否者会报错,解决方法就是在空前面加上NullValueUtils空处理方法