Przeglądaj źródła

实体字符串类型默认为 like 查询,恢复 selectOne 加上 limit 1 限制

hubin 7 lat temu
rodzic
commit
a6603b66bf

+ 20 - 12
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},'%%')", "MySql数据库"),
+    MYSQL("mysql", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "MySql数据库"),
     /**
      * MARIADB
      */
-    MARIADB("mariadb", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", "MariaDB数据库"),
+    MARIADB("mariadb", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "MariaDB数据库"),
     /**
      * ORACLE
      */
-    ORACLE("oracle", null, "%s LIKE CONCAT('%%',#{%s},'%%')", "Oracle数据库"),
+    ORACLE("oracle", null, "%s LIKE CONCAT('%%',#{%s},'%%')", " ROWNUM <= %s", "Oracle数据库"),
     /**
      * DB2
      */
-    DB2("db2", null, "%s LIKE CONCAT('%%',#{%s},'%%')", "DB2数据库"),
+    DB2("db2", null, "%s LIKE CONCAT('%%',#{%s},'%%')", " FETCH FIRST %s ROWS ONLY", "DB2数据库"),
     /**
      * H2
      */
-    H2("h2", null, "%s LIKE CONCAT('%%',#{%s},'%%')", "H2数据库"),
+    H2("h2", null, "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "H2数据库"),
     /**
      * HSQL
      */
-    HSQL("hsql", null, "%s LIKE CONCAT('%%',#{%s},'%%')", "HSQL数据库"),
+    HSQL("hsql", null, "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "HSQL数据库"),
     /**
      * SQLITE
      */
-    SQLITE("sqlite", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", "SQLite数据库"),
+    SQLITE("sqlite", "`%s`", "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "SQLite数据库"),
     /**
      * POSTGRE
      */
-    POSTGRE_SQL("postgresql", "\"%s\"", "%s LIKE CONCAT('%%',#{%s},'%%')", "Postgre数据库"),
+    POSTGRE_SQL("postgresql", "\"%s\"", "%s LIKE CONCAT('%%',#{%s},'%%')", " LIMIT %s", "Postgre数据库"),
     /**
      * SQLSERVER2005
      */
-    SQL_SERVER2005("sqlserver2005", null, "%s LIKE '%%'+#{%s}+'%%'", "SQLServer2005数据库"),
+    SQL_SERVER2005("sqlserver2005", null, "%s LIKE '%%'+#{%s}+'%%'", null, "SQLServer2005数据库"),
     /**
      * SQLSERVER
      */
-    SQL_SERVER("sqlserver", null, "%s LIKE '%%'+#{%s}+'%%'", "SQLServer数据库"),
+    SQL_SERVER("sqlserver", null, "%s LIKE '%%'+#{%s}+'%%'", null, "SQLServer数据库"),
     /**
      * UNKONWN DB
      */
-    OTHER("other", null, null, "其他数据库");
+    OTHER("other", null, null, null, "其他数据库");
 
     /**
      * 数据库名称
@@ -84,16 +84,21 @@ 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 desc) {
+    DbType(String db, String quote, String like, String limit, String desc) {
         this.db = db;
         this.quote = quote;
         this.like = like;
+        this.limit = limit;
         this.desc = desc;
     }
 
@@ -115,4 +120,7 @@ public enum DbType {
         return OTHER;
     }
 
+    public String getLimit(int row) {
+        return null == limit ? "" : String.format(limit, row);
+    }
 }

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractMethod.java

@@ -396,7 +396,7 @@ public abstract class AbstractMethod {
             where.append(convertIfTag(fieldInfo, true));
         }
         where.append("</if>");
-        where.append("<if test=\"ew.sqlSegment!=null\"> AND ${ew.sqlSegment}</if>");
+        where.append("<if test=\"ew.sqlSegment!=null and ew.sqlSegment!=''\"> AND ${ew.sqlSegment}</if>");
         where.append("</trim>");
         where.append("</if>");
         return where.toString();

+ 1 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/DefaultSqlInjector.java

@@ -34,6 +34,7 @@ import com.baomidou.mybatisplus.core.injector.methods.SelectList;
 import com.baomidou.mybatisplus.core.injector.methods.SelectMaps;
 import com.baomidou.mybatisplus.core.injector.methods.SelectMapsPage;
 import com.baomidou.mybatisplus.core.injector.methods.SelectObjs;
+import com.baomidou.mybatisplus.core.injector.methods.SelectOne;
 import com.baomidou.mybatisplus.core.injector.methods.SelectPage;
 import com.baomidou.mybatisplus.core.injector.methods.Update;
 import com.baomidou.mybatisplus.core.injector.methods.UpdateById;

+ 4 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableFieldInfo.java

@@ -278,8 +278,10 @@ public class TableFieldInfo {
     }
 
     public void setCondition(DbType dbType) {
-        if (null == this.condition && StringUtils.isCharSequence(this.propertyType)) {
-            this.condition = dbType.getLike();
+        if (StringUtils.isCharSequence(this.propertyType)) {
+            if (null == this.condition || SqlCondition.EQUAL.equals(this.condition)) {
+                this.condition = dbType.getLike();
+            }
         }
     }
 

+ 1 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/LogicSqlInjector.java

@@ -37,6 +37,7 @@ import com.baomidou.mybatisplus.extension.injector.methods.LogicSelectList;
 import com.baomidou.mybatisplus.extension.injector.methods.LogicSelectMaps;
 import com.baomidou.mybatisplus.extension.injector.methods.LogicSelectMapsPage;
 import com.baomidou.mybatisplus.extension.injector.methods.LogicSelectObjs;
+import com.baomidou.mybatisplus.extension.injector.methods.LogicSelectOne;
 import com.baomidou.mybatisplus.extension.injector.methods.LogicSelectPage;
 import com.baomidou.mybatisplus.extension.injector.methods.LogicUpdate;
 import com.baomidou.mybatisplus.extension.injector.methods.LogicUpdateById;

Plik diff jest za duży
+ 1 - 2
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/IService.java


+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/impl/ServiceImpl.java

@@ -296,7 +296,7 @@ public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {
     }
 
     @Override
-    public Collection<T> selectList(Wrapper<T> wrapper) {
+    public List<T> selectList(Wrapper<T> wrapper) {
         return baseMapper.selectList(wrapper);
     }
 

+ 3 - 3
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2UserMapperTest.java

@@ -98,7 +98,7 @@ public class H2UserMapperTest extends BaseTest {
         Assert.assertTrue(1 == userMapper.update(h2User,
             new QueryWrapper<H2User>().eq("name", NQQ)));
 
-        log(userMapper.selectOne(new H2User().setName(NQQ).setAge(2)));
+        log(userMapper.selectOne(new QueryWrapper<>(new H2User().setName(NQQ).setAge(2))));
 
         h2User.setAge(3);
         h2User.setDesc(null);
@@ -107,14 +107,14 @@ public class H2UserMapperTest extends BaseTest {
                 .set(H2User::getDesc, "")
                 .eq(H2User::getName, NQQ)));
 
-        log(userMapper.selectOne(new H2User().setName(NQQ).setAge(3)));
+        log(userMapper.selectOne(new QueryWrapper<>(new H2User().setName(NQQ).setAge(3))));
 
         // 根据主键更新 age = 18
         h2User.setAge(18);
         Assert.assertNotNull(1 == userMapper.updateById(h2User));
 
         // 查询一条记录
-        Assert.assertNotNull(userMapper.selectOne(new H2User().setName(NQQ)));
+        Assert.assertNotNull(userMapper.selectOne(new QueryWrapper<>(new H2User().setName(NQQ))));
 
         log(h2User.toString());
 

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików