于是转头去看控制台产生的打印的sql语句,发现Sql语句里是有userId这个属性的。 所以,问题非常明显出在了查询结果映射到实体这一环节。 但是,我明明已经为主键添加了@TableId注解,否则继承于BaseMapper<T>的方法也不可能正常执行,我百思不得其解。 搜索了好几个关键字也没找到类似的问题,直到我点开了MybatisPuls官...
在自定义SQL里联表查询,且多个表里包含相同字段名,此时用LambdaQueryWrapper针对同名字段生成查询条件。执行会报错:列名有歧义 重现步骤 查询语句: select a.*,b.name from table1 a left join table2 b on a.bid = b.id ${ew.customSqlSegment}
mybatis-plus框架的拓展包,在框架原有基础上做了进一步的轻度封装,更加方便使用,针对数据自动填充(类似JPA中的审计)、关联查询(类似sql中的join)、多数据源自动建表(仅支持mysql)、冗余数据自动更新、动态查询条件等方面通过注解做了增强。
于是问题解决了,在不能修改表名的情况下(建议列名和属性名一致,或者满足驼峰命名法,如pk_user_id则为pkUserId,下划线转驼峰需要在配置文件中application.properties添加mybatis.configuration.map-underscore-to-camel-case=true) 告诉mybatis映射关系就好。 修改xml的内容如下: SELECT * FROM tab_user ${ew.custom...