原連接:不識(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)簽??赡苁侵麈I沒(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è)主鍵。