原連接:不識(shí)別主鍵
在使用網(wǎng)上教程生成mybatis自動(dòng)代碼的時(shí)候,配置結(jié)束,但是生成的dao接口只有insert的兩個(gè)方法榴嗅,沒(méi)有其他方法,于是去百度陶舞,不得不多百度真的爛嗽测,得出的結(jié)論就是可能沒(méi)有在mysql表中沒(méi)有主鍵
那么就去數(shù)據(jù)庫(kù)中查看到底有沒(méi)有設(shè)置主鍵,然后看了一大堆設(shè)置主鍵的教程肿孵,還是不行唠粥,然后再去百度上面的問(wèn)題,清一色的博客全是那不變的三個(gè)方案停做,然后偶然想到晤愧,既然有主鍵,那是否可能是不能識(shí)別主鍵蛉腌,然后去百度官份,得到了答案只厘。
錯(cuò)誤場(chǎng)景描述:
在使用mybatis-Generator生成xml時(shí)借跪,不生成Example盯仪,在<table>標(biāo)簽中添加enableCountByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
enableUpdateByExample="false"
在生成xml文件時(shí),應(yīng)該有insert蛆橡、insertSelective钠右、selectByPrimaryKey赋元、updateByPrimaryKeySelective、updateByPrimaryKey飒房、deleteByPrimaryKey等方法搁凸,但是在生成的xml文件中只有insert、insertSelective狠毯。后來(lái)看xml文件中的resultMap節(jié)點(diǎn)里主鍵id使用的是result標(biāo)簽护糖,而不是id標(biāo)簽±悖可能是主鍵沒(méi)有被識(shí)別
后來(lái)在節(jié)點(diǎn)jdbcConnection里配置useInformationSchema屬性椅文,解決了不識(shí)別主鍵問(wèn)題
<!--配置數(shù)據(jù)庫(kù)-->
<jdbcConnection driverClass="${driver}"
connectionURL="${url}"
userId="${username}"
password="${password}">
<!--設(shè)置可以獲取tables remarks信息-->
<property name="useInformationSchema" value="true"/>
<!--設(shè)置可以獲取remarks信息-->
<property name="remarks" value="true"/>
</jdbcConnection>
還有一種情況是節(jié)點(diǎn)jdbcConnection里配置useInformationSchema屬性已存在,但是還是只有insert惜颇、insertSelective方法皆刺,這種情況可能會(huì)是mysql驅(qū)動(dòng)版本比較低導(dǎo)致的,可以升級(jí)一下mysql驅(qū)動(dòng)版本
2 另一個(gè)坑就是我在設(shè)置了user作為表名的時(shí)候凌摄,發(fā)現(xiàn)自動(dòng)生成的代碼突然多了兩個(gè)主鍵羡蛾,host user,查找一番锨亏,發(fā)現(xiàn)下面有警告信息痴怨,user表在不同數(shù)據(jù)庫(kù)中存在,那么是否是這個(gè)原因器予,修改了數(shù)據(jù)表名稱(chēng)之后浪藻,果然正常,應(yīng)該是在mysql中存在user數(shù)據(jù)表來(lái)保存連接用戶(hù)乾翔,導(dǎo)致出現(xiàn)了多個(gè)主鍵爱葵。