杰信个项目第六天
来源:互联网 发布:怎样更改淘宝pid 编辑:程序博客网 时间:2024/05/16 00:28
MYSQL对日期类型直接支持like。Oracleto_cahr() SqlServer cast() ,convert() 将日期类型先转换为字符串,然后在进行截取。
2、异构数据库
同一套程序同时支持多个类型的数据库。HQL不能消除不同数据库厂商的个性应用。大多数据库厂商都是基于SQL92、SQL99标准。
SQL常见差异:
Oracle
SqlServer
MySql
取记录数
rownum
top
limit
日期
to_char、to_date
cast、convert
之间当日期类型为字符串
字符串拼接
||
+
concat
个性函数
MYSQL中拼接字符串
SELECT CONCAT(sys_code_id,'-',NAME) FROMsys_code_b
3、异构数据库实现原理
1)设置一个全局变量,database=MYSQL5
2)在程序中,加if语句
If(database==”MYSQL5”){
sql = “select * from contract_c limit 100”
}else(database==”SQLSERVER2000”){
sql= “select top 100 * from contract_c”
}
最终能实现,程序直接修改数据库配置即可立即切换数据库。
4、怎样快速的实现,关键在于选择循环对象。
合同、货物、厂家、附件,在这里挑选一个循环次数最少,获取到数据最快的一个对象。
大数据测试。在日常记录少的情况下,程序员会忽略程序的性能问题。
利用已有数据,进行多次循环
Excel2003 2007
列:255 16384
行:65535 1048576
6、月统计,在企业中相当的典型。
例如:基层供电局每个月,每个季度,每年都要上报人事报表。
在职职工表,在职的职工数,离职的,退休,死亡
基层供电所上报到分局,分局汇总上报市局,市局汇总上报到省局,省局汇总上报到国网。
国家财政拨款,发工资。
年、季度、月、周、日统计。
对程序而言就是一个where条件的改变。
8、购销合同打印业务
打印API
1) 日期类型转中文日期格式
UtilFuns.formatDateTimeCN(UtilFuns.dateTimeFormat(contract.getSigningDate()))
2) 图片如何插入
POI插入图片时,给定起始单元格位置和结束单元格位置,它自动平铺。会带来图像失真。事先调整好单元格范围,高度和宽度。图片会压线,要设置一定的偏移量。
HSSFPatriarch patriarch =sheet.createDrawingPatriarch(); //addpicture
poiUtil.setPicture(wb, patriarch,rootPath+"make/xlsprint/logo.jpg", curRow, 2, curRow+4, 2);
3) 插入分页符,在何处插入,插入时怎么避免打印一个空白页
if(p>0){
sheet.setRowBreak(curRow++); //在第startRow行设置分页符
}
4) 插入一个线
poiUtil.setLine(wb, patriarch, curRow, 2,curRow, 8); //draw line
5) 给金额类型加前缀,
HSSFDataFormatformat = wb.createDataFormat();
returnformat.getFormat("\"¥\"#,###,##0.00"); //设置格式
#代表一位数值,如果数值不存在,不显示
0代表一位数值,如果数值不存在用0代替。
6) 公式,乘法、合计
nCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
nCell.setCellFormula("F"+String.valueOf(curRow)+"*H"+String.valueOf(curRow));
nCell.setCellFormula("SUM(I"+String.valueOf(curRow-4)+":I"+String.valueOf(curRow-1)+")");
7) 合并单元格
合同单元格后,除第一个单元格会根据设定的样式生效。后续单元格没有边框线。
当前POI3.0支持2003,打印到2013或者WPS,会显示不全。
POI升级版本不兼容。合并单元格,画线
region = new Region(curRow-1, (short)(1),curRow-1, (short)3); //纵向合并单元格
sheet.addMergedRegion(region);
写数据是操作合并前的第一个单元格
8) 指定输出到单元格的内容类型为数值
nCell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
9) 审单人,等量空格替换
utilFuns.fixSpaceStr(contract.getCheckBy(),26)
业务逻辑控制
10) 同一个厂家的货物才能打印的同一页纸上。
11) 厂家跟着货物,循环货物才能得到对应的厂家,然后怎么写到现在的位置。
12) 厂家信息只用第一个货物的信息
13) 重要程度,循环拼接星星。
14) *将数据和业务分离。
9、读程过程
思路:
数据和业务分离,将每页的数据缓存起来,打印时,只需循环页数,获取每一页的数据,直接输出。
目的:写代码时,关注点少,将更多精力投入到一个地方。减少代码的复杂度。
实现:
怎样缓存数据?
字符串数组String[] ,不同页一款的两款的字段数不同。突然有一天,客户说你给我增加一个字段。
ArrayLIst,动态数组,遍历数据时,通过序号进行遍历。加字段,会影响后续顺序。访问时,只能按序号,调用时,不能明确知道调用的谁。
MAP,key+value。
每页数据缓存到一个MAP集合中,将一个页的MAP放在一个ArrayList中。
- 杰信个项目第六天
- 宅急送项目第六天笔记!
- 实战项目商城(第六天)
- 宅急送 项目第六天 定区管理
- 第六周项目一
- 第六周 项目一
- 第六周项目1
- 第六周项目二。
- 第六周项目四
- 第六周项目一
- 第六周项目六
- 第六周项目3
- 第六周项目二
- 第六周项目三
- 第六周项目三
- 第六周项目1
- 第六周项目6
- 第六周 项目二
- SSH常用配置+web.xml配置
- 杰信项目第二天之poi-导出工作表+小细节
- 杰信项目第三天知识点(工作表模板+动态生成目录+动态生成重名文件+购销合同增删改查)
- 杰信项目第四天(购销合同,货物信息,附件信息三表联查)
- 杰信项目第五天(合同复制+合同查看+出货表)
- 杰信个项目第六天
- 丑数(数论)
- HTML在线编辑器之xhEditor
- Web 通信 之 长连接、长轮询
- rsync 交互过程
- 【vim】ubuntu12.04的vim的详细配置(更改Vim配置文件打造C/C++风格)
- 多线程处理大数据(4)
- 牛人题目(位运算二)
- 驾考那点事