东方飘雪

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

问题1:无bean时@Autowired 报错。

问题2:Mybatis的bean映射不了

问题3:实体类注解使用: @JsonIgnore  @JsonView   @JSONField  (其实还有很多,后面有用到在逐步添加)

问题4:@Transient、@Id注解

问题5:mybatis自带的insert()和insertSelective()的区别

问题6:@Data注解


 

 问题1:无bean时@Autowired 报错。

   idea中springboot无法自动装配Could not autowire. No beans of 'UserMapper' type found. 如下图,能用,但idea报错很讨厌。

 解决方法如下图:

 参考:https://blog.csdn.net/weixin_42072280/article/details/110383793


 

问题2:Mybatis的bean映射不了

2.   使用mybatis自带的方法selectByPrimaryKey无法根据id查询    SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46398ada] was not registered for synchronization because synchronization is not active

 解决方法:

    1)bean要实现序列化,否则mybatis查询出的结果无法映射bean。

    2)主键加上@Id注解,且注解引入的是  import javax.persistence.Id;  而不是 import org.springframework.data.annotation.Id(我犯得错误);

 3)对于数字, 不能是long常量,需要改成对象,即 Long,Integer,Short才能映射。(这个也是我犯得错误)

  参考:https://blog.csdn.net/weixin_42072280/article/details/110383793


 

问题3:实体类注解使用: @JsonIgnore  @JsonView   @JSONField 

其实还有很多,后面有用到在逐步添加

@JsonIgnore  @JsonView 用途:此注解的主要用途就是当你返回实体类时去除敏感信息。比如:有个user表里面有个pwd字段,查询出user后,不想返回pwd字段。可以使用此注解去除pwd字段。

@JsonIgnore 是适合于对于用到这个的实体类在返回到前台时去除其标注的字段,

@JsonView  不能绝对,有的场景要去除,有的场还要返回到页面,这时可以用@JsonView注解来做。使用方法参照https://blog.csdn.net/cauchy6317/article/details/92788938

@JSONField  是对字段进行格式话 eg:@JSONField(format="yyyy-MM-dd HH:mm:ss")       可参考: http://t.zoukankan.com/756623607-zhang-p-10312178.html 

         

 

 


问题4:@Transient、@Id注解

@Transient 注解

 表中没有某个字段,但是页面又要显示。此时,根据表生成的实体类,是不包含这个字段的,这时候,可以使用注解 @Transient 。这个注解的意思是 该属性并非一个到数据库表的字段的映射。

(说白了,使用mybatis自带的insert()、insertSelective()等方法时,不会处理有@Transient 注解的字段。当然在使用mybatis自带的查询时,也不会处理,这时查询时可自己写sql,sql查询列带上这个字段,就有了)

@Id 注解    在实体类中,主键的话加上这个注解,这样mybatis自带的方法selectByPrimaryKey等就可以使用了


 问题5:mybatis自带的insert()和insertSelective()的区别

  • insert()                方法是mybatis在组装SQL语句时,实体类中有的字段(不包括有@Transient 注解的)都会进行组装
  •     insertSelective() 方法是 mybatis在组装SQL语句时,不仅仅看实体类中的字段,还会看赋值的字段参数是否为空,如为空也不会进行组装插入

2.首先要使用mybatis自带的方法需要进行如下配置

  1) mapper类要继承Mapper  2)实体类要实现序列化,对于主键加上@Id注解

 


 问题6:@Data注解

   详见这个网站的介绍,已经非常详细了:https://www.cnblogs.com/myitnews/p/12386333.html

   我常用的就是@Data注解,这样实体类的set、get、toString 方法不用再写了,代码很简洁。对于IDEA需要安装Lombok插件,否则报错。


 

posted on 2022-04-01 14:35  东方飘雪  阅读(45)  评论(0编辑  收藏  举报