项目拾遗

@SuppressWarnings

  • 该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。
  • 如果不想看到代码中的警告,可以在类或方法上注释@SuppressWarnings,就不会看到该警告
  • @SuppressWarnings(“unused”) 未使用的变量
  • @SuppressWarnings("rawtypes") 是说传参时也要传递带泛型的参数
  • @SuppressWarnings(“unchecked”) 未检查的转化,如集合没有指定类型
  • @SuppressWarnings(“unused”) 未使用的变量

public/protected/private

  • public:对所有人开放
  • protected:朋友(同一个package下)和子女可以访问
  • private:只有自己能访问

static

  • 在程序中,任何变量或者代码都是在程序编译时由其中分配的内存来存储的,所谓静态就是指在编译后分配的内存会一直存在,直到程序退出才会释放这个空间
  • 目的:让用户不用实例化对象就可以引用其成员
class MM () {
    static int a = 1;
    int b = 2;
}
//访问a
MM.a;
//访问b
MM mm = new MM();
mm.b;

TODO注释用法

  • 类似于书签,记下待办的工作
  • 找出TODO的快捷键:Ctrl + K

Assert.notNull(Object)

  • 校验对象是否为空,若为空,则回滚,例如:Assert.notNull(User)
public static void notNull(Object object) {
    notNull(object, "[Assertion failed] - this argument is required; it must not be null");
}

工作流异步消息

  • 问题描述:task监听事件@Event(types = {ActivitiEventType.TASK_CREATED})中,任务还没有完全完成(committing),但是消息已经发出去了,系统会报错
  • 解决方案:在监听事件中在放个监听器,用于监听事件committed,再将发送消息代码放入监听器中,代码如下:
 // 防止异步任务执行引起的空指针错误,这里加个监听器,任务完成后再执行下面代码
Context.getCommandContext().getTransactionContext()
    .addTransactionListener(TransactionState.COMMITTED, new TransactionListener() {

    @Override
    public void execute(CommandContext commandContext) {
        //发送异步消息
        messageBus.send(Message.Builder.with("workflowTask", messageTask).build());
    }
}

final

  • final为关键字,表示这个变量赋予的值是不可改变的,即是个常量

FastJson

  • 速度快,功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)
// 把JSON文本parse为JSONObject或者JSONArray 
public static final Object parse(String text); 

// 把JSON文本parse成JSONObject    
*public static final JSONObject parseObject(String text); 

// 把JSON文本parse为JavaBean 
*public static final  T parseObject(String text, Class clazz); 

// 把JSON文本parse成JSONArray 
*public static final JSONArray parseArray(String text); 

//把JSON文本parse成JavaBean集合 
*public static final  List parseArray(String text, Class clazz); 

// 将JavaBean序列化为JSON文本 
*public static final String toJSONString(Object object); 

// 将JavaBean序列化为带格式的JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); 

// 将JavaBean转换为JSONObject或者JSONArray。
public static final Object toJSON(Object javaObject);

SQL迭代

  • 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
<select id="foreachTest" resultType="User">  
    select * from t_user where id in  
    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">  
        #{item}  
    </foreach>  
</select> 
  • 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
<select id="foreach2Test" resultType="Blog">  
    select * from t_blog where id in  
    <foreach collection="array" index="index" item="item" open="(" separator="," close=")">  
        #{item}  
    </foreach>  
</select>
  • 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了.当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key
<select id="foreach3Test" resultType="Blog">  
    select * from t_blog where title like "%"#{title}"%" and id in  
    <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">  
        #{item}  
    </foreach>  
</select>
  • 例1:批量删除
<delete id="deleteByIds">
    DELETE FROM km_node
    WHERE ID in
        <foreach item="id" collection="ids" open="(" separator="," close=")">
            #{id}
        </foreach>
</delete>
  • 例2:插入附件
<insert id="insertAttachment">
    INSERT INTO KM_ATTACHMENT (FILE_ID,KNOWLEDGE_ID ) 
        <foreach item="fileIds" collection="array" index="index" separator="union all" > 
            SELECT #{fileIds,jdbcType=INTEGER},MAX(ID)FROM km_node
        </foreach>
</insert>

SmartAs传参

  • UI层(参数为infoDate)
@GET
@Path(value = "/getLandIncrease/{infoDate}")
@Operation(code = Operation.READ, desc = Operation.READ_DESC)
public double getLandIncrease (@PathParam("infoDate") String infoDate) {
    ...
}
  • JSX文件(参数为year)
Resource.get("services/nrms/decision/land/getLandInctease/{0}".format(year),(land)=>{
    ...
});

删除日期2016-11-29后面的时间00:00:00

{
    title: '上传日期',
    dataIndex: 'editDate',
    render: function (value) {
        if (value != null) {
            return value.split(" ")[0];
        }
    }
}
  • split函数是分割字符串数组,split(” “)是以空格“ ”为分割点,将2016-08-29
    00:00:00分割成两个字符串,[0]是取第一个,即2016-08-29

字符串处理:substring_index和concat

  • 例子:str = www.google.com
    • substring_index(str,’.’,1) 结果是:www
    • substring_index(str,’.’,2) 结果是:www.google
    • 也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容
        相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容
    • 如:substring_index(str,’.’,-2) 结果为:google.com
    • 有人会为,如果我呀中间的的google怎么办?从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:
        substring_index(substring_index(str,’.’,-2),‘.’,1);
substring_index(str,delim,count)
  // str:要处理的字符串
  // delim:分隔符
  // count:计数
  • concat是连接几个字符串,可以多个哦
concat('wo','ai','ni')
//结果是woaini

Class和Class

Repository

  • 该注解用于将数据访问层(Dao层)的类标注为Spring Bean
  • 为什么 @Repository 只能标注在 DAO 类上呢?这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。

service异步执行顺序

transSelect: function transSelect(value) {
    Resource.get("services/security/user/list",(users) => {
        语句1;
    }
        语句2;
},
  • 先执行service,再执行语句2,最后执行语句1

ftl文件中加js服务代码

<script>
    (function($){
        //主要是下面这行代码
        var Resource = Smart.Resource;
        var intervalTime = 300000;
        Resource.get("services/record/Alarm/getIntervalTimeByDictKey/{0}".format("AlarmCount"),function(data) {
            if(data.length > 0) {
            intervalTime = data[0].dictval;
        }
        var timeId = setInterval(check,intervalTime);
    });
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值