¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, DreamLu All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: DreamLu 墿¥æ¢¦ (596392912@qq.com) |
| | | */ |
| | | |
| | | package org.springblade.core.mp.injector.methods; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.core.injector.AbstractMethod; |
| | | import com.baomidou.mybatisplus.core.metadata.TableInfo; |
| | | import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator; |
| | | import org.apache.ibatis.executor.keygen.KeyGenerator; |
| | | import org.apache.ibatis.executor.keygen.NoKeyGenerator; |
| | | import org.apache.ibatis.mapping.MappedStatement; |
| | | import org.apache.ibatis.mapping.SqlSource; |
| | | import org.springblade.core.mp.injector.BladeSqlMethod; |
| | | |
| | | /** |
| | | * æ½è±¡ç æå
¥ä¸æ¡æ°æ®ï¼éæ©å段æå
¥ï¼ |
| | | * |
| | | * @author L.cm |
| | | */ |
| | | @RequiredArgsConstructor |
| | | public class AbstractInsertMethod extends AbstractMethod { |
| | | private final BladeSqlMethod sqlMethod; |
| | | |
| | | @Override |
| | | public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) { |
| | | KeyGenerator keyGenerator = new NoKeyGenerator(); |
| | | String columnScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlColumnMaybeIf(null), |
| | | LEFT_BRACKET, RIGHT_BRACKET, null, COMMA); |
| | | String valuesScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlPropertyMaybeIf(null), |
| | | LEFT_BRACKET, RIGHT_BRACKET, null, COMMA); |
| | | String keyProperty = null; |
| | | String keyColumn = null; |
| | | // 表å
å«ä¸»é®å¤çé»è¾,妿ä¸å
å«ä¸»é®å½æ®éåæ®µå¤ç |
| | | if (StringUtils.isNotBlank(tableInfo.getKeyProperty())) { |
| | | if (tableInfo.getIdType() == IdType.AUTO) { |
| | | // èªå¢ä¸»é® |
| | | keyGenerator = new Jdbc3KeyGenerator(); |
| | | keyProperty = tableInfo.getKeyProperty(); |
| | | keyColumn = tableInfo.getKeyColumn(); |
| | | } else { |
| | | if (null != tableInfo.getKeySequence()) { |
| | | keyGenerator = TableInfoHelper.genKeyGenerator(sqlMethod.getMethod(), tableInfo, builderAssistant); |
| | | keyProperty = tableInfo.getKeyProperty(); |
| | | keyColumn = tableInfo.getKeyColumn(); |
| | | } |
| | | } |
| | | } |
| | | String sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), columnScript, valuesScript); |
| | | SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); |
| | | return this.addInsertMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource, keyGenerator, keyProperty, keyColumn); |
| | | } |
| | | } |