1,bootstrapTable
2,leetcode
3,ACM
一,Java Properties类
1,从目标路径test.properites(文件)中获取输入流对象
2,使用Properties类的load()方法从字节输入流中获取数据
3,使用Properties类的getProperty(String key)方法,获取value
public class Test {
public static void main(String[] args) {
Properties prop = new Properties();
InputStream in = Test.class.getClassLoader().getResourceAsStream(
"test.properties");
prop.load(in);
//获取name的值
String name=prop.getProperty("name");
}
}
2,Java注释@interface的用法
3,java代码中传递的整数0在mybatis中被识别成null
<where>
<if test="status != null ">
and status=#{status,jdbcType=INTEGER}
</if>
</where>
4,Mybatis 动态传入表名 字段名
#{}将传入的参数当成一个字符串,会给传入的参数加一个双引号
#{}被解析为一个参数占位符?
${}将传入的参数直接显示生成在sql中,不会添加引号
#{}能够很大程度上防止sql注入,${}无法防止sql注入
<delete id="delete" parameterType="java.util.List" statementType="PREPARED" >
<foreach collection="list" item="item" index="index" separator=";">
delete from ${item.tablename} where 1=1 and ${item.column_name} = #{item.columnvalue}
</foreach>
</delete>
Map<String,Object> sqlmap=new HashMap<String, Object>();
sqlmap.put("tablename", tablename);
sqlmap.put("column_name", column_name);
sqlmap.put("columnvalue", columnvalue);
5,ajax下载文件到本地
方法一:
<form id="queryForm">
</form>
//改变表单的提交地址为下载的地址
$("#queryForm").attr("action",contextPath+"/downCourses.do");
$("#queryForm").submit();//提交表单
方法二:
window.location.href=contextPath+"/downText.do"
方法三
jQuery.fileDownload.js 插件实现Ajax下载文件,可以接受回调函数
6,A标签的常用点击事件
<a href="javascript:void(0);" onclick="method()" />
<a href="javascript:;" onclick="method()" />
<a href="#" onclick="method();return false;" />
7,一个表复制信息到另一个表
INSERT INTO table2 SELECT * FROM table1;
INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1;
8,merge into
merge into 一般用于增量插入数据,如果是全量数据插入目标表常规认为insert into 比merge into 效率更高。
MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
UPDATE table_name
SET col1 = col_val1,
col2 = col_val2
WHEN NOT MATCHED THEN
INSERT (a,b) VALUES(a,b);
9,oracle存储过程
FISP_GENERATE_TASK_A3012
create or replace PROCEDURE FISP_GENERATE_TASK_A3012(
I_STARTDATE IN VARCHAR2, --开始日期
I_ENDDATE IN VARCHAR2, --结束日期
O_ERRCODE OUT INTEGER,
O_ERRMSG OUT VARCHAR2)
is
BEGIN
FISP_GENERATE_TASK(I_STARTDATE,I_ENDDATE,'A3012');
END;
FISP_GENERATE_TASK
create or replace PROCEDURE FISP_GENERATE_TASK(
I_STARTDATE IN VARCHAR2, --开始日期
I_ENDDATE IN VARCHAR2,
INTERFACE_CODE IN VARCHAR2)
AS
CURSOR iconf_cursor
IS
SELECT * FROM fisp_interface_conf WHERE VC_INTERFACE_CODE=INTERFACE_CODE;--目标接口
BEGIN
STARTDATE :=to_date(i_startdate, 'yyyy-mm-dd');
--FOR v_sor IN (SELECT * FROM fisp_interface_conf WHERE VC_INTERFACE_CODE=INTERFACE_CODE)
FOR v_sor IN iconf_cursor
LOOP
IF( TASK_BUSINESS_TIME IS NOT NULL ) THEN
--获取任务ID
SELECT f_id INTO task_id FROM fisp_task
WHERE F_INTERFACE_ID =v_sor.F_ID;
END IF;
END LOOP;
END;
10,mybatis调用存储过程
<select id="executeProcedureByTaskId" parameterType="java.util.Map" statementType="CALLABLE">
{call ${procedureName}(#{taskId,mode=IN})}
</select>
mode=IN 输入参数 mode=OUT输出参数 jdbcType为数据库定义的字段类型。
11,数据库
oracle 存储过程中,查一个同义词出现表或视图不存在
需要(授权):grant select on 同义词 to user(授权用户);
常用函数
NVL(E1, E2)的功能为:如果E1为NULL,则函数返回E2,否则返回E1本身。
NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。
decode(字段或字段的运算,值1,值2,值3)
当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3。
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
追加字段值
update table t set t.name = t.name || ',10' where t.id='1'
SELECT *FROM party WHERE leader IS NULL;
SELECT *FROM party WHERE leader IS NOT NULL;
12,了解国密SM2、SM3、SM4