SpringBoot中遇到的坑
坑一、
当我们在SpringBoot项目中整合MyBatis时,经常会使用@Mapper和@Select进行组合开发,这时所导入的必须是MyBatis-SpringBoot的整合包,否则会报Failed to configure a DataSource: 'url' attribute is not specified and no embedded
或者没有Mapper之类的错误。
解决办法,导入mysbatis和springboot的整合包即可,如下:
坑2
同样是在SpringBoot项目中整合MyBatis时,经常会有这个报错***java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z
***,这是因为使用连接池和pool版本相差太多的问题。抛出这个异常主要是 isVaild 在 com.mysql.jdbc.Connection 中并未实现上述方法,因此将会抛出抽象方法错误。
解决此只需尝试提高或降低mysql驱动的版本即可,大部分是驱动版本过低。
坑3
因为使用@Select写sql语句时,经常需要进行参数传递,特别是做模糊查询的时候,会有这和那的问题,这里对mybatis注解模糊查询的两种方式进行说明:
(1)一种拼接字符串
@Select("select * from xxx where name like #{name} ")
List findByName(String name)
测试的时候,传入的参数要拼接为
userDao.findByName("%name%")
(2)第二种是占位符, v a l u e , {value} , value,符号,属性必须是value,取参数的值
@Select("select * from xxx where name like '%${value}%' ")
List<xxx> findByName(String name)
测试的时候,直接传入参数
userDao.findByName(name)
坑4
咋天还好好的项目,今天启动项目时突然报***com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception
***此报错,看到com.mysql.jdbc.***Exception:还以为是数据库驱动出了问题,改了几次版本发现都还是报错,最后一查,原来是数据库挂了,重启数据库即可。
坑5
同样的sql语句在数据库中能查出结果,但是在java springboot项目中,查不出来。解决办法:
查看application.properties配置文件中的spring.datasource.url 配置,
并在数据库后面加上以下这段代码来指定编码格式
useSSL=false&useUnicode=true&characterEncoding=UTF-8