没有形成体系的知识点

【java8新特性,简化list操作,点赞stream()

1. 分组

Map<String, List<SmsCustomerSendDetail>> collect = details.stream()
.collect(Collectors.groupingBy(SmsCustomerSendDetail::getCustomerId));

2. 单列求和

int totalValue = details.stream().mapToInt(SmsCustomerSendDetail::getSmsFee).sum();

标红的是属性的get方法

3. 提取单列数据集合

List<Integer> ids = details.stream().map(SmsCustomerSendDetail::getId).collect(Collectors.toList());

出自:https://www.jianshu.com/p/c71eaeaaf30c

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【mybatis横表变纵表,两行两列变一行四列】

id    col1     col2                     id   name    name2     name3
----------------------                  0    ax      bx         cx
0      name    ax                       1    dx      ex         fx
0      name2   bx
0      name3   cx
1      name    dx
1      name2   ex
1      name2   fx

出自:http://www.cocoachina.com/cms/wap.php?action=article&id=52340

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【new Gson().toJson(object) null值不进行转换】

在对result进行json转换时,new Gson().toJson(result),遇到null值不进行转换问题,网上搜了下,使用GsonBuilder创建Gson即可解决,代码如下: 

Gson gson = new GsonBuilder() 
.serializeNulls() 
.create(); 

出自:https://www.cnblogs.com/zhengbiyu/p/9019780.html

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【数据库string日期可以直接比较大小】

数据库时间类型存string,string格式可以直接比较大小

 SELECT * FROM tairlist_day WHERE rq>'2010-07-31' AND rq<'2010-09-01'

出自:https://blog.youkuaiyun.com/harryho/article/details/77978424

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【mysql类似商城默认地址的做法,if函数】

