Browse Source

应网友要求去掉 selectOne 默认 Limit 1 限制,允许异常

hubin 7 years ago
parent
commit
e75cfe0db4

+ 12 - 21
mybatis-plus-annotation/src/main/java/com/baomidou/mybatisplus/annotation/DbType.java

@@ -30,47 +30,47 @@ public enum DbType {
     /**
      * MYSQL
      */
-    MYSQL("mysql", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "MySql数据库"),
+    MYSQL("mysql", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", "MySql数据库"),
     /**
      * MARIADB
      */
-    MARIADB("mariadb", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "MariaDB数据库"),
+    MARIADB("mariadb", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", "MariaDB数据库"),
     /**
      * ORACLE
      */
-    ORACLE("oracle", null, "%s LIKE CONCAT('%%',#{%s},'%%')", null, "Oracle数据库"),
+    ORACLE("oracle", null, "%s LIKE CONCAT('%%',#{%s},'%%')", "Oracle数据库"),
     /**
      * DB2
      */
-    DB2("db2", null, "%s LIKE CONCAT('%%',#{%s},'%%')", " FETCH FIRST %s ROWS ONLY", "DB2数据库"),
+    DB2("db2", null, "%s LIKE CONCAT('%%',#{%s},'%%')", "DB2数据库"),
     /**
      * H2
      */
-    H2("h2", null, "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "H2数据库"),
+    H2("h2", null, "%s LIKE CONCAT('%%',#{%s},'%%')", "H2数据库"),
     /**
      * HSQL
      */
-    HSQL("hsql", null, "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "HSQL数据库"),
+    HSQL("hsql", null, "%s LIKE CONCAT('%%',#{%s},'%%')", "HSQL数据库"),
     /**
      * SQLITE
      */
-    SQLITE("sqlite", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "SQLite数据库"),
+    SQLITE("sqlite", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", "SQLite数据库"),
     /**
      * POSTGRE
      */
-    POSTGRE_SQL("postgresql", "\"%s\"", "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "Postgre数据库"),
+    POSTGRE_SQL("postgresql", "\"%s\"", "%s LIKE CONCAT('%%',#{%s},'%%')", "Postgre数据库"),
     /**
      * SQLSERVER2005
      */
-    SQL_SERVER2005("sqlserver2005", null, "%s LIKE '%%'+#{%s}+'%%'", null, "SQLServer2005数据库"),
+    SQL_SERVER2005("sqlserver2005", null, "%s LIKE '%%'+#{%s}+'%%'", "SQLServer2005数据库"),
     /**
      * SQLSERVER
      */
-    SQL_SERVER("sqlserver", null, "%s LIKE '%%'+#{%s}+'%%'", null, "SQLServer数据库"),
+    SQL_SERVER("sqlserver", null, "%s LIKE '%%'+#{%s}+'%%'", "SQLServer数据库"),
     /**
      * UNKONWN DB
      */
-    OTHER("other", null, null, null, "其他数据库");
+    OTHER("other", null, null, "其他数据库");
 
     /**
      * 数据库名称
@@ -84,21 +84,16 @@ public enum DbType {
      * LIKE 拼接模式
      */
     private final String like;
-    /**
-     * LIMIT 记录
-     */
-    private final String limit;
     /**
      * 描述
      */
     private final String desc;
 
 
-    DbType(String db, String quote, String like, String limit, String desc) {
+    DbType(String db, String quote, String like, String desc) {
         this.db = db;
         this.quote = quote;
         this.like = like;
-        this.limit = limit;
         this.desc = desc;
     }
 
@@ -119,8 +114,4 @@ public enum DbType {
         }
         return OTHER;
     }
-
-    public String getLimit(int row) {
-        return null == limit ? "" : String.format(limit, row);
-    }
 }

+ 3 - 12
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/methods/SelectOne.java

@@ -18,7 +18,6 @@ package com.baomidou.mybatisplus.core.injector.methods;
 import org.apache.ibatis.mapping.MappedStatement;
 import org.apache.ibatis.mapping.SqlSource;
 
-import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.core.enums.SqlMethod;
 import com.baomidou.mybatisplus.core.injector.AbstractMethod;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
@@ -36,17 +35,9 @@ public class SelectOne extends AbstractMethod {
     @Override
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         SqlMethod sqlMethod = SqlMethod.SELECT_ONE;
-        DbType dbType = getGlobalConfig().getDbConfig().getDbType();
-        String select = this.sqlSelectColumns(tableInfo, false);
-        if (dbType == DbType.SQL_SERVER || dbType == DbType.SQL_SERVER2005) {
-            select = "TOP 1 " + select;
-        }
-        String sql = String.format(sqlMethod.getSql(), select, tableInfo.getTableName(),
-            this.sqlWhereEntityWrapper(tableInfo) + dbType.getLimit(1));
-        if (dbType == DbType.ORACLE) {
-            sql = String.format("SELECT * FROM (%s) ROWNUM <= 1");
-        }
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
+        SqlSource sqlSource = languageDriver.createSqlSource(configuration, String.format(sqlMethod.getSql(),
+            this.sqlSelectColumns(tableInfo, false), tableInfo.getTableName(),
+            this.sqlWhereEntityWrapper(tableInfo)), modelClass);
         return this.addSelectMappedStatement(mapperClass, sqlMethod.getMethod(), sqlSource, modelClass, tableInfo);
     }
 }

+ 3 - 10
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/methods/LogicSelectOne.java

@@ -37,16 +37,9 @@ public class LogicSelectOne extends LogicAbstractMethod {
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         SqlMethod sqlMethod = SqlMethod.SELECT_ONE;
         DbType dbType = getGlobalConfig().getDbConfig().getDbType();
-        String select = this.sqlSelectColumns(tableInfo, false);
-        if (dbType == DbType.SQL_SERVER || dbType == DbType.SQL_SERVER2005) {
-            select = "TOP 1 " + select;
-        }
-        String sql = String.format(sqlMethod.getSql(), select, tableInfo.getTableName(),
-            this.sqlWhereEntityWrapper(tableInfo) + dbType.getLimit(1));
-        if (dbType == DbType.ORACLE) {
-            sql = String.format("SELECT * FROM (%s) ROWNUM <= 1");
-        }
-        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
+        SqlSource sqlSource = languageDriver.createSqlSource(configuration, String.format(sqlMethod.getSql(),
+            this.sqlSelectColumns(tableInfo, false), tableInfo.getTableName(),
+            this.sqlWhereEntityWrapper(tableInfo)), modelClass);
         return addSelectMappedStatement(mapperClass, sqlMethod.getMethod(), sqlSource, modelClass, tableInfo);
     }
 }