فهرست منبع

keygenerator all other database support

Caratacus 8 سال پیش
والد
کامیت
296b55d3d4

+ 1 - 1
src/main/java/com/baomidou/mybatisplus/entity/GlobalConfiguration.java

@@ -24,7 +24,6 @@ import java.util.concurrent.ConcurrentSkipListSet;
 
 import javax.sql.DataSource;
 
-import com.baomidou.mybatisplus.mapper.IKeyGenerator;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
 import org.apache.ibatis.session.Configuration;
@@ -36,6 +35,7 @@ import com.baomidou.mybatisplus.enums.DBType;
 import com.baomidou.mybatisplus.enums.FieldStrategy;
 import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.mapper.AutoSqlInjector;
 import com.baomidou.mybatisplus.mapper.ISqlInjector;
 import com.baomidou.mybatisplus.mapper.MetaObjectHandler;

+ 19 - 0
src/main/java/com/baomidou/mybatisplus/incrementer/DB2KeyGenerator.java

@@ -0,0 +1,19 @@
+package com.baomidou.mybatisplus.incrementer;
+
+/**
+ * <p>
+ * DB2 Sequence
+ * </p>
+ *
+ * @author Caratacus
+ * @Date 2017-06-12
+ */
+public class DB2KeyGenerator implements IKeyGenerator {
+
+    @Override
+    public String executeSql(String incrementerName) {
+        return "values nextval for " + incrementerName;
+    }
+
+
+}

+ 19 - 0
src/main/java/com/baomidou/mybatisplus/incrementer/H2KeyGenerator.java

@@ -0,0 +1,19 @@
+package com.baomidou.mybatisplus.incrementer;
+
+/**
+ * <p>
+ * H2 Sequence
+ * </p>
+ *
+ * @author Caratacus
+ * @Date 2017-06-12
+ */
+public class H2KeyGenerator implements IKeyGenerator {
+
+    @Override
+    public String executeSql(String incrementerName) {
+        return "select " + incrementerName + ".nextval from dual";
+    }
+
+
+}

+ 3 - 5
src/main/java/com/baomidou/mybatisplus/mapper/IKeyGenerator.java → src/main/java/com/baomidou/mybatisplus/incrementer/IKeyGenerator.java

@@ -13,11 +13,9 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.mapper;
+package com.baomidou.mybatisplus.incrementer;
 
 
-import com.baomidou.mybatisplus.entity.TableInfo;
-
 /**
  * <p>
  * 表关键词 key 生成器接口
@@ -33,9 +31,9 @@ public interface IKeyGenerator {
      * 执行 key 生成 SQL
      * </p>
      *
-     * @param tableInfo 数据库表反射信息
+     * @param incrementerName 序列名称
      * @return
      */
-    String executeSql(TableInfo tableInfo);
+    String executeSql(String incrementerName);
 
 }

+ 3 - 5
src/main/java/com/baomidou/mybatisplus/entity/OracleKeyGenerator.java → src/main/java/com/baomidou/mybatisplus/incrementer/OracleKeyGenerator.java

@@ -13,9 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.entity;
-
-import com.baomidou.mybatisplus.mapper.IKeyGenerator;
+package com.baomidou.mybatisplus.incrementer;
 
 /**
  * <p>
@@ -28,8 +26,8 @@ import com.baomidou.mybatisplus.mapper.IKeyGenerator;
 public class OracleKeyGenerator implements IKeyGenerator {
 
     @Override
-    public String executeSql(TableInfo tableInfo) {
-        return String.format("SELECT %s.NEXTVAL FROM DUAL", tableInfo.getKeySequence().value());
+    public String executeSql(String incrementerName) {
+        return String.format("SELECT %s.NEXTVAL FROM DUAL", incrementerName);
     }
 
 }

+ 18 - 0
src/main/java/com/baomidou/mybatisplus/incrementer/PostgreKeyGenerator.java

@@ -0,0 +1,18 @@
+package com.baomidou.mybatisplus.incrementer;
+
+/**
+ * <p>
+ * Postgre Sequence
+ * </p>
+ *
+ * @author Caratacus
+ * @Date 2017-06-12
+ */
+public class PostgreKeyGenerator implements IKeyGenerator {
+
+    @Override
+    public String executeSql(String incrementerName) {
+        return "select nextval('" + incrementerName + "')";
+    }
+
+}

+ 2 - 2
src/main/java/com/baomidou/mybatisplus/toolkit/TableInfoHelper.java

@@ -45,7 +45,7 @@ import com.baomidou.mybatisplus.entity.TableFieldInfo;
 import com.baomidou.mybatisplus.entity.TableInfo;
 import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.mapper.IKeyGenerator;
+import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.mapper.SqlRunner;
 
 /**
@@ -408,7 +408,7 @@ public class TableInfoHelper {
         String keyProperty = tableInfo.getKeyProperty();
         String keyColumn = tableInfo.getKeyColumn();
         SqlSource sqlSource = languageDriver.createSqlSource(builderAssistant.getConfiguration(),
-                keyGenerator.executeSql(tableInfo), null);
+                keyGenerator.executeSql(tableInfo.getKeySequence().value()), null);
         builderAssistant.addMappedStatement(id, sqlSource, statementType, SqlCommandType.SELECT, null, null, null,
                 null, null, resultTypeClass, null, false, false, false,
                 new NoKeyGenerator(), keyProperty, keyColumn, null, languageDriver, null);

+ 1 - 1
src/test/java/com/baomidou/mybatisplus/test/oracle/TestSequserMapperTest.java

@@ -24,7 +24,7 @@ import org.apache.ibatis.session.SqlSessionFactory;
 
 import com.baomidou.mybatisplus.MybatisSessionFactoryBuilder;
 import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.entity.OracleKeyGenerator;
+import com.baomidou.mybatisplus.incrementer.OracleKeyGenerator;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.test.oracle.entity.TestSequser;
 import com.baomidou.mybatisplus.test.oracle.mapper.TestSequserMapper;

+ 1 - 1
src/test/java/com/baomidou/mybatisplus/test/oracle/config/OracleMybatisPlusConfig.java

@@ -13,7 +13,7 @@ import org.springframework.core.io.ResourceLoader;
 import com.baomidou.mybatisplus.MybatisConfiguration;
 import com.baomidou.mybatisplus.MybatisXMLLanguageDriver;
 import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.entity.OracleKeyGenerator;
+import com.baomidou.mybatisplus.incrementer.OracleKeyGenerator;
 import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
 import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;