mybatis-generation使用过程中遇到的问题

本文详细解答了在使用MyBatis Generator时遇到的由主键识别和JDBC驱动版本引起的时区问题。通过配置useInformationSchema属性解决主键识别问题,并更新JDBC驱动及设置正确的时区参数解决时区偏差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题一:

 在使用mybatis-Generator生成xml时,应该有insert、insertSelective、selectByPrimaryKey、updateByPrimaryKeySelective、updateByPrimaryKey、deleteByPrimaryKey等方法,但是在生成的xml文件中缺少ByPrimaryKey。

查找资料,有的说是表没有主键,有的说是jar包版本导致的,最终看到一篇文章解决掉:

在节点jdbcConnection里配置useInformationSchema属性,解决了不识别主键问题


<classPathEntry location="C:\software\android\repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar" />

  <context id="DB2Tables" targetRuntime="MyBatis3">
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://134.175.154.93/course?serverTimezone=UTC"
        userId="root"
        password="briupSH123">
        <!--设置可以获取tables remarks信息-->
      <property name="useInformationSchema" value="true"/>
  </jdbcConnection>

问题二:

在Idea的spring工程里,经常会遇到Could not autowire. No beans of 'xxxx' type found的错误提示。但程序的编译和运行都是没有问题的,这个错误提示并不会产生影响。但红色的错误提示在有些有强迫症的程序员眼里,多多少少有些不太舒服。

问题三:

问题描述(在使用jdbc连接数据库时出现时差问题):

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

原因:

驱动包用的是mysql-connector-java-8.0.11.jar 
新版的驱动类改成了com.mysql.cj.jdbc.Driver 
新版驱动连接url也有所改动 

解决办法:
指定时区

//北京时间东八区
serverTimezone=GMT%2B8 

这个时区要设置好,不然会出现时差, 
如果你设置serverTimezone=UTC,连接不报错, 
但是我们在用java代码插入到数据库时间的时候却出现了问题。 
比如在java代码里面插入的时间为:2018-06-24 17:29:56 
但是在数据库里面显示的时间却为:2018-06-24 09:29:56 
有了8个小时的时差 
UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。

//北京时间东八区
serverTimezone=GMT%2B8 
//或者使用上海时间
serverTimezone=Asia/Shanghai

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值