原连接:不识别主键
在使用网上教程生成mybatis自动代码的时候,配置结束,但是生成的dao接口只有insert的两个方法,没有其他方法,于是去百度,不得不多百度真的烂,得出的结论就是可能没有在mysql表中没有主键
那么就去数据库中查看到底有没有设置主键,然后看了一大堆设置主键的教程,还是不行,然后再去百度上面的问题,清一色的博客全是那不变的三个方案,然后偶然想到,既然有主键,那是否可能是不能识别主键,然后去百度,得到了答案。
错误场景描述:
在使用mybatis-Generator生成xml时,不生成Example,在<table>标签中添加enableCountByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
enableUpdateByExample="false"
在生成xml文件时,应该有insert、insertSelective、selectByPrimaryKey、updateByPrimaryKeySelective、updateByPrimaryKey、deleteByPrimaryKey等方法,但是在生成的xml文件中只有insert、insertSelective。后来看xml文件中的resultMap节点里主键id使用的是result标签,而不是id标签。可能是主键没有被识别
后来在节点jdbcConnection里配置useInformationSchema属性,解决了不识别主键问题
<!--配置数据库-->
<jdbcConnection driverClass="${driver}"
connectionURL="${url}"
userId="${username}"
password="${password}">
<!--设置可以获取tables remarks信息-->
<property name="useInformationSchema" value="true"/>
<!--设置可以获取remarks信息-->
<property name="remarks" value="true"/>
</jdbcConnection>
还有一种情况是节点jdbcConnection里配置useInformationSchema属性已存在,但是还是只有insert、insertSelective方法,这种情况可能会是mysql驱动版本比较低导致的,可以升级一下mysql驱动版本
2 另一个坑就是我在设置了user作为表名的时候,发现自动生成的代码突然多了两个主键,host user,查找一番,发现下面有警告信息,user表在不同数据库中存在,那么是否是这个原因,修改了数据表名称之后,果然正常,应该是在mysql中存在user数据表来保存连接用户,导致出现了多个主键。