遇到的问题

1. Jdbc连接数据库时区问题

新版的Jdbc连接数据库需要添加时区信息,不然操作数据库会报错。解决方法是在数据库的URL后面加上时区参数:serverTimezone=UTC后面的时区可以根据自己的喜好来改,如图:
211526_ba63998a_3048956.png

2. 数据库写入中文字符串出现???

字符串编码需要统一,比如统一为UTF-8,解决方法是在数据库URL后面加上characterEncoding=utf-8后面字符串编码可以自己定义,如图:
211905_f209f2ee_3048956.png
扩展参数:?serverTimezone=UTC&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&useUnicode=true

3. jdbcTemplate.queryForObject方法返回值问题

在使用jdbcTemplate.queryForObject方法操作数据库,返回值经常报错,后来经过查询得知:

  • queryForObject其实支持的是标量子查询,只能传入一个基本类型的包装类的class,并返回一个基本类型对应包装类型的对象.
  • 这样还会存在一些问题,就是如果sql语句查询出0条或者多条数据的话,queryForObject会抛出EmptyResultDataAccessException或IncorrectResultSetColumnCountException:的异常,而如果干脆使用方法query,或者queryForList则可以在编码中处理掉这种问题而无需try-catch

解决方法:在jdbcTemplate.queryForObject外添加try-catch捕获异常返回,如图我写了一个匹配数据库中用户名和密码的接口,匹配成功返回true,匹配失败返回false。
212521_10eefa2b_3048956.png
接口返回的俩种情况:
成功
212648_a1f24a71_3048956.png
失败
212658_5e72ac2f_3048956.png

4.打包出现Using platform encoding (UTF-8 actually)...错误

错误如下:
Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
Snipaste_2020-02-06_11-35-12.png
解决方法:
在pom.xml下添加

<properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

5.maven项目的source编译在pom文件里的设置

<build>
<plugins> 
<plugin> 
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>8</source>
        <target>8</target>
    </configuration>
</plugin>
</plugins> 
</build>

或者在properties里

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
Last modification:May 27th, 2020 at 02:05 pm
如果觉得我的文章对你有用,请随意赞赏