鍍金池/ 問答/Java  數(shù)據(jù)庫/ Mybatis insert自動生成id并寫回

Mybatis insert自動生成id并寫回

@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO,generator = "UUID")
private String id;
public String insertSelective(MappedStatement ms) {
        Class<?> entityClass = this.getEntityClass(ms);
        StringBuilder sql = new StringBuilder();
        Set<EntityColumn> columnList = EntityHelper.getColumns(entityClass);
        Boolean hasIdentityKey = false;
        Iterator var6 = columnList.iterator();

        EntityColumn column;
        label95:
        do {
            while(true) {
                while(true) {
                    do {
                        do {
                            if (!var6.hasNext()) {
                                sql.append(SqlHelper.insertIntoTable(entityClass, this.tableName(entityClass)));
                                sql.append("<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">");
                                var6 = columnList.iterator();

                                while(true) {
                                    while(true) {
                                        do {
                                            if (!var6.hasNext()) {
                                                sql.append("</trim>");
                                                sql.append("<trim prefix=\"VALUES(\" suffix=\")\" suffixOverrides=\",\">");
                                                var6 = columnList.iterator();

                                                while(var6.hasNext()) {
                                                    column = (EntityColumn)var6.next();
                                                    if (column.isInsertable()) {
                                                        if (column.isIdentity()) {
                                                            sql.append(SqlHelper.getIfCacheNotNull(column, column.getColumnHolder((String)null, "_cache", ",")));
                                                        } else {
                                                            sql.append(SqlHelper.getIfNotNull(column, column.getColumnHolder((String)null, (String)null, ","), this.isNotEmpty()));
                                                        }

                                                        if (StringUtil.isNotEmpty(column.getSequenceName())) {
                                                            sql.append(SqlHelper.getIfIsNull(column, this.getSeqNextVal(column) + " ,", this.isNotEmpty()));
                                                        } else if (column.isIdentity()) {
                                                            sql.append(SqlHelper.getIfCacheIsNull(column, column.getColumnHolder() + ","));
                                                        } else if (column.isUuid()) {
                                                            sql.append(SqlHelper.getIfIsNull(column, column.getColumnHolder((String)null, "_bind", ","), this.isNotEmpty()));
                                                        }
                                                    }
                                                }

                                                sql.append("</trim>");
                                                return sql.toString();
                                            }

                                            column = (EntityColumn)var6.next();
                                        } while(!column.isInsertable());

                                        if (!StringUtil.isNotEmpty(column.getSequenceName()) && !column.isIdentity() && !column.isUuid()) {
                                            sql.append(SqlHelper.getIfNotNull(column, column.getColumn() + ",", this.isNotEmpty()));
                                        } else {
                                            sql.append(column.getColumn() + ",");
                                        }
                                    }
                                }
                            }

                            column = (EntityColumn)var6.next();
                        } while(!column.isInsertable());
                    } while(StringUtil.isNotEmpty(column.getSequenceName()));

                    if (column.isIdentity()) {
                        sql.append(SqlHelper.getBindCache(column));
                        if (hasIdentityKey) {
                            continue label95;
                        }

                        this.newSelectKeyMappedStatement(ms, column);
                        hasIdentityKey = true;
                    } else if (column.isUuid()) {
                        sql.append(SqlHelper.getBindValue(column, this.getUUID()));
                    }
                }
            }
        } while(column.getGenerator() != null && column.getGenerator().equals("JDBC"));

        throw new MapperException(ms.getId() + "對應(yīng)的實體類" + entityClass.getCanonicalName() + "中包含多個MySql的自動增長列,最多只能有一個!");
    }

在insert成功后如何返回id?

回答
編輯回答
墨染殤

執(zhí)行insert(user)成功后 user.getId()就可以得到生成的id

2018年1月4日 03:43
編輯回答
練命

插入成功后,把對象返回回來,然后點他的id,就可以了

2017年11月26日 05:06