mysql 和 mybatis 版本不兼容
异常信息为:java.sql.SQLException: Unknown system variable ‘query_cache_size’
是因为mysql版本过低,和mybatis版本不兼容,所以报错
只需要更改pom文件里面的mysql依赖的版本号就可以了
springboot工程没有使用注入datasource
当springboot工程里面没有使用数据库的东西的时候,我们没有配置datasource的信息的时候,运行时会报错,说
sqlsessionfactory是需要的,所以我们要在运行入口类添加注解
1 | @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) |
在springboot的datasource配置问题
在datasource里面的URL后面添加了 zeroDateTimeBehavior=convertToNull 参数,结果运行报错
java.sql.SQLException: The connection property ‘zeroDateTimeBehavior’ acceptable values are: ‘CONVERT_TO_NULL’, ‘EXCEPTION’ or ‘ROUND’. The value ‘convertToNull’ is not acceptable.
报错信息为添加参数无效,将 zeroDateTimeBehavior=convertToNull 参数去掉就可以了。
idea中springboot的断点调试
打开Run/Debug Configurations,选择要调试的服务,然后在虚拟机参数设置(VM options):
1 | -Xms512m -Xmx512m -Xmn164m -XX:MaxPermSize=250m -XX:ReservedCodeCacheSize=64m -Dserver.port=端口号 -ea |
然后Working directory选项中选择
1 | $MODULE_WORKING_DIR$ |
然后点击debug运行就可以了
mysql对字符串排序
在对字符串排序是,我们只需要
1 | SELECT * FROM 表名 ORDER BY 字段名+0; |
这样我们就将字符串变为了ascII码,mysql就可以对此进行排序
项目jdk版本和本地版本不一致
在开发的时候报错了
1 | error:java:不支持发行版本5 |
我们在 IDEA—>File—>project structure 里面检查一下project和modules里面的jdk版本和本地的是否一致,不一致就改成一样的。
修改完毕之后到 Settings–>Bulid, Execution,Deployment–>java Compiler,Target bytecode version设为本地Java版本。
jdbc链接不到数据库
1 | mysql Caused by: java.sql.SQLSyntaxErrorException: Unknown database 'sys' |
首先检查这个数据库是否存在,jdbcurl填写是否正确,mysql是否启动,然后检查服务看3306是否冲突。
我的是禅道占用了3306端口,所以连接不上。
string.substring()方法截取字符串
在使用string.substring()截取字符串的时候,参数名是beginIndex和endIndex,我以为就是开始的位置和结束的位置,以为是将该位置也算上,
其实在使用后,发现打印的字符串不对,没有将最后一个位置的字符算上,但是算上了开始的位置。
前端传递时间格式参数报错
1 | Failed to convert property value of type 'java.lang.String' to required type 'java.time.LocalDateTime' for property 'endDate' |
出现这个问题,原因不知道,但是解决方案是在实体类上面,添加注解,必须连个都要。光要上面那个格式不对,光要下面那个还是报错
1 | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
使用mybatis-plus时,插入异常
1 | SQL: INSERT INTO eval_exam ( create_user_id) VALUES (?) |
mybatis-plus的方法会自动给我们生成简单的sql语句,但是我们在实体类里面的id上面加了TableId的注解的话,是不会自动给我们在sql语句
里面添加字段的,默认是自增的,但是数据库不是自增的字段,所以我们去掉注解或者是改数据库字段,设置成自增的就可以了。
mybatis-plus 关键字冲突
在使用mybatis-plus自动生产sql语句时,如果条件里面或者表的映射类里面有类似于 status和user等字段时,会和mysql里面的关键子冲突,
会报出找不到这个字段的异常,我们需要在表的映射类的字段的映射注解里面加 符号就可以,或者是在条件里用
符号包裹字段就行。
mybatis的xml文件和注解冲突
使用mybatis的时候有两种写自定义sql语句的方法,一个是写映射xml文件,一种是直接在接口方法上加注解,但是我在写的时候没注意,两个都
写了,那么mybatis会自动加载xml文件的sql语句,不会加载注解的sql语句。
筛选字段过慢
1 | select *,(case when INSTR(grade_name,'高') then 1 |
idea打开工程问题
在idea中直接选择打开工程文件,如果打开的文件当前子目录下没有pom文件,那么打开后的工程是不会被解析成maven工程文件,尽管里面的子文件有pom
文件,那么也不会解析。
文件上传名字错误
在文件上传的时候使用了以下方式来获得上传文件的名字
1 | file.getOriginalFilename(); |
但是我们使用这种方式获得的名字在IE浏览器里,获得的是完整的路径名字+文件名。
所以我们需要判断上传的文件名是否包含路径。修改代码如下:
1 | String filename = file.getOriginalFilename(); |
使用postman不当
我在使用postman请求时,发现只有get和delete能获得数据,但是put和post就不可以了,我在请求了组长的帮助下,才发现
只有put和post的参数要加在body里,不能直接写params,否则会报400,请求不到路径。
报错信息:Element ‘dependency’ cannot have character [children], because the type’s content type is element-on
这是因为我在网站上面复制的依赖地址,所以粘贴的时候没注意,可能会有特殊字符,或者是少写多写了,或者是有空格,我将空格删除自己输入空格就好了。
MongoTemplate使用报空指针异常
刚开始使用的时候我只是简单的写了这个
1 | private MongoTemplate mongoTemplate |
以为是静态类,但是排查发现是这个报了,我就知道没有实例化,我使用了自动注入后发现还是没有实例化,我想了很久才知道,我写在了工具类里面,我的工具类是一个普通类,没有自动注入,所以里面的对象不会自动注入,如果想要注入,只需要在普通类上面加@component注解就可以了。
还有MongoTemplate普通实例化的方式有点复杂,如以下
1 | MongoClientOptions.Builder mongoBuilder = new MongoClientOptions.Builder(); |
sql语句中模糊匹配和or的使用
在sql语句中,使用 like 模糊匹配的时候,我在一组or条件组里面使用了 模糊匹配,发现查询后的数据只有符合第一个条件的数据,就好像or条件后面都没有效果一样。
1 | select * from xxx where (xx like "x%" or xx like "x%" or xx like "x%") and xx = ? and xx = ? |
后面测试了一下,发现使用双引号好像会使后面的or条件失效,只有单引号才会有用。