开发过程琐碎小知识点

mybatis

插入新纪录,想使用即时生成的自增ID时

在insert标签加

useGeneratedKeys=“true” keyProperty=“id”

 <insert id="insertDevice" parameterType="Device" useGeneratedKeys="true" keyProperty="id">

这样就能在插入记录的同时获取该记录的ID,方便同时插入中间表。

public void insertDeviceModule(Device device)
    {
        Long[] modules = device.getModuleIds();
        if (StringUtils.isNotNull(modules))
        {
            // 新增设备与模块对应表
            List<DeviceStatus> list = new ArrayList<DeviceStatus>();
            for (Long moduleId : device.getModuleIds())
            {
                DeviceStatus dm = new DeviceStatus();
                dm.setDeviceId(device.getId());  //若不加语句,在getId()将获得null
                dm.setModuleDescription("模块正常");
                dm.setModuleId(moduleId);
                dm.setOrgId(device.getOrgId());
                dm.setHappenTime(DateUtils.getNowDate());
                dm.setDeviceStatus(1L);
                dm.setModuleCode(100L);
                list.add(dm);
            }
            if (list.size() > 0)
            {
                deviceStatusMapper.batchDeviceModule(list);
            }
        }
    }
    

使用summernote提交内容到controller时html样式标签丢失问题

需要在springboot 的application.properties文件配置xss过滤忽略地址

# 防止XSS攻击
xss:
  # 过滤开关
  enabled: true
  # 排除链接(多个用逗号分隔)
  excludes: /system/notice/*,/system/knowledge/*
  # 匹配链接
  urlPatterns: /system/*,/monitor/*,/tool/*

在excludes加上需要忽略的地址即可。

idea无法import项目中的类,全部报红

尝试刷新maven,重新导入pom,maven进行clean,再install,以上都无效可以清空idea缓存重启idea进行刷新,如图
在这里插入图片描述
或进行rebuild模块
在这里插入图片描述

一般进行以上操作,项目即可正常操作运行。

Vmware虚拟机全屏后,无法恢复窗口化

有时候通过mstsc命令远程到windows的服务器,在服务器中的VMware打开系统,选择全屏显示。想退出的时候发现鼠标移动到最顶部,工具栏也不会浮动出来,这个时候就需要快捷键CTRL+ALT+ENTER,可以通过快捷键便捷切换虚拟机全屏或者窗口显示,无需鼠标。

Springboot 使用配置文件配置类的属性

在需要的类使用

@Component
@ConfigurationProperties

2个注解进行类的组件注册和配置文件前缀定义,

@Component
@ConfigurationProperties(prefix = "path-config")
public class PathConfig {
    //项目的baseurl
    private static String BASE_SERVER;
    //项目服务器NGINX路径 ip+端口
    private static String NGINX_SERVER;
    //nginx环境目标文件路径 nginx html文件夹绝对路径
    private static String TARGET_NGINX_SERVER;
    //环境目标文件路径 nginx 项目前端http路径
    private static String SERVER_BASE_NGINX;
    //字体路径
    private static String FONT;
    //websocket http路径
    private static String WEBSOCKET_BASE_URL;

    public static String getBaseServer() {
        return BASE_SERVER;
    }

    public  void setBaseServer(String baseServer) {
        PathConfig.BASE_SERVER = baseServer;
    }

    public static String getNginxServer() {
        return NGINX_SERVER;
    }

    public  void setNginxServer(String nginxServer) {
        PathConfig.NGINX_SERVER = nginxServer;
    }

    public static String getTargetNginxServer() {
        return TARGET_NGINX_SERVER;
    }

    public  void setTargetNginxServer(String targetNginxServer) {
        PathConfig.TARGET_NGINX_SERVER = targetNginxServer;
    }

    public static String getServerBaseNginx() {
        return SERVER_BASE_NGINX;
    }

    public  void setServerBaseNginx(String serverBaseNginx) {
        PathConfig.SERVER_BASE_NGINX = serverBaseNginx;
    }

    public static String getFONT() {
        return FONT;
    }

    public  void setFONT(String FONT) {
        PathConfig.FONT = FONT;
    }

    public static String getWebsocketBaseUrl() {
        return WEBSOCKET_BASE_URL;
    }

    public  void setWebsocketBaseUrl(String websocketBaseUrl) {
        PathConfig.WEBSOCKET_BASE_URL = websocketBaseUrl;
    }
}

若是成员变量没有static修饰,则引用需要使用@AutoWired 装配后使用

@AutWired
private PathConfig pathconfig;

String str = pathconfig.getWebsocketBaseUrl();

若成员变量有static修饰,则直接使用类名引用

String str = PathConfig.getWebsocketBaseUrl();

springboot前端post请求体的json key名字和后端实体绑定规则

若实体定义了一个IDCardNo来表示身份证号,若直接使用idea的自动生成getter和setter方法,这个属性生成的get方法是getIDCarNo(),不是标准的驼峰命名,对于json的自动绑定会出现无法传值的问题,总是得到空,这时候应该修改get方法为getIdCardNo(),这种标准的驼峰才能传值,此时json串对应的key值为"idCardNo",传值正常。

自定义后端实体返回给前端json时的key值

使用@JsonProperty(“iDCarNo”) 进行自定义返回json的key值,标注后返回的实体IDCardNo属性将会用iDCarNo来作为json串的key值,springboot默认使用jackson进行序列化,所以引入的时候要注意标注的@JsonProperty是在这里插入图片描述
如果导入了fastjson,可能会不起作用,查看项目使用什么容器进行序列化,可以从spring容器中获取HttpMessageConverters 查看converters属性对应的值。

HttpMessageConverters converters = context.getBean(HttpMessageConverters.class);

Jackson对应的注解:@JsonProperty
FastJson对应的注解: @JsonFiled

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值