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