update sms_channel set is_acquiesce=if(id=#{id,jdbcType=INTEGER},1,0) where status=#{status,jdbcType=INTEGER}

       

出自:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【mybatie resultType="java.util.Map",paramType=""】

mybatis里面有requestMap和resultType

requestMap其实就是上面引用进来的dao

resultType一般等于resultType="java.util.Map"(包括用List<Map<String,String>>接收都可以做到)

使用resultType就算查询出来的结果集没有对应的对象,也会以map的形式保存,减少dto的创建

paramType,里面传过来的如果是对象,则对象属性可以直接在xml的#{}里面使用,例如:

paramType=“userDTO” userDTO有name属性,则xml中可以直接使用#{name}

出自:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【mysql substring,ifNull】

mysql sql语句中可以使用substring方法

mysql sql语句中IFNULL,如果值为null这默认为0

select a.send_time,IFNULL(a.notice,0) notice,IFNULL(b.marketing,0) marketing,IFNULL(c.custom,0) custom from
(SELECT sum(send_size) as notice,status,substring(send_time,1,10) as send_time FROM sms_sending_record where send_status=1 and status=1 GROUP BY substring(send_time,1,10),status) a
left join
(SELECT sum(send_size) as marketing,status,substring(send_time,1,10) as send_time FROM sms_sending_record where send_status=1 and status=2 GROUP BY substring(send_time,1,10),status) b
on a.send_time=b.send_time
left join
(SELECT sum(send_size) as custom,status,substring(send_time,1,10) as send_time FROM sms_sending_record where send_status=1 and status=3 GROUP BY substring(send_time,1,10),status) c
on b.send_time=c.send_time

出自:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【name like"%"${name}"%"】

这里要用$,因为:

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
  
2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id,  如果传入的值是id,则解析成的sql为order by id.
  
3. #方式能够很大程度防止sql注入。
  
4.$方式无法防止Sql注入。

5.$方式一般用于传入数据库对象,例如传入表名.
  

6.一般能用#的就别用$.

这里有更好的用法,mybatis自己做了相关的方法处理

来自:https://blog.youkuaiyun.com/kobi521/article/details/16941403

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【mybatis if用法】

<if test='fwbdh != null and fwbdh == "BAK"'>
    fwbdh=#{fwbdh}
<if>

 

<if test="fwbdh != null and fwbdh != ''">
	<choose>  
		<when test='fwbdh.indexOf(",") != -1'>  
			AND t.FWBDH  in (${fwbdh}) 
		</when>  
		<otherwise>   
	        	AND t.FWBDH like '%'+#{fwbdh}+'%'  
		</otherwise>  
	</choose> 
</if>

来自:https://blog.youkuaiyun.com/xxlian1201/article/details/52759349/

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【mybatis in用法】

findByIds(@Param("ids")List<Long> ids)
<select id="findByIds" resultMap="BaseResultMap">
         Select
         <include refid="Base_Column_List" />
         from jria where ID in
                  <foreach item="item" index="index" collection="list" 
                         open="(" separator="," close=")">
                        #{item}
                </foreach>
  </select> 

出自:https://blog.youkuaiyun.com/unei66/article/details/17792503

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【js执行,按钮模拟被单击】

$(function(){

    $("#btn").click();

})

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【mybatis <>号不能用的问题】

1、转义字符串

小于号    <    &lt;

大于号    >    &gt;

和    & &amp;

单引号    '    &apos;

双引号    "    &quot;

2、使用<![CDATA[  你的sql语句 ]]>(sql语句中的<where><if>等标签不会被解析)

 如:

 <![CDATA[

        select * from 

      (select t.*, ROWNUM as rowno from tbl_user t where ROWNUM <= #{page.end,jdbcType=DECIMAL}) table_alias

      where table_alias.rowno >#{page.start,jdbcType=DECIMAL}

     ]]>   

来自:https://www.cnblogs.com/zrbfree/p/5270060.html

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【关于mybatis oracle分页问题】

SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (
你的sql语句
) A
WHERE <![CDATA[ ROWNUM <= 20  ]]>
)
WHERE <![CDATA[ RN >= 1 ]]>

来自:找不到了

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【关于调用iframe和iframe调用父窗口的知识点】

 

  1. 格式:$('#父窗口中的元素ID', parent.document).click();  
  2. 实例:$('#btnOk', parent.document).click();  
  3. 子调父

 

  1. $("#iframe的ID").contents().find("#iframe中的控件ID").click();//jquery 方法1  
  2. 实例:$("#ifm").contents().find("#btnOk").click();//jquery 方法1 
  3. 父调子

 

iframe里面调用父的js //parent.findByNeed();

来自:https://www.cnblogs.com/alisonGavin/p/8315634.html

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

123,34,68,101,112,97,114,116,109,101,110,116,34,58,34,-50,-27,-77,-75,-68,-28,34,44,34,79,112,101,114,97,116,105,111,110,32,73,115,108,97,110,100,34,58,34,50,48,34,44,32,34,69,113,117,105,112,109,101,110,116,78,111,34,58,34,103,111,110,103,32,50,48,45,53,34,44,32,34,74,111,98,95,79,114,100,101,114,95,73,110,102,111,34,58,34,57,56,49,53,49,56,55,49,56,48,34,44,32,34,69,68,83,95,84,73,77,69,34,58,50,48,49,57,47,57,47,54,32,49,55,58,48,51,58,52,54,34,44,32,34,100,97,116,97,34,58,91,123,34,73,116,101,109,73,100,34,58,34,-70,-72,-67,-45,-77,-52,-48,-14,-70,-59,34,44,34,72,74,95,68,97,116,97,34,58,34,53,34,125,44,123,34,73,116,101,109,73,100,34,58,34,-70,-72,-75,-29,-61,-5,-77,-
网址:https://www.cnblogs.com/fengwenzhee/p/7239822.html
这种格式的数据叫ASCII码
Java字符串跟ASCII码互转

public static String asciiToString(String value)  
{  
    StringBuffer sbu = new StringBuffer();  
    String[] chars = value.split(",");  
    for (int i = 0; i < chars.length; i++) {  
        sbu.append((char) Integer.parseInt(chars[i]));  
    }  
    return sbu.toString();  
}  
public static String stringToAscii(String value)  
{  
    StringBuffer sbu = new StringBuffer();  
    char[] chars = value.toCharArray();   
    for (int i = 0; i < chars.length; i++) {  
        if(i != chars.length - 1)  
        {  
            sbu.append((int)chars[i]).append(",");  
        }  
        else {  
            sbu.append((int)chars[i]);  
        }  
    }  
    return sbu.toString();  
} 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【关于ajax传值,后台接收乱码等,处理问题】

后台代码:URLDecoder.decode(area_code,"utf-8");

前台传值:encodeURI("sayHello?user.name=" + name)

知识点:1、利用encodeURI()在javascript中对中文URL参数进行编码时,“测试”二字会被转换为“%E6%B5%8B%E8%AF%95”

2、但是浏览器机制会认为“%”是一个转义字符,浏览器会把地址栏URL中的传递的已转换参数“%”与“%”之间的已转义字符进行处理传递到后台

Action中。这样会造成与实际经过encodeURI()编码后的URL不符,因为浏览器误认为“%”是转义字符字符了,它并未将“%”认为是个普通字符。

3、要使得通过encodeURI()转换后的URL被浏览器正常处理,必须在外层再用encodeURI()处理一次已被encodeURI()编码后的RUL。这此处

理encodeURI()会将已编码后的URL中被浏览器解析为转义字符的“%”再次进行编码,转换为普通字符。

4、正常处理后,前面javascript代码中②处代码为:window.location = encodeURI(encodeURI("sayHello?user.name=" + name));

5、处理后的URL不在是通过一次 encodeURI()转换后的字符串”%E6%B5%8B%E8%AF%95“,而是经过上一步两层encodeURI()处理URL处理后的

字符串”%25E6%B255%258B%25E8%AF%2595“,通过再次编码原有被浏览起解析为转义字符的”%“被再次编码,转换成了普通字符转”%25“。

 

URL编码及解码原理:由于我们利用URL传递参数这种方式是依赖与浏览器环境中的,也就是说URL及URL中包含的各个key=value格式的传递参数键

值对参数是在浏览器地址栏中的处理原理处理相应编码后传递至后台进行解码的。由于我们没有进行任何处理,此时javascript请求URL并传参数

存在中文时(也就是说输入框中输入中文时),对URL的中文参数进行编码是按照浏览器机制进行编码的。此时编码存在乱码问题。假设输入框中

输入的内容为“测试”二字,后台Action接受到的参数值为乱码。javascript中利用encodeURI()方法进行编码。

 

来自:https://blog.youkuaiyun.com/z435999799/article/details/75094786

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【js保留两位小数,js千位符四舍五入保留两位小数,js string转各种类型】

1.var num =2.446242342;

num = num.toFixed(2); // 输出结果为 2.45

出自:https://www.jb51.net/article/134067.htm

//千位符,保留两位小数
function toPrice(num) {
    num = num.toFixed(2).toString().split(".");
    num[0] = num[0].replace(new RegExp('(\\d)(?=(\\d{3})+$)','ig'),"$1,");
    return num.join(".");
}

出自:https://blog.youkuaiyun.com/pengpengpeng85/article/details/53195618

3.var s=“123”;

var i=s*1;//只要*1,不吃亏不上当,直接变成数值类型
出自:https://zhidao.baidu.com/question/50644214.html

------------------------------------------------------------------------------------------------------------------------

【mybatis 参数传递】

2. 固定参数的传递方式

    形式如:

     GoodMapper.java:

       public Good selectGood(@param("id")String id,@param("name")String name);

    GoodMapper.xml :

     <select id="selectGood" resultMap="GoodMap">

          select * from good where id = #{id} and name=#{name}

     </select>

   

     注:此种方式对于参数来说就比较直观

出自:https://blog.youkuaiyun.com/auly2017/article/details/73205831

------------------------------------------------------------------------------------------------------------------------

【tomcat3种启动方式对比】

出自:https://blog.youkuaiyun.com/zt1519/article/details/81843713

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值