学校教的很多知识在工作中几乎用不到,或者说在工作中就是另外一种情况,所以在此讲一些入职一个月左右学到的一些知识。
数据库
首先是设计表时,一定要注意主键id,要能让后来的开发者一下就反应出这个主键id属于这个表,命名方式比如“表名缩写_id”这样,一定不要只写一个id放在主键,这样对于后续的开发会带来很大的麻烦(被公司的这样历史遗留问题坑过)。
然后是我们的查询,这个查询不管是用公司自己封装的连接池,还是用开源的mybatis等,不论是否需要你自己写sql语句,你都要能理出真实的sql语句,这样才能对于查询的结果有足够的预测,不然的话,像hibernate以及thinkphp自带的那些函数拼接的,你都不知道真正组合出的sql是什么,也就无法预测查询结果,对于修改和优化查询会造成麻烦。
在公司的实际项目中,查询必不可少的就是连接,先说内连接,这是只查出有数据的情况,不会出现查出被连接的表的值为空的现象,而左右连接就不同,这个是一定要让主表的内容都查出来,如果从表中不能完全匹配主表的查询,那么从表不存在对应记录的部分会被记为空值。
最后说一下查询中踩过的大坑,就是IF(),IFNULL(),CAST(),SUM()这些函数的使用时,一定要加AS来覆盖查询结果的名字,不然查询的结果会以你的函数为名,就是IF(……)这样,如果你用一个类去接受而不是Map类型,就会出现转换失败的情况。
数据接口的部分
新学到的接口的开发并非是像springboot那样,一个接口一个url,而是所有接口公用一个url,而接口的参数为(包名.类名.方法名 ,待处理的参数),这里是自己封装了一个IOC的操作进行处理,当接口被调用时,通过反射将第一个参数的IOC实例化对象找出,再第二个参数根据方法的参数类型,从json字符串转化为对应的实例化对象,传到方法进行处理,处理完成后再返回。