-
MyBatisPlus缓存问题
今天发现一个特别奇怪的问题,就是使用MyBatisPlus查询结果里面的list数据一直递增,后来发现原来添加事务注解`@Transactional`后,MyBatisPlus会自动启动缓存,每次修改对象里面的list后,下次在添加数据就会导致递增问题。
MyBatisPlus -
修改sonatype密码
我们在`https://my.sonatype.com/`这个网站修改密码,能同步到`https://issues.sonatype.org/`,但是`https://oss.sonatype.org/`却还是旧的密码。这时候我们需要到`https://issues.sonatype.org/secure/ViewProfile.jspa`页面点击`清除全部`按钮即可。
sonatype -
WebSocket Spring注入空指针问题
下面注入空指针:```@Component@ServerEndpoint("/rt/alarm/websocket/{ruleId}")publicclassAlarmWebSocket{@AutowiredprivateAlarmServicealarmService;}```可以通过自己写一个`SpringUtils`来获取,也可以通过下面代码:```@Component@ServerEndpoint("/rt/alarm/websocket/{ruleId}")publicclassAlarmWebSocket{//注意staticprivatestaticAlarmServicealarmService;//注意不要static@AutowiredpublicvoidsetAlarmService(AlarmServicealarmService){AlarmWebSocket.alarmService=alarmService;}}```
WebSocket -
ORM空值处理
##JPA更新判断JPA字段需要保存,但是不要更新,例如创建人、创建时间,可以修改注解属性`update=false`处理:```@Column(name="created_by",updatable=false)```##MyBatis-Plus更新判断修改注解属性`updateStrategy=FieldStrategy.NEVER`处理忽略更新:```@TableField(value="created_by",updateStrategy=FieldStrategy.NEVER)```**需要注意这里的`fill`如果是`update`时,那么会忽略`updateStrategy`属性,表示字段必定更新。**##MyBatis-Plus空值更新```@TableField(updateStrategy=FieldStrategy.IGNORED)```
ORM -
MyBatisPlus批量操作
处理默认的saveBatch和updateBatch意外可以自己实现一些批量操作,继承ServiceImpl:```@Overridepublicvoidbatch(Listlist){this.executeBatch(list,(sqlSession,entity)->sqlSession.insert("insertBatch",entity));}insertintot_entity(id)values(#{id})```如果提示`SqlSessionTransactionnotenabled`,有可能是我们内部方法没有代理,需要添加`@Transactional(rollbackFor=Exception.class)`,或者使用代理执行方法`AopContext.currentProxy()`。推荐使用代理调用,因为有时候使用事务事务量太大容易导致系统崩溃。
MyBatisPlus 批量操作 -
MyBatisPlus批量插入MySQL很慢
开始以为是事务配置的问题,后来发现5.7没问题,是8.0数据库的问题,需要JDBC连接里面添加参数:`rewriteBatchedStatements`
MyBatisPlus MySQL -
CentOS离线安装Docker
客户现场的虚拟机都是离线的,安装docker各种问题,开始直接`yuminstalldocker--downloadonly--downloaddir=/home/soft/update`下载RPM安装,发现安装成功,开始启动提示selinux错误,关闭后发现能够启动服务,但是启动容器就报错。后来发现需要升级系统,好吧,`yumupdate--downloadonly--downloaddir=/home/soft/update`下载升级包,直接使用`createrepo`制作了一个源,后来发现更新还是很多依赖没有。最后才发现客户安装的是桌面版,最后用虚拟机安装了一个桌面版,然后如上操作,终于成功了。##SELinux错误```Jobfordocker.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatusdocker.service"and"journalctl-xe"fordetails.```
CentOS Docker -
SpringBoot2.6.3使用Swagger3启动空指针
前后端分离使用`swagger`把接口信息展示给前端开确实非常方便,`swagger3`的`maven`依赖也只有一个非常方便,然后注解和配置都改了,还可以直接导入`showdoc`里面。但是今天整合到自己的项目的时候发现启动不了,报错:```[rest]2022-03-0509:29:59[main]WARNo.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext-Exceptionencounteredduringcontextinitialization-cancellingrefreshattempt:org.springframework.context.ApplicationContextException:Failedtostartbean'documentationPluginsBootstrapper';nestedexceptionisjava.lang.NullPointerException```这里需要修改一下配置,添加注解`@EnableWebMvc`即可。访问地址:`/swagger-ui/index.html`...
SpringBoot Swagger -
MyBatisPlus多数据源配置以及分页
##Mapper路径```#数据源(全局):mysql/mybatis/dao/mapper/mysql/serMapper.xmlcom.acgist.dao.mapper.mysql.UserMapper#数据源:oracle/mybatis/dao/mapper/oracle/OrderMapper.xmlcom.acgist.dao.mapper.oracle.OrderMapper#数据库:mssql/mybatis/dao/mapper/mssql/LogMapper.xmlcom.acgist.dao.mapper.mssql.LogMapper```##数据配置####Oracle```packagecom.acgist.config;importjavax.sql.DataSource;importorg.apache.ibatis.session.SqlSessionFactory;importorg.mybatis.spring.SqlSessionTemplate;importorg.mybatis.spring.annotation.MapperScan;importorg.spri...
MyBatis MyBatisPlus 多数据源 分页 -
MyBatis不能加载XML语句
最近有个项目需要每个不同模块连接不同数据库,所以配置了不同数据源,然后发现Mapper不能绑定XML语句,提示错误:```org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound):com.acgist.mapper.UserMapper.findatorg.apache.ibatis.binding.MapperMethod$SqlCommand.(MapperMethod.java:235)atcom.baomidou.mybatisplus.core.override.MybatisMapperMethod.(MybatisMapperMethod.java:50)atcom.baomidou.mybatisplus.core.override.MybatisMapperProxy.lambda$cachedInvoker$0(MybatisMapperProxy.java:111)atjava.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(...
MyBatis -
activiti7使用SpringBoot自动建表
默认不使用SpringBoot需要通过配置文件``这样建表:```ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();```但是这样不能使用SpringBoot里面的配置比较麻烦,所以改成下面这样。```@AutowiredprivateDataSourcedataSource;@PostConstructpublicvoidpost(){ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration().setDataSource(this.dataSource).setDatabaseSchemaUpdate("true").buildProcessEngine();}```当然我记得是有一个starter可以自动实现的,因为存在配置`database-schema-update:true`。
activiti7 SpringBoot -
Docker常用命令
```#进入JDKdockerrun--nametest--volume=/home/tmp/:/home/tmp/-itopenjdk:8-alpinesh#进入容器dockerexec-itnamesh|bash#常用命令dockerrmnamedockerrmiimagedockerimagedockerpsdockerlogs#注意如果使用实例ID那么导入就会没有name和tagdockersave-oimages.tarname:tagdockerload-iimages.tar```
docker -
Docker加载字体异常
在Linux里面直接使用命令没有问题,但是在docker里面就报异常:```java.io.IOException:Problemreadingfontdata.atjava.awt.Font.createFont0(Font.java:1000)atjava.awt.Font.createFont(Font.java:877)atFonts.main(Fonts.java:12)Exceptioninthread"main"java.lang.NullPointerExceptionatsun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)atsun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)atsun.awt.FontConfiguration.init(FontConfiguration.java:107)atsun.awt.X11FontManager.createFontConfiguration(X11FontManager.ja...
Docker Java -
Docker时间错误
以下配置时间还是错误:```volumes:-/etc/localtime:/etc/localtime:roenvironment:-TimeZone=Asia/Shanghai```修改配置:```environment:-TZ=Asia/Shanghai```OK
docker -
Nginx斜杠艺术
以前没有用过Nginx的路径配置,这才发现原来配置斜杠和不配置斜杠区别这么大:```#Nginx:localhost:80#Tomcat:localhost:8080#访问:http://localhost:80/acgist/api/abclocation/acgist/{proxy_passhttp://localhost:8080/;}#实际Tomcat地址:http://localhost:8080/api/abclocation/acgist{proxy_passhttp://localhost:8080/;}#实际Tomcat地址:http://localhost:8080//api/abclocation/acgist/{proxy_passhttp://localhost:8080;}#实际Tomcat地址:http://localhost:8080/acgist/api/abclocation/acgist{proxy_passhttp://localhost:8080;}#实际Tomcat地址:http://localhost:8080/acgist/api/abclocation/acg...
Nginx -
MyBatis备忘
平时我都使用`JPA`,虽然用过`mybatis`,但是没有搭建过,今天公司项目里面把`JPA`和`mybatis`整合在一起了。`mybatis`不能使用`JPA`的`@column`进行属性映射,但是提供了一个驼峰属性映射:##`mybatis`配置:```mybatis:configuration:#驼峰属性映射map-underscore-to-camel-case:truemapper-locations:-classpath*:mybatis/mapper/**/*.xml#如果没配没有结果pagehelper:params:count=countSqlreasonable:truehelperDialect:mysqlsupportMethodsArguments:true```##查询```finalPageablepageable=PageRequest.of(0,10);//finallongcount=PageHelper.count(()->this.accountMapper.page());finalPageInfopageInfo=PageHelper.startPage(...
MyBatis -
gateway使用feign错误
平时没怎么用过`feign`,今天配置网关调用服务居然提示错误:```feign.codec.DecodeException:Noqualifyingbeanoftype'org.springframework.boot.autoconfigure.http.HttpMessageConverters'available:expectedatleast1beanwhichqualifiesasautowirecandidate.Dependencyannotations:{@org.springframework.beans.factory.annotation.Autowired(required=true)}atfeign.AsyncResponseHandler.decode(AsyncResponseHandler.java:119)atfeign.AsyncResponseHandler.handleResponse(AsyncResponseHandler.java:87)atfeign.SynchronousMethodHandler.executeAndDecode(SynchronousMe...
Feign -
Java单例异常
Java单例存在循环依赖的情况容易会出现异常,这个情况遇到两次了。所以单例内部尽量不要使用常量,而是使用内部变量。
Java -
Java11运行JavaFX错误
JavaFX使用Java11运行是提示:```错误:缺少JavaFX运行时组件,需要使用该组件来运行此应用程序```原因是Java11的模块化,添加文件`module-info.java`配置JavaFX模块即可。
Java JavaFX -
VUE数组子组件刷新问题
最近做了一个视频通话的功能,之前做的时候是把第一个大屏和后面小屏分成了两段。大屏是第一段,默认使用下标`0`来初始化,小屏就是第二段使用`v-for`来初始化,当然如果只是增加是没有问题的。但是这里有个功能就是需要删除,还有点击小屏时需要切换到大屏,这里就有问题了,删除子组件的状态没有对应上。然后默认大屏我没有使用下标获取,也是用`v-for`但是组件刷新状态全部被重置了。当然上面做法是错误的,后来我全部使用`v-for`来做,通过样式控制大小屏,使用`sort`函数来排序,这样就没问题了。
VUE