最近工作的小结
索引 和 主键
insert into , insert ignore into, replace into
mybatis 注意 selective (xxxExampleSelective 和 xxxExamaple的区别)
批量增删改查
数据库操作需要优化,(可以用内存操作来代替频繁的操作数据库)
例如: user, userGroup , user_userGroup_relation 三张表
1 主键 id 到对象 Object 的映射
2 userGroup_id 到 List < User > 的映射
3 user_id 到 List < UserGroup > 的映射
宁可一次性查询大量数据(操作数据可一次,事实上,数据量在一个量级比较高的时候,数据库没有索引的时候,查询才会很慢,否则记录多,一次查询还是很快的,对比多次操作数据库,每次查询一点数据出来)
- NPE(空指针错误)
这个错误最常见了,所以使用对象,或 集合的时候一定要确保其不是 null (事先可以判断)
其次 集合 isEmpty() 方法也要是注意点, 比如 1 Mybatis In语句 就要求 List不能null , 不能为空,; 2 for语句这种 可以为empty 但不能为null
1 测试代码, 这个一定要有的,自己的方法自己测试,测试代码也考查能力,良好的测试代码编写能力 也是很重要的。 特别是有些表类似的数据库操作,复制粘贴多了,会麻木,所以多测测。
2 异常处理, 这是个大问题,抛异常, dao层,service层,controller怎么弄,异常类怎么封装。
3 表关联逻辑操作, 要封装这个业务逻辑。 删除是否是添加的逆过程? (这个也是犯错点)
4 事务的处理,要不要回滚,这个也是设计的考虑点;比如 批量插入,中间出错了两个,其它的插入成功,这个批量操作是否需要回滚。