实习java总结一

文章目录

  • 1:更新Maven的setting.xml文件
  • 2:Lombok的@Data等注解无效
  • 3:Commons之Commons-io,IOUtils.read(reader);这个方法
  • 4:@Autowire和@Resource注解的区别
  • 4:GitLab Projcet 添加webhook
  • 5:内网穿透https://natapp.cn/
  • 6:用 Druid 解析 sql 语句(insert)获得字段和值和表名
  • 7:Idea小技巧 之 折叠代码块(默认折叠所有ctrl+shift+'-',展开所有ctrl+'+')
  • 8:Java String转对象
  • 9:com.alibaba.fastjson.JSONObject、JSONArray与String之间的转换demo
  • 10:初次使用GitLab搭建项目,目前只会先gitlab创建一个项目然后git下来导入idea,这样就可以pull,commit,push了。
  • 11:MultipartFile转InputStreamReader BufferedReader
  • 12: java中与mySQL数据库中longtext类型对应的类型
  • 13:Mybatis查询语句返回的对象中部分字段为null(空)
  • 14 java中Date日期类型的大小比较
  • 15 Java运行时出现的错误:java.lang.IndexOutOfBoundsException: Index: 0, Size: 0的原因
  • 16找出list中某种逻辑然后除去这条list数据
  • 17 IDEA中依赖报错Error:java: Annotation processing is not supported for module cycles...
  • 18 postman 传 Map 参数
  • 19获取、排序、比较两个Map中相同key对应value值
  • 20:idea Please specify commit message
  • 21 :java中字符串操作
  • 22:idea光标突然变粗解决方案
  • 23:StringUtils.startsWith 和StringUtils.endsWith和StringUtils.equals
  • 24遍历set的三种方式
  • 25 判断map中是否存在某个key
  • 26 Java删除List和Set集合中元素
  • 27 Duplicate entry for key 'PRIMARY'
  • 28java报错nested exception is:org.apache.ibatis.exceptions.TooManyResultsException: Expected one result
  • 29使用FastJSON 对Map/JSON/String 进行互转
  • 30BeanUtils.populate的用法 BeanUtils.copyProperties(复制对象属性方法)
  • 31IDEA 快捷键 例如:返回上一步、下一步:Ctrl+Alt+左箭头 Ctrl+Alt+右箭头
  • 32 删除本地分支和删除远程分支
  • 33IDEA Push master to origin/master was rejected by remote
  • 34 map如果put的key相同,value不同,就会插入最后一条value的值,而不是第一条。set也是一样。
  • 35 mybatis的mapper如果传来两个参数一个是String,一个int,xml里面的parameterType
  • 36 需要比较3个不同泛型的map,找到最大的赋值给一个map

1:更新Maven的setting.xml文件

因为在项目中用maven构建项目的时候,有时候需要更换这个文件才可以下载相应的依赖。
  1. 实习java总结一_第1张图片
    实习java总结一_第2张图片

2:Lombok的@Data等注解无效

重新装一遍插件,虽然破,pom文件写了依赖,但是没编译,编译器不知道这些方法,所以要安装这个插件
实习java总结一_第3张图片

3:Commons之Commons-io,IOUtils.read(reader);这个方法

