开发的一些总结
- 格式:doc
- 大小:120.00 KB
- 文档页数:12
结构:entity枚举类型 enums页面显示Java实体配置@Controller@RequestMapping("order/basic/ordInteInfo")controllerreturn commonConfig.getFrkPrefixPath() + VIEW_ROOT + "list";数据库表字段封装成实体直接调用@Entity@Table(name=OrdInteInfo.TABLE_NAME, schema=OrdInteInfo.TABLE_SCHEMA)//name@Table(name=数据库名, schema=数据库用户)public static final String TABLE_NAME = "T_ORD_FLOWNODEINFO";public static final String TABLE_SCHEMA = "ORD";配置FTL@RequestMapping(value = "/list")@Function(value = Operators.QUERY)//value = Operators.QUERY EDIT SAVE VIEW DELETE CREATE UPDATE IMPORT EXPORT DOWNLOAD表示进行的操作//返回路径去FTLservice/serviceImpl服务层调用dao层方法dao/daoImpl与service/serviceImpl类似ftl页面显示数据FTL表达式和文本的区别:${..}只能用于文本部分,< # > 用于表达式处理NULL${editObject.nodeName?if_exists}默认值设置${editObject.sid?c}if else 的运用举例:<#if user.age lt 12>${}还是一个小孩<#elseif user.age lt 18>${}快成年<#else>${}已经成年</#if>集合的一些语法:1、查询清单JSON数据传输{"colModel": [{"code": "CTime", //字段名"name": "创建时间", //字段描述"textAlign": 'center',"wordCountLimit": 30,"fixedWidth": 150},{"code": "","name": "操作","wordCountLimit": 30,"fixedWidth": 80, //固定宽度"thClassName": 'btnCol', //表格头th的样式"tdClassName": 'btnColTd' //数据行td的样式}],"totalRows": ${amount?c},//总行数"page": ${currentPage?c},//页数"size": ${pageSize?c},//大小//页面循环集合读取数据"data": [<#if (collection ? exists) && (collection ? size >0)><#list collection as bean>[${bean.sid},"${stringTransfer(bean.flowName?default(''))}","${stringTransfer(bean.nodeCode?default(''))}","${stringTransfer(bean.nodeName?default(''))}","${stringTransfer(bean.flowNodeDesc?default(''))}","<#if (bean.ctime?exists)>${bean.ctime?string("yyyy-MM-dd HH:mm:ss")}</#if>","<a href='#' onclick='doModify(${bean.sid}, true);'>查看</a><a href='#' onclick='doModify(${bean.sid}, false);'>修改</a><a href='#' onclick='doDel(${bean.sid});'>删除</a><a href='#'onclick='getNodeInteRela("${bean.nodeCode}",${bean.sid});'>接口配置</a><a href='#'onclick='getFlowNodeRule("${bean.nodeCode}",${bean.sid});'>规则设置</a><a href='#'onclick='getFlowNodeSms("${bean.nodeCode}",${bean.sid});'>短信设置</a><a href='#'onclick='doMove(0,${bean.sid},"确定上移当前节点?");'>上移</a><a href='#'onclick='doMove(1,${bean.sid},"确定下移当前节点?");'>下移</a>"]<#if ((bean_index + 1) < collection?size)>,</#if></#list></#if>]}2、list和map的连接运算这里所说的集合运算符是将两个集合连接成一个新的集合,连接集合的运算符是+,看如下的例子:< #list ["星期一","星期二","星期三"] + ["星期四","星期五","星期六","星期天"] as x> ${x}< /#list>输出结果是:星期一星期二星期三星期四星期五星期六星期天3.5 Map连接运算符Map对象的连接运算符也是将两个Map对象连接成一个新的Map对象,Map对象的连接运算符是+,如果两个Map对象具有相同的key,则右边的值替代左边的值.看如下的例子:< #assign scores = {"语文":86,"数学":78} + {"数学":87,"Java":93}>语文成绩是${scores.语文}数学成绩是${scores.数学}Java成绩是${scores.Java}输出结果是:语文成绩是86数学成绩是87Java成绩是93Oracle1、insert 字段1,字段2 select 字段1,字段2 from插入字段跟查询字段顺序随便2、时间查询语句select * from table where date= to_date('2013-01-27','yyyy-mm-dd')3、删除这些具重复字段的数据记录:delete from tableName a where 字段1,字段2 in(select 字段1,字段2,count(*) from tableName group by 字段1,字段2 having count(*) > 1)4、修改表列名等信息alter table [table_name] rename column [column_name] to [new_column_name] ALTER TABLE SCOTT.TEST RENAME TO TEST1--修改表名ALTER TABLE SCOTT.TEST RENAME COLUMN NAME TO NAME1 --修改表列名ALTER TABLE SCOTT.TEST MODIFY NAME1 NUMBER(20) --修改字段类型ALTER TABLE SCOTT.TEST ADD ADDRESS VARCHAR2(40) --添加表列ALTER TABLE SCOTT.TEST DROP NAME CASCADECONSTRAINTS --删除表列freemarker常见语法大全FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}${?if_exists } //用于判断如果存在,就输出这个值${?default(…xxx‟)}//默认值xxx${!"xxx"}//默认值xxx${book.date?string('yyyy-MM-dd')} //日期格式${book?string.number} 20 //三种不同的数字格式${book?string.currency}--<#-- $20.00 -->${book?string.percent}—<#-- 20% --><#assign foo=ture /> //声明变量,插入布尔值进行显示${foo?string("yes","no")} <#-- yes -->大小比较符号使用需要注意:(xml的原因),可以用于比较数字和日期使用lt、lte、gt和gte来替代<、<=、>和>= 也可以使用括号<#if (x>y)>内置函数: 调用区别于属性的访问,使用?代替.常见的一些内置函数对于字符串html-对字符串进行HTML编码cap_first-使字符串第一个字母大写lower_case-将字符串转换成小写trim-去掉字符串前后的空白字符示例:${“freeMarker”?cap_first}对于Sequences(序列)size-获得序列中元素的数目对于数字int-取得数字的整数部分(如-1.9?int的结果是-1)对于集合,可以使用数组的方式,使用下标索引进行访问逻辑判断:if................<#if condition>...<#elseif condition2>...<#elseif condition3>......<#else>...Boolean类型的空值判断空值判断可以写成<#if ?? > //注意${}为变量的渲染显示,而<>为定义等操作符的定义switch............<#switch value><#case refValue1>...<#break><#case refValue2>...<#break>...<#case refValueN>...<#break><#default>...</#switch>快速定义int区间的集合<#assign l=0..100/> //注意不需要[]3:循环读取集合: 注意/的使用<#list student as stu>${stu}<br/></#list>与jstl循环类似,也可以访问循环的状态item_index:当前变量的索引值item_has_next:是否存在下一个对象其中item名称为as后的变量名,如stu集合长度判断<#if student?size != 0></#if> 判断=的时候,注意只要一个=符号,而不是==宏/模板初步了解: 使用更像一个闭包closure,可以定义后,在脚本中任意地方引用,并原地起作用<#macro greet><font size="+2">Hello Joe!</font></#macro>使用的方式为:<@greet></@greet> //同xml可以简写成<@greet/>宏的参数定义,类似js,在宏名后带参数进行传递定义<#macro greet person color>${person}</#macro>调用带参数时,注意使用类似XML的属性格式进行传递,不需要关心顺序问题<@greet person="Fred" color="black"/>参数默认值定义,如果没有,就必须要求传递完整的参数列表<#macro greet person color="black"><font size="+2" color="${color}">Hello ${person}!</font></#macro>使用xml的嵌套内容进行传递宏调用,关键标签<#nested><#macro border><table border=4 cellspacing=0 cellpadding=4><tr><td><#nested></tr></td></table></#macro>调用时:<@border>The bordered text</@border><#nested> 标签可以在宏中多次调用,也可以将多个宏组合进行嵌套for循环的精简版:<#list 1..count as x></#list>宏的循环变量,配合嵌套标签进行参数传递,<#macro repeat count><#list 1..count as x><#nested x, x/2, x==count> //这里的三个参数,将会传递到嵌套内容中</#list></#macro><@repeat count=4 ; c, halfc, last>${c}. ${halfc}<#if last> Last!</#if> //这里的内容由macro中的<#nested>进行参数的传递,传递的数量任意,当注意需要宏接受这些</@repeat>上述还需要注意;的使用参数的数量是可变的,并不要求全部都有,但是效果不同在模板中定义变量在模板中定义的变量种类型:plain变量:可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign 指令创建和替换。