Java开发笔记

个人笔记:

(第一份工作笔记2022.03.20~2022.07.05)
(注:你可以不记得注解,函数怎么拼写什么的,但必须记得有这么个东西。)
(为了方便看到笔记一部分截断的朋友更快在本篇查找到需要的知识,可根据每条知识点尾部的时间进行快速查询)


  • 如果使用@RequestMapping注解出现模板解析的报错,那就在这个方法上再加一个@ResponseBody注解。
  • MybatisSQL语句SELECT绝对不用*,用到哪些数据,就写哪些
  • MybatlsSQL需要拼接字段,可以用CONCAT()函数拼接
  • if语句判断数据是否为空,除了判断是否(== NULL),还得多加一个&&是否(== " ")," "String类型的
  • 后端捕获" ",用if("".equals()){},需要捕获的数据放equals()的括号里面
  • 模糊查询写成这样,省时省力
<if test="data != null && data != ''">
	AND (plate_num like Concat('%',#{data},'%')
	OR owner_name like Concat('%',#{data},'%')
	OR phone_like Concat('%',#{data},'%')
	OR full_name like Concat('%',#{data},'%'))
</if>
  • 前端想达到如下效果,要么使用CONCAT()函数,要么就到前端做字段拼接。跳转链接前端字段拼接
    在这里插入图片描述
  • 数据库数据,可以SELECT,可以INTER,谨慎UPDATE,绝不轻易DELETE
  • 绝不轻易接老板产品提的需求,要考虑自己能力范围之内,能不能做
  • EL表达式经常忘记,状态 01时间格式的写法
th:text="${status==0?'线上':'线下'}"
th:text="${#dates.format(creatTime, 'yyyy-MM-dd HH:mm')}"
  • IO流导出,前端不能用AJAX传值,因为AJAX无法接受后台的文件流
  • Map集合中添加List集合,创建Map对象的时候要将其放在for循环里面,不然会出现数据覆盖,只会存入List集合最后一组数据的问题
String[] s ={"1","2","3","9"};
List list = new ArrayList<Map<String, Object>>();
for (int i = 0; i <s.length ; i++) {
	//将new的map集合放在for循环里面
    Map map = new HashMap<String, Object>();
    map.put("值",s[i]);
    list.add(map);
}
  • Mybatisif标签无法识别“0”(2022/05/19)
OGNL解释
如果对象是布尔型,则提取并返回其值;
如果对象是一个数字,则将其双精度浮点值与零进行比较;非零被视为真,零被视为假;
如果对象是一个字符,当且仅当其字符值为非零时,其布尔值为真;
否则,当且仅当它是非null的时候,它的布尔值为true。
<!--解决办法-->
<!--多加一个条件“or ifChildren == 0”-->
<if test="ifChildren != null and ifChildren != '' or ifChildren == 0">
     AND bp.if_children = #{ifChildren}
</if>
  • Java后端代码,能用SQL解决的,绝不多加一条多余逻辑判断逻辑判断多了,影响代码运行速度。(2022/05/21)
<!--  SQL解释  -->
<!--  查询条件uuid不为空的时候用uuid查询  -->
<!--  查询条件uuid为空的时候用fullId查询  -->
<select id="getFeeBinByUUid" resultType="com.lt.manager.model.HouseFeeBindENT">
        select * from m_house_fee_bind where
        <if test="uuid != null and uuid != ''">
            uuid=#{uuid}
        </if>
        <if test="uuid == null and fullId != null and fullId != ''">
            full_id=#{fullId}
        </if>
</select>
  • 毕业刚进入职场,难免会碰上数据类型没见过的。例:Java.math.BigDecimal,而BigDecimal用的最多的无非就是加减乘除大小比较。链接:BigDecimal(没见过的不会用多去百度就好了,记得有这么个东西就好)(2022/05/21)
  • HTML5中的a标签,今天用来打开新页面,主要就是再target属性上做文章就好了。(2022/05/25)
代号含义
_Blank打开新的标签页
_Self自身窗口
_Parent产生该页面的父级页面
_Top产生该页面的祖级页面
  • JavaScriptinput框赋值。(2022/05/26)
//需引入jquery.js
<input type="text" id="gateId"/>

$("#gateId").val("此处输入需要的值")
<input type="text" id="gateId"/>

var gateId= document.getElementById("gateId");
gateId.value = "此处输入需要的值";
  • 有放就有取,JavaScriptinput框值。(2022/05/26)
<input id="name" name="name" type="text" value="我是一个值!!!"/>
<script type="text/javascript">
	function test() {
		// 方法一
		var name = document.getElementById("name").value;
		alert(name);
		
		// 方法二
		name = form1.name.value;
		alert(name);
		
		// 方法三 jquery
		name = $("#name").val();
		alert(name);
		
		// 方法四 jquery
		name =  $("input[id='name']").val();
		alert(name);
		
		// 方法五 jquery
		name = $("#name").attr("value");
		alert(name);
		
		// 方法六 jquery
		name = $("input[id='name']").attr("value");
		alert(name);
	}
</script>
  • AJAX传值,前端的写法。(2022/05/26)
//url:请求接口
//type:请求方式
//data:前端携带的数据
//success:请求响应结果
//success://data:请求完毕返回的数据,数据可以data.name用于alert()方法弹窗等等。
//如果后端返回的是:return JsonResult.ok(200,"操作成功!");
//前端可以这样写:success: function (data) {
//                  if (data.code == 200) {
//                      alert(data.msg);
//                  }else if (data.code == 400){
//                      alert(data.msg);
//                  }
//              }
<script type="text/javascript">
	$.ajax({
		url:"getVideo",
		type:"post",
		data:{gateId:gateId,name:'王晓五'},
		success: function (data) {
		    alert("返回数据:"+data);
		}
	});
</script>
  • 常见的排序算法,后续补充链接。(2022/05/26)
  • 插入排序直接插入排序 希尔排序
  • 选择排序选择排序 堆排序
  • 交换排序冒泡排序 快速排序
  • 归并排序归并排序
  • 今天睡午觉,老板找我帮忙写查询重复数据的SQL语句。(2022/05/28)
--这条语句大概意思就是,查询“m_house_fee ”里面同时满足重复“full_id”“fee_id”的数据,
--进行优先“full_id”次之“fee_id ”分类排序。
SELECT * FROM 
m_house_fee 
WHERE (full_id,fee_id) 
IN
(SELECT 
full_id,fee_id 
FROM m_house_fee 
GROUP BY full_id,fee_id 
HAVING count(full_id)> 1 
AND 
count(fee_id)> 1);
  • 今天碰上个前端用length获取对象长度的问题,明明就5组数据,但长度达到293,最后发现后端传过来的数据不是JSON格式,所以直接length获取对象长度其实是一整条字符串长度。转JSON的方法,如下纪录一下:(2022/05/30)
//集合对象
List<GateInfoENT> gateInfo = gateCommandService.modelVideo();
//转JSON方法
String listex = JSON.toJSONString(gateInfo);
  • 在做前端开发的时候,为了出现设置宽度的时候,在自己电脑上刚刚好,而别人在自己电脑上因为屏幕大小的问题而在他人那边显示不友好,宽度用min-width来进行设置往往能达到动态宽度的效果。
    min-width 属性它可以阻止 width 属性的应用值小于 min-width 的值。min-width 的值会同时覆盖 max-widthwidth。(2022/06/08)
优先级
min-width> max-widthwidth
  • 昨天老板叫我为我接下来的工作报事报修模块到数据库加一条自定义函数。???,到现在为止我才知道有这玩意的存在。(2022/06/09)
mysql自定义函数优点
增强sql语句功能和灵活性
实现较快的执行速度
较少网络流量
  • 今天为了优化一些前端的东西,用上了 HTML5的div展开与收缩功能。(2022/06/25)
  • 今天把EasyExcel的基本用给总结出来了,主要包含单表导出多工作表导出工作表多table导出。(2022/07/02)
  • 今天看到如下一段插入排序代码:
public void insertSort(int [] a){
        int len=a.length;//单独把数组长度拿出来,提高效率
        int insertNum;//要插入的数
        for(int i=1;i<len;i++){//因为第一次不用,所以从1开始
            insertNum=a[i];
            int j=i-1;//序列元素个数
            while(j>=0&&a[j]>insertNum){//从后往前循环,将大于insertNum的数向后移动
                a[j+1]=a[j];//元素向后移动
                j--;
            }
            a[j+1]=insertNum;//找到位置,插入当前元素
        }
    }

int len=a.length;//单独把数组长度拿出来,提高效率
length是个获取长度的属性,如果是放在for循环中,每次循环都要去运行一次length,而如果把数组长获取单独拿出来的话,整个程序只需运行一次,从而能大大提高运行效率。(2022/07/02)

  • 持续更新中!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五光十色的_團

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值