当前使用版本(必填,否则不予处理)
v3.5.3
该问题是如何引起的?(确定最新版也有问题再提!!!)
使用代码生成器时,发现模板里面主键生成这块有个问题,如果是是非自增主键并且没有配置enableTableFieldAnnotation。那么tableId这个注解就不会加上,而不加taleId注解时,byId类的查询就不能用,如果这样的话,生成tableiid注解时完全可以把#elseif(${field.convert})这个判断去掉就行了
重现步骤(如果有就写完整)
报错信息
Comment From: Bin1993
我咋试了非自增主键可以生成注解呢,你是用的的3.5.3.1版本吗?你的建表语句发个出来看看,还有生成代码的配置也发出来看看
Comment From: tlinsion
我咋试了非自增主键可以生成注解呢,你是用的的3.5.3.1版本吗?你的建表语句发个出来看看,还有生成代码的配置也发出来看看
我用的3.5.3版本的
CREATE TABLEt_asset(user_idbigint unsigned NOT NULL COMMENT '用户id',balancedecimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '余额',
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='余额表';
我这边用了自定义的controller,用到了点自定义数据,其他的没什么了
`
public class MybatisPlus {
private static final String URL = "jdbc:mysql://ip:3306/demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai";
private static final String USERNAME = "name";
private static final String PASSWORD = "pwd";
private static final String BASE_PATH = new ApplicationHome().getDir().getAbsolutePath() + "/system/";
public static void main(String[] args) {
GeneratorParam param = new GeneratorParam()
.setTablePrefix("t_")
.setTableName("t_asset")
.setModuleName("system")
.setOutPath(BASE_PATH)
.setPackName("cn.lin")
.setApiTags("用户资产接口")
.setPermPrefix("user:asset")
.setPremlist(true)
.setPremQuery(true)
.setPremNew(true)
.setPremUpd(true)
.setPremDel(true);
generator(param);
}
private static void generator(GeneratorParam... params) {
for (GeneratorParam param : params) {
FastAutoGenerator.create(URL, USERNAME, PASSWORD)
.globalConfig(builder -> {
builder.author("lin") // 设置作者
.enableSwagger() // 开启 swagger 模式
.disableOpenDir();
if (StringUtils.hasText(param.getOutPath())) {
builder.outputDir(param.getOutPath() + "src/main/java"); // 指定输出目录
}
})
.packageConfig(builder -> {
if (StringUtils.hasText(param.getPackName())) {
builder.parent(param.getPackName());// 设置父包名
}
if (StringUtils.hasText(param.getModuleName())) {
builder.moduleName(param.getModuleName());// 设置父包模块名
}
if (StringUtils.hasText(param.getOutPath())) {
builder.pathInfo(Collections.singletonMap(OutputFile.xml, param.getOutPath() + "src/main/resources/mapper"));
}
})
.strategyConfig(builder -> {
if (StringUtils.hasText(param.getTablePrefix())) {
builder.addTablePrefix(param.getTablePrefix());
}
if (StringUtils.hasText(param.getTableName())) {
builder.addInclude(param.getTableName());
}
builder.entityBuilder()
.enableLombok()
.enableChainModel()
//如果这里没有手动设置IdType的值,生成的实体类,非自增的主键就不会有tableId的注解
.idType(IdType.INPUT)
.enableFileOverride().build();
.controllerBuilder()
.enableRestStyle()
.enableFileOverride()
.build(); // 设置过滤表前缀
})
.templateConfig(builder -> builder.controller("/tmpl/controller.java").build())
.injectionConfig(builder -> {
Map