Skip to content

Commit a671a07

Browse files
committed
完善skipId判断
1 parent 4f63b30 commit a671a07

File tree

3 files changed

+19
-20
lines changed

3 files changed

+19
-20
lines changed

src/main/java/tk/mybatis/mapper/mapperhelper/SqlHelper.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -339,12 +339,13 @@ public static String insertColumns(Class<?> entityClass, boolean skipId, boolean
339339
Set<EntityColumn> columnList = EntityHelper.getColumns(entityClass);
340340
//当某个列有主键策略时,不需要考虑他的属性是否为空,因为如果为空,一定会根据主键策略给他生成一个值
341341
for (EntityColumn column : columnList) {
342-
if (skipId && !column.isId()) {
343-
if (notNull) {
344-
sql.append(SqlHelper.getIfNotNull(column, column.getColumn() + ",", notEmpty));
345-
} else {
346-
sql.append(column.getColumn() + ",");
347-
}
342+
if (skipId && column.isId()) {
343+
continue;
344+
}
345+
if (notNull) {
346+
sql.append(SqlHelper.getIfNotNull(column, column.getColumn() + ",", notEmpty));
347+
} else {
348+
sql.append(column.getColumn() + ",");
348349
}
349350
}
350351
sql.append("</trim>");
@@ -367,12 +368,13 @@ public static String insertValuesColumns(Class<?> entityClass, boolean skipId, b
367368
Set<EntityColumn> columnList = EntityHelper.getColumns(entityClass);
368369
//当某个列有主键策略时,不需要考虑他的属性是否为空,因为如果为空,一定会根据主键策略给他生成一个值
369370
for (EntityColumn column : columnList) {
370-
if (skipId && !column.isId()) {
371-
if (notNull) {
372-
sql.append(SqlHelper.getIfNotNull(column, column.getColumnHolder() + ",", notEmpty));
373-
} else {
374-
sql.append(column.getColumnHolder() + ",");
375-
}
371+
if (skipId && column.isId()) {
372+
continue;
373+
}
374+
if (notNull) {
375+
sql.append(SqlHelper.getIfNotNull(column, column.getColumnHolder() + ",", notEmpty));
376+
} else {
377+
sql.append(column.getColumnHolder() + ",");
376378
}
377379
}
378380
sql.append("</trim>");
@@ -475,7 +477,7 @@ public static String exampleSelectColumns(Class<?> entityClass) {
475477
sql.append("</if>");
476478
//不支持指定列的时候查询全部列
477479
sql.append("<if test=\"@tk.mybatis.mapper.util.OGNL@hasNoSelectColumns(_parameter)\">");
478-
sql.append(SqlHelper.getAllColumns(entityClass));
480+
sql.append(getAllColumns(entityClass));
479481
sql.append("</if>");
480482
return sql.toString();
481483
}

src/main/java/tk/mybatis/mapper/provider/base/BaseInsertProvider.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,8 @@ public String insert(MappedStatement ms) {
9595
sql.append(SqlHelper.getBindValue(column, getUUID()));
9696
}
9797
}
98-
sql.append("INSERT INTO ");
99-
sql.append(SqlHelper.getDynamicTableName(entityClass, tableName(entityClass)));
100-
sql.append("(");
101-
sql.append(SqlHelper.getAllColumns(entityClass));
102-
sql.append(") ");
98+
sql.append(SqlHelper.insertIntoTable(entityClass, tableName(entityClass)));
99+
sql.append(SqlHelper.insertColumns(entityClass, false, false, false));
103100
sql.append("<trim prefix=\"VALUES(\" suffix=\")\" suffixOverrides=\",\">");
104101
for (EntityColumn column : columnList) {
105102
//优先使用传入的属性值,当原属性property!=null时,用原属性
@@ -183,8 +180,7 @@ public String insertSelective(MappedStatement ms) {
183180
sql.append(SqlHelper.getBindValue(column, getUUID()));
184181
}
185182
}
186-
sql.append("INSERT INTO ");
187-
sql.append(SqlHelper.getDynamicTableName(entityClass, tableName(entityClass)));
183+
sql.append(SqlHelper.insertIntoTable(entityClass, tableName(entityClass)));
188184
sql.append("<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">");
189185
for (EntityColumn column : columnList) {
190186
if (StringUtil.isNotEmpty(column.getSequenceName()) || column.isIdentity() || column.isUuid()) {

src/test/java/tk/mybatis/mapper/mapper/MybatisHelper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class MybatisHelper {
7171
// 支持方法上的注解
7272
// 3.3.1版本增加
7373
config.setEnableMethodAnnotation(true);
74+
//config.setNotEmpty(true);
7475
// 序列的获取规则,使用{num}格式化参数,默认值为{0}.nextval,针对Oracle
7576
// 可选参数一共3个,对应0,1,2,分别为SequenceName,ColumnName, PropertyName
7677
//config.setSeqFormat("NEXT VALUE FOR {0}");

0 commit comments

Comments
 (0)