Skip to content

Commit 5665914

Browse files
committed
实现改为String形式
1 parent 761d4c1 commit 5665914

File tree

1 file changed

+12
-21
lines changed

1 file changed

+12
-21
lines changed

src/main/java/tk/mybatis/mapper/provider/SqlServerProvider.java

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,13 @@
2525
package tk.mybatis.mapper.provider;
2626

2727
import org.apache.ibatis.mapping.MappedStatement;
28-
import org.apache.ibatis.scripting.xmltags.*;
2928
import tk.mybatis.mapper.entity.EntityColumn;
3029
import tk.mybatis.mapper.entity.EntityTable;
3130
import tk.mybatis.mapper.mapperhelper.EntityHelper;
3231
import tk.mybatis.mapper.mapperhelper.MapperHelper;
3332
import tk.mybatis.mapper.mapperhelper.MapperTemplate;
3433
import tk.mybatis.mapper.mapperhelper.SqlHelper;
3534

36-
import java.util.ArrayList;
37-
import java.util.List;
3835
import java.util.Set;
3936

4037
/**
@@ -94,38 +91,32 @@ public String insert(MappedStatement ms) {
9491
* @param ms
9592
* @return
9693
*/
97-
public SqlNode insertSelective(MappedStatement ms) {
94+
public String insertSelective(MappedStatement ms) {
9895
Class<?> entityClass = getEntityClass(ms);
99-
List<SqlNode> sqlNodes = new ArrayList<SqlNode>();
100-
//insert into table
101-
sqlNodes.add(new StaticTextSqlNode("INSERT INTO "));
102-
sqlNodes.add(getDynamicTableNameNode(entityClass));
103-
96+
StringBuilder sql = new StringBuilder();
97+
sql.append("insert into ");
98+
sql.append(SqlHelper.getDynamicTableName(entityClass, tableName(entityClass)));
99+
sql.append("<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">");
104100
//获取全部列
105101
Set<EntityColumn> columnList = EntityHelper.getColumns(entityClass);
106-
List<SqlNode> ifNodes = new ArrayList<SqlNode>();
107-
//Identity列只能有一个
108-
Boolean hasIdentityKey = false;
109102
//当某个列有主键策略时,不需要考虑他的属性是否为空,因为如果为空,一定会根据主键策略给他生成一个值
110103
for (EntityColumn column : columnList) {
111104
//当使用序列时
112105
if (!column.isId()) {
113-
ifNodes.add(getIfNotNull(column, new StaticTextSqlNode(column.getColumn() + ",")));
106+
sql.append(column.getColumn() + ",");
114107
}
115108
}
116-
//将动态的列加入sqlNodes
117-
sqlNodes.add(new TrimSqlNode(ms.getConfiguration(), new MixedSqlNode(ifNodes), "(", null, ")", ","));
118-
119-
ifNodes = new ArrayList<SqlNode>();
109+
sql.append("</trim>");
110+
sql.append("VALUES");
111+
sql.append("<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">");
120112
//处理values(#{property},#{property}...)
121113
for (EntityColumn column : columnList) {
122114
//当参数中的属性值不为空的时候,使用传入的值
123115
if (!column.isId()) {
124-
ifNodes.add(new IfSqlNode(new StaticTextSqlNode(column.getColumnHolder() + ","), column.getProperty() + " != null "));
116+
sql.append(SqlHelper.getIfNotNull(column, column.getColumnHolder() + ",", isNotEmpty()));
125117
}
126118
}
127-
//values(#{property},#{property}...)
128-
sqlNodes.add(new TrimSqlNode(ms.getConfiguration(), new MixedSqlNode(ifNodes), "VALUES (", null, ")", ","));
129-
return new MixedSqlNode(sqlNodes);
119+
sql.append("</trim>");
120+
return sql.toString();
130121
}
131122
}

0 commit comments

Comments
 (0)