Properties、Mybatis 动态传入表名 字段名、ajax下载文件、merge into、oracle存储过程

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

猜你喜欢

转载自blog.csdn.net/yzx15855401351/article/details/86540338