以举例的形式对常见配置进行解析。
比如:
datasource.url =
jdbc:mysql://localhost:3306/emp?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
localhost:数据库所在服务器的IP(localhost本地) 3306:数据库的端口号 emp:数据库的名字,databasename,mysql某个用户下的某个数据库名 useUnicode:是否使用Unicode字符集
characterEncoding:当useUnicode设置为true时,指定字符编码。
说明一:
mysql数据库用的是gbk编码,而你项目的mysql数据库需要的是utf-8编码,所以在url后面添加?useUnicode=true&characterEncoding=utf-8",表示
(1)数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中;
(2)从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
说明二:
JAVA连接MySQL数据库,在操作各项值均为0(或者有0不正确的数据?)的timestamp等(日期为0000-00-00。。。。)类型时不能正确处理,而是默认抛出一个异常,
比如所见的:java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column XX to TIMESTAMP。
举个实际的栗子,你的方法中要传入来自页面的日期参数值,
按照正常的做法,比如日期值为2016-10-11,但是由于误操作,传入了0000-00-00,并没有设置正确的数据,那么这时默认抛出java.sql.SQLException异常。
即这类操作情况的处理策略,有3种
1.exception(不指定,则默认)---->默认抛出异常,
2.convertToNull------->将日期转换成NULL值
3.round------->替换成最近的日期即XXXX-01-01 比如:zeroDateTimeBehavior=round 0001-01-01 00:00:00.0