通过读取前端传来的值,放BufferedReader里,通过IOUtils,读取处理成字符串处理。

  public JsonBean getHook(HttpServletRequest request, HttpServletResponse response) throws Exception{
		BufferedReader reader= new BufferedReader(new InputStreamReader(request.getInputStream()));
        String body = IOUtils.read(reader);

4:@Autowire和@Resource注解的区别

@Autowire和@Resource都是Spring支持的注解方式动态装配bean。
作用范围在字段上,均无需在写setter方法
实习java总结一_第4张图片

4:GitLab Projcet 添加webhook

这个操作可以监听当你的项目有push或者mergerequest等事件发生的时候,可以向你设定的一个接口发送请求,传相应的信息,然后这个接口可以获取到这个信息,做下一步操作。比如同步变更,两个项目,别人项目中搭建了webhook,当有push操作,发送请求到你的接口,你的项目中也要做相应变更,比如数据库信息同步,就是通过这个信息去调用gitlabAPI获取别人push的sql文件然后同步到自己项目中。
就是项目设置里面搭建,然后你测试本地接口的时候可能要搭建内网穿透,相当于把本地项目放到外网跑起来了,这样你设置的那个hook才可以跳转到把你的接口上去。
这是数据请求的模拟数据

5:内网穿透https://natapp.cn/

	这个网站就是免费搭建的内网穿透,教程就不出了,网站有很简单,我第一次接触6min就搞定了。、

6:用 Druid 解析 sql 语句(insert)获得字段和值和表名

>
    >com.alibaba>
    >druid>
    >1.0.19>
>
   //从sql中读取字段和值
   private static void getClounmValue(String sql,List<String> columns,List<String> values) {
      MySqlStatementParser parser = new MySqlStatementParser(sql);
      SQLStatement sqlStatement = parser.parseStatement();
      MySqlInsertStatement insertStatement = (MySqlInsertStatement) sqlStatement;

      //获取列的名称,这里用了一个方法将我们的sqlExpr对象转化为String
      List<SQLExpr> columnExprs = insertStatement.getColumns();
      columns.addAll(sqlExpr2String(columnExprs));

      //获取插入的值 这里用了一个方法将我们的sqlExpr对象转化为String
      List<SQLInsertStatement.ValuesClause> valuesClauseList = insertStatement.getValuesList();
      List<SQLExpr> valueSqlexpr = valuesClauseList.get(0).getValues();
      values.addAll( sqlExpr2String(valueSqlexpr));
   }
//sqlexpr转String
   public static List<String> sqlExpr2String(List<SQLExpr> columnExprs){
         StringBuffer sb = new StringBuffer();
         List<String> list = new ArrayList<String>();
         for(SQLExpr expr:columnExprs){
             expr.output(sb);
             list.add(sb.toString());
             sb.delete(0,sb.length());
         }
         return list;
      }

7:Idea小技巧 之 折叠代码块(默认折叠所有ctrl+shift+’-’,展开所有ctrl+’+’)

8:Java String转对象

<!-- maven json解析工具 -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.62</version>
</dependency>

JSONObject json = JSONObject.parseObject(val);

9:com.alibaba.fastjson.JSONObject、JSONArray与String之间的转换demo

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
public class JsonDemo {

    public static void main(String[] args) {

        //1.json字符串转换为对象
        String jsonString="{'name':'42313123','id':'2345','age':12}";
        JSONObject jsonObject = JSONObject.parseObject(jsonString);
        String id = jsonObject.getString("id");
        System.out.println(id);


        //2. JSONObject转化成自定义类对象
        PeoplePo peoplePo1 = JSONObject.parseObject(jsonString, PeoplePo.class);
        System.out.println(peoplePo1);

        //3. JSONObject转化成Map集合
        Map map = JSONObject.parseObject(jsonString, Map.class);
        System.out.println(map);

        //4. 自定义对象转化成json格式的字符串
        PeoplePo peoplePo = new PeoplePo();
        peoplePo.setId("1");
        peoplePo.setAge(11);
        peoplePo.setName("LH");
        String peopleJson = JSON.toJSONString(peoplePo);
        System.out.println(peopleJson);

        //5. String类型转化成JSONObject;
        String str = "{\"result\":\"success\",\"message\":\"成功!\"}";
        JSONObject jsonObject1 = JSONObject.parseObject(str);
        System.out.println(jsonObject1);

        //6. JSONObject转化成JSONArray的两种方式
        String str1 = "{\"result\":\"success\",\"message\":\"成功!\",\"data\":[{\"name\":\"Tom\",\"age\":\"20\"}]}";
        JSONObject jsonToArray = JSONObject.parseObject(str1);
        //方式一
        JSONArray data = jsonToArray.getJSONArray("data");
        System.out.println(data);
        //方式二
        JSONArray jsonArray = JSONArray.parseArray(jsonToArray.getString("data"));
        System.out.println(jsonArray);

        //7. jsonArray转化成JSONObject并取出其中的元素数据
        JSONObject o = (JSONObject) jsonArray.get(0);
        String name = o.getString("name");
        System.out.println(o);
        System.out.println(name);
        System.out.println(jsonArray.toString());
    }
}

10:初次使用GitLab搭建项目,目前只会先gitlab创建一个项目然后git下来导入idea,这样就可以pull,commit,push了。

11:MultipartFile转InputStreamReader BufferedReader

文件上传后需要读取文件;但是又不想在硬盘存取文件。

    public static BufferedReader multipartFileToBufferedReader(MultipartFile picFile, String charsetName) {
        // 判断是否为空
        if (picFile.isEmpty()) {
            return null;
        }
        try {
            InputStream inputStream = picFile.getInputStream();
            InputStreamReader is = new InputStreamReader(inputStream, charsetName);
            BufferedReader br = new BufferedReader(is);
//            String s = "";
//            while ((s = br.readLine()) != null) {
//                //转成流文件后,就可以自己处理了
//                log.info("s="+s);
//            }
            return br;
       } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return null;
    }

12: java中与mySQL数据库中longtext类型对应的类型

在java中写了对应的type为TextArea,结果就出类型不匹配的错了,后来改成String,好了

13:Mybatis查询语句返回的对象中部分字段为null(空)

在xml文件中不使用resultType(问题很多),而是使用resultMap

    >
        >
        >
        >
        >
        >
        >
        >
    >