一.数据库或SQL相关
1.无效的列类型
- 1111很大可能是字段类型对不上,看实体类,xml,和数据库,采用字段二分排除法排查,还有可能是参数为空
- mybatis.configuration.jdbc-type-for-null = NULL
而当参数不为 NULL 时,Mybatis 会针对参数自身的类型调用 PreparedStatement 上不同的方法,此时 JdbcType 则是可以省略的。再看 JDBC 中PreparedStatement 的 setNull 方法就不难明白,JDBC 要求我们设置 NULL 参数时必须指定 JDBC 类型,Mybatis 只是照章办事而已
2.无效的字符可能是空格或者插入语句末尾的分号导致
3.@所有人 mysql 5.6的版本在 分页和排序上有bug,如果使用了order by 条件在值相同的情况下,分页的数据可能存在重复。这是mysql 5.6 使用了堆排序造成的,堆排序不是稳定的排序。亲测5.7没有这个问题。大家可以去t12817_campaign_data_new.my 这张表中尝试一下。(SELECT * FROM t12817_campaign_data_new.my order by item desc limit 0,1;)如果有使用排序加分页的逻辑,请各位检查
二.JAVA相关
1.@Transactional方法无效
- .spring事物@Transactional作用在非public权限上的方法无效
-
@Transactional 加于private方法, 无效 @Transactional 加于未加入接口的public方法, 再通过普通接口方法调用, 无效 @Transactional 加于接口方法, 无论下面调用的是private或public方法, 都有效 @Transactional 加于接口方法后, 被本类普通接口方法直接调用, 无效 @Transactional 加于接口方法后, 被本类普通接口方法通过接口调用, 有效 @Transactional 加于接口方法后, 被它类的接口方法调用, 有效 @Transactional 加于接口方法后, 被它类的私有方法调用后, 有效 总结: Transactional是否生效, 仅取决于是否加载于接口方法, 并且是否通过接口方法调用(而不是本类调用)
- try-catch包裹且并未抛出异常不会回滚
三.rabbitMQ
- SimpleMessageConverter only supports String, byte[] and Serializable payloads, received:com.example.springBoot.pojo.User 问题 把需要传输的对象实现序列化接口就好了