记录近期工作笔记

1.关于jackson序列化报错的问题:

错误信息类似:No serializer found for class com.topideal.supplychain.ocp.ymatou.converter.A and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

大意是没有找到序列化程序。

网上说的都是在配置文件如下设置(另一种新建new ObjectMapper()设置属性)或者换用fastJson

spring.jackson.serialization.FAIL_ON_EMPTY_BEANS
这种解决方法的前提是你要给你的实体类的私有属性getter方法(setter不需要) ,如果你的属性是共有的(public),不需要这一波。另,需要保证类有默认构造函数

如果还有上述错误,可以使用网上说法解决。

哈哈,这里只是强调要有getter方法。因为现在使用inner builder插件生成内部构造器,可能会忘记写。

2.java8 将对象根据某一属性分组

将对象根据某一属性分组,属性相同的对象,放在一个列表

假设 现有一组Student的列表List<Student> studentList,根据age对name分组

之前写法,studentList.stream().collect().(Collectors.toMap(Student::getAge,Student::getName));

发现后面的name把之前的覆盖了,age与name是一对一。

现想age与name是一对多

studentList.stream().collect().(Collectors.toMap(Student::getAge,student -> Lists.newArrayList(student),

(List<String> newList,List<String> oldList ) -> {oldList.addAll(newList);

return oldList;

}));
3.mybatis insert 语句

mybatis插入语句一般都是这样写
<!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中 -->
<insert id="insert" parameterType="xxx.xxx.xxx.xxx" keyProperty="id" useGeneratedKeys="true">,
useGeneratedKeys 取值范围true|false 默认值是:false。 含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。
之前一直以为useGeneratedKeys="true"是让mysql数据库主键新增,其实是,插入语句后将id赋值给实体bean,即使用insert后,使用bean.getId()可以获得值,若是false,bean.getId()=null。不管true还是false,数据库插入的数据,都会自动生成主键(前提是设置自动增长主键)。

4.mysql默认排序方式

myisam引擎表,在没有任何删除,修改操作下,执行select不带order by,那么会按照插入顺序进行排序;

innodb引擎表,在相同情况下,会根据主键来排序,从小到大。

5.关于Mybatis中foreach标签插入顺序问题(批量插入)

使用foreach标签批量插入数据,插入顺序并不是顺序插入(可能顺序、倒序、无序)。若要确保数据顺序[查询时排序方式跟数据插入顺序一样],可在顺序数据加入rank字段解决问题,或者使用单插入语句确保。

6.Mybatis 传单参时,xml中的sql语句的参数可以随便写,不用跟方法上的对应。原因是,mybatis的variable parameters are [0,1,param1,param2](多参),可使用@param注解确定,单参时,mybatis不做特殊处理,#{参数名}即可取出值,参数名随意取。

7.模板方法A与策略模式B

模板方法模式:定义一个算法流程,一些特定的实现延迟到子类

策略模式:使不同算法可以被相互替换--取决于场景。【必须知道所有策略,需指定场景即使用哪个策略】

8.项目依赖问题

idea,一个项目A依赖另一个项目B,只需在A中加入B的module,即可溯源B的源代码(A中依赖B的版本需与导入的B版本一样)。【mvn clear/install 先B后A】

9.easyui框架,使用dialog加载html页面,写在头部的js不会执行,可以放在body里,或设置延时时间setInterval.

dialog 弹窗数据错乱(多级弹窗),解决方案:打开dialog的div标签都写在最外层页面(父页)。

10.idea关于tomcat部署

a.在tomcat启动项目配置的Deployment下选择的Artifact,要选择explorded结尾的(不选这个,下面选不了);

b.然后在Server的On “update” action选择 update classes and resources

c.若要修改url,需同时修改Deployment中Application context,保持一致。

11.idea若有Bean的属性类型"pMsg",生成的getter/setter,为getpMsg/setpMsg,p为小写,若强制改为大写,则从页面post传值(json),后台@RequestBody接收,此时接收不到该属性的值

posted on 2019-12-18 15:42  CarlCN  阅读(201)  评论(0编辑  收藏  举报