Mapper
Mapper copied to clipboard
最大值对应的记录,不支持from 前面的子查询?
目标sql
SELECT
a.*
FROM
sys_user a,
(SELECT
MAX(USER_ID) AS 'MAX_USER_ID'
FROM
sys_user) b
WHERE
a.USER_ID = b.MAX_USER_ID;
provider ,这里的两个TODO好像都不行,是不是不支持子查询???
public String selectMax(MappedStatement ms) {
Class<?> entityClass = this.getEntityClass(ms);
String tableName = this.tableName(entityClass);
// 将返回值设置成ResultMap
setResultType(ms, entityClass);
StringBuilder sql = new StringBuilder();
sql.append(DynamicSqlUtil.selectTableAColumns(entityClass));
sql.append(" FROM ");
sql.append(tableName).append(" AS a,");
sql.append(" ( ").append(DynamicSqlUtil.getMaxSubQuerySQL())
// 这是什么鬼,着的常量可以
// sql.append(" where age=12 ")
//TODO 这里不能嵌套
// .append(SqlHelper.whereAllIfColumns(entityClass, false))
.append(" )").append(" b ");
sql.append(DynamicSqlUtil.whereTableAJoinColumns()).append(" ");
//TODO 这里也不能嵌套
// sql.append(DynamicSqlUtil.whereTableAFilterColumns(entityClass, false, false));
// 下面这个可以
// sql.append(" and age=12");
return sql.toString();
}