mybatis generator问题汇总(Mybatis-generator生成数据表mapper只有insert语句)

Mybatis-generator的自动创建代码配置可以参考:https://blog.csdn.net/angel_xiaa/article/details/52474022

mybatis generator问题汇总:

目前mybatis generator遇到的坑主要有两个(一个是自己可能是自己挖的坑,一个是工具巨坑)

1.Mybatis-generator生成的数据表mapper只有insert语句,缺少delect、select、update等如下语句:

int deleteByPrimaryKey(Integer id);
User selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);

原因分析:

mybatis-generator之前自动生成过mapper文件,其实是有完整的一些基本的增删改查sql的,最近在工程中新加了一张表然后在generator时发现只自动生成的了insert相关的两个,有点懵(好久没用mybatis了,对机制也不是特别熟,所以懵逼),看了一些网络分析,提炼了几点:

1)网上大部分讲的原因或方法是使用低版本的数据库驱动mysql-connector(mysql-connector-java-5.1.26-bin.jar),即兼容性问题,解决了部分真是兼容性问题导致,其实这个问题也不会有很多人过多去追究,没有自动创建,我们可以手动写几个,毕竟项目紧张时,花时间找解决方法也是费时间。

2)我这个项目中感觉产生的原因是我这个数据表本身没有创建主键(数据表只是为了简单的测试数据,取数据测试)。mybatis-generator执行后提示警告“无法获取主键”,一开始没注意,后面想想应该自己这张表没有创建主键导致,为啥,我们看下上面是个没有生成的方法中的参数都有ByPrimaryKey,明显跟主键相关,所以遗憾,缺失了几个方法,(一般正常项目也不会出现这种缺少主键的表的,其次其实缺失问题也不大,自己重新写下也是可以的)

2.这个插件的巨大的坑:mybatis-generator再次执行会导致工程中的的mapper和dao都被冲掉。

如在项目初始化的时候没有把全部的表一次性generator或后面临时加了数据表和表中加了字段后再执行generator生成mapper,这是时候不要意向会在原来的基础上添加,它会粗暴的覆盖原来的mapper,而这些自动生成的mapper中,很多时候我们会自己定义一些根据需求的sql操作方法,这个变态的坑,会直接重新覆盖,原来的方法被初始化回去了,坑啊。

网上找了下,这个遇到人还是很多的,我找了一些方法尝试改善这个坑,网上这些方法,还没有找到真正对我环境有种,依旧未解决。

一些方法如下,供参考,成功了兄弟姐妹 欢迎分享啊

--2020/07/17:

好吧,mybatis默认是追加的方式,我在另一台IDEA重新generator发现不会覆盖,会追加,可能我新电脑改了什么配置吧,以上供参考,欢迎讨论

Mybatis generator mapper文件重新生成不会覆盖原文件

mybatis-generator生成文件覆盖问题(这个只是解决generator打包或部署不再执行generator)

https://www.imooc.com/qadetail/303872

你可能感兴趣的:(项目实战笔记)