mybatis 逆向工程 自動生成的mapper檔案沒有 主鍵方法(附解決方法)
總結了一下網上的三大原因
1.資料表沒有設定主鍵
設定個主鍵就好
2.在mybits配置文件裡設定了某些屬性值為false
在mybatis配置文件裡檢視
enableSelectByPrimaryKey="true"
enableUpdateByPrimaryKey="true"
enableDeleteByPrimaryKey="true"
這些屬性是否設定為false,如果設定了這些屬性,改為true即可,如果沒有設定這些屬性,其預設值就是true,那就不用管它了
3。mysql-connector-java 驅動版本用的是6.x的
據說用mysql5.x版本的才能生成主鍵方法,用了6.x的就不行了,但問題是
5.x版本的驅動路徑是:com.mysql.jdbc.Driver
6.x的驅動路徑是:com.mysql.cj.jdbc.Driver
自己開啟jar包找下Driver就知道了。
我的電腦本地上裝的是mysql server 5.5,其driver路徑是com.mysql.cj.jdbc.Driver,我不太清楚mysql server 與mysql-connector-java版本的對應關係
懶得改本地的sql版本,所以就只能用mysql-connector-java 6.x的版本了,
那 主鍵方法怎麼辦呢?
自己動手,豐衣足食啊!
我以 新增 按主鍵刪除 為例
1.自己手動先在xxxMapper.java中寫入其方法名,引數為 主鍵的名字
package cn.ssm.dao; import cn.ssm.bean.User; import cn.ssm.bean.UserExample; import java.util.List; import org.apache.ibatis.annotations.Param; public interface UserMapper { long countByExample(UserExample example); int deleteByExample(UserExample example); //按主鍵刪除。 int deleteByPrimaryKey(Integer uId); int insert(User record); int insertSelective(User record); List<User> selectByExample(UserExample example); int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example); int updateByExample(@Param("record") User record, @Param("example") UserExample example); }
2.然後開啟xxxMapper.xml
<delete id="deleteByExample"
parameterType="cn.ssm.bean.UserExample">
delete from users
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<!-- 以下為 所加 程式碼-->
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from users
where u_id = #{uId,jdbcType=INTEGER}
</delete>
id 為方法名,parameterType為主鍵的屬性,(我的主鍵為int型別的)
在<delete></delete>標籤中 填入正確的sql語句
delete from users where u_id = #{uId,jdbcType=INTEGER}
{} 裡面,第一個值為主鍵名字,jdbcTYPE為主鍵屬性
3.測試 deleteByPrimaryKey 方法
@Autowired
UserMapper um;
/*
* 根據主鍵 刪除資訊
*/
@Test
public void testDelete() {
um.deleteByPrimaryKey(1006);
}
我的到此為止就成功了,看你的了