Ver Fonte

一波优化,MetaObjectHandler改为接口, basemapper 里的 'et' 改为引用MetaObjectHandler 里的 常量

miemie há 7 anos atrás
pai
commit
72a5903090

+ 7 - 7
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -357,7 +357,7 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
      * @param params 参数集
      * @param params 参数集
      * @return this
      * @return this
      */
      */
-    protected String formatSql(String sqlStr, Object... params) {
+    protected final String formatSql(String sqlStr, Object... params) {
         return formatSqlIfNeed(true, sqlStr, params);
         return formatSqlIfNeed(true, sqlStr, params);
     }
     }
 
 
@@ -379,15 +379,15 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
      * @param params 参数集
      * @param params 参数集
      * @return this
      * @return this
      */
      */
-    protected String formatSqlIfNeed(boolean need, String sqlStr, Object... params) {
+    protected final String formatSqlIfNeed(boolean need, String sqlStr, Object... params) {
         if (!need || StringUtils.isEmpty(sqlStr)) {
         if (!need || StringUtils.isEmpty(sqlStr)) {
             return null;
             return null;
         }
         }
         if (ArrayUtils.isNotEmpty(params)) {
         if (ArrayUtils.isNotEmpty(params)) {
             for (int i = 0; i < params.length; ++i) {
             for (int i = 0; i < params.length; ++i) {
-                String genParamName = AbstractWrapper.MP_GENERAL_PARAMNAME + paramNameSeq.incrementAndGet();
-                sqlStr = sqlStr.replace(String.format(AbstractWrapper.PLACE_HOLDER, i),
-                    String.format(AbstractWrapper.MYBATIS_PLUS_TOKEN, getParamAlias(), genParamName));
+                String genParamName = MP_GENERAL_PARAMNAME + paramNameSeq.incrementAndGet();
+                sqlStr = sqlStr.replace(String.format(PLACE_HOLDER, i),
+                    String.format(MYBATIS_PLUS_TOKEN, getParamAlias(), genParamName));
                 paramNameValuePairs.put(genParamName, params[i]);
                 paramNameValuePairs.put(genParamName, params[i]);
             }
             }
         }
         }
@@ -409,7 +409,7 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
     /**
     /**
      * 必要的初始化
      * 必要的初始化
      */
      */
-    protected void initNeed() {
+    protected final void initNeed() {
         paramNameSeq = new AtomicInteger(0);
         paramNameSeq = new AtomicInteger(0);
         paramNameValuePairs = new HashMap<>(16);
         paramNameValuePairs = new HashMap<>(16);
         expression = new MergeSegments();
         expression = new MergeSegments();
@@ -431,7 +431,7 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
     }
     }
 
 
     public String getParamAlias() {
     public String getParamAlias() {
-        return StringUtils.isEmpty(paramAlias) ? AbstractWrapper.DEFAULT_PARAM_ALIAS : paramAlias;
+        return StringUtils.isEmpty(paramAlias) ? DEFAULT_PARAM_ALIAS : paramAlias;
     }
     }
 
 
     @Override
     @Override

+ 8 - 8
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/handlers/MetaObjectHandler.java

@@ -26,9 +26,9 @@ import org.apache.ibatis.reflection.SystemMetaObject;
  * @author hubin
  * @author hubin
  * @since 2016-08-28
  * @since 2016-08-28
  */
  */
-public abstract class MetaObjectHandler {
+public interface MetaObjectHandler {
 
 
-    protected static final String META_OBJ_PREFIX = "et";
+    String META_OBJ_PREFIX = "et";
 
 
     /**
     /**
      * <p>
      * <p>
@@ -37,7 +37,7 @@ public abstract class MetaObjectHandler {
      *
      *
      * @param metaObject 元对象
      * @param metaObject 元对象
      */
      */
-    public abstract void insertFill(MetaObject metaObject);
+    void insertFill(MetaObject metaObject);
 
 
     /**
     /**
      * 更新元对象字段填充(用于更新时对公共字段的填充)
      * 更新元对象字段填充(用于更新时对公共字段的填充)
@@ -48,7 +48,7 @@ public abstract class MetaObjectHandler {
      *
      *
      * @param metaObject 元对象
      * @param metaObject 元对象
      */
      */
-    public abstract void updateFill(MetaObject metaObject);
+    void updateFill(MetaObject metaObject);
 
 
     /**
     /**
      * <p>
      * <p>
@@ -62,7 +62,7 @@ public abstract class MetaObjectHandler {
      * @param fieldVal   java bean property value
      * @param fieldVal   java bean property value
      * @param metaObject meta object parameter
      * @param metaObject meta object parameter
      */
      */
-    protected MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject) {
+    default MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject) {
         if (metaObject.hasSetter(fieldName) && metaObject.hasGetter(fieldName)) {
         if (metaObject.hasSetter(fieldName) && metaObject.hasGetter(fieldName)) {
             metaObject.setValue(fieldName, fieldVal);
             metaObject.setValue(fieldName, fieldVal);
         } else if (metaObject.hasGetter(META_OBJ_PREFIX)) {
         } else if (metaObject.hasGetter(META_OBJ_PREFIX)) {
@@ -89,7 +89,7 @@ public abstract class MetaObjectHandler {
      * @param metaObject parameter wrapper
      * @param metaObject parameter wrapper
      * @return
      * @return
      */
      */
-    protected Object getFieldValByName(String fieldName, MetaObject metaObject) {
+    default Object getFieldValByName(String fieldName, MetaObject metaObject) {
         if (metaObject.hasGetter(fieldName)) {
         if (metaObject.hasGetter(fieldName)) {
             return metaObject.getValue(fieldName);
             return metaObject.getValue(fieldName);
         } else if (metaObject.hasGetter(META_OBJ_PREFIX + "." + fieldName)) {
         } else if (metaObject.hasGetter(META_OBJ_PREFIX + "." + fieldName)) {
@@ -101,14 +101,14 @@ public abstract class MetaObjectHandler {
     /**
     /**
      * 开启插入填充
      * 开启插入填充
      */
      */
-    public boolean openInsertFill() {
+    default boolean openInsertFill() {
         return true;
         return true;
     }
     }
 
 
     /**
     /**
      * 开启更新填充
      * 开启更新填充
      */
      */
-    public boolean openUpdateFill() {
+    default boolean openUpdateFill() {
         return true;
         return true;
     }
     }
 }
 }

+ 3 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/mapper/BaseMapper.java

@@ -23,6 +23,7 @@ import java.util.Map;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 
 /*
 /*
@@ -138,7 +139,7 @@ public interface BaseMapper<T> {
      *
      *
      * @param entity 实体对象
      * @param entity 实体对象
      */
      */
-    Integer updateById(@Param("et") T entity);
+    Integer updateById(@Param(MetaObjectHandler.META_OBJ_PREFIX) T entity);
 
 
     /**
     /**
      * <p>
      * <p>
@@ -148,7 +149,7 @@ public interface BaseMapper<T> {
      * @param entity        实体对象 (set 条件值,不能为 null)
      * @param entity        实体对象 (set 条件值,不能为 null)
      * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
      * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
      */
      */
-    Integer update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
+    Integer update(@Param(MetaObjectHandler.META_OBJ_PREFIX) T entity, @Param("ew") Wrapper<T> updateWrapper);
 
 
     /**
     /**
      * <p>
      * <p>

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2MetaObjectHandler.java

@@ -30,7 +30,7 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  * @author hubin
  * @author hubin
  * @since 2017-06-25
  * @since 2017-06-25
  */
  */
-public class H2MetaObjectHandler extends MetaObjectHandler {
+public class H2MetaObjectHandler implements MetaObjectHandler {
 
 
     /**
     /**
      * 测试 user 表 name 字段为空自动填充
      * 测试 user 表 name 字段为空自动填充

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/MysqlMetaObjectHandler.java

@@ -30,7 +30,7 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  * @author hubin
  * @author hubin
  * @since 2017-06-25
  * @since 2017-06-25
  */
  */
-public class MysqlMetaObjectHandler extends MetaObjectHandler {
+public class MysqlMetaObjectHandler implements MetaObjectHandler {
 
 
     /**
     /**
      * 测试 user 表 name 字段为空自动填充
      * 测试 user 表 name 字段为空自动填充

+ 21 - 16
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/MysqlTestDataMapperTest.java

@@ -1,5 +1,25 @@
 package com.baomidou.mybatisplus.test.mysql;
 package com.baomidou.mybatisplus.test.mysql;
 
 
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.sql.SQLException;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -11,21 +31,6 @@ import com.baomidou.mybatisplus.test.base.mapper.LogicTestDataMapper;
 import com.baomidou.mybatisplus.test.base.mapper.TestDataMapper;
 import com.baomidou.mybatisplus.test.base.mapper.TestDataMapper;
 import com.baomidou.mybatisplus.test.mysql.config.MysqlDb;
 import com.baomidou.mybatisplus.test.mysql.config.MysqlDb;
 import com.baomidou.mybatisplus.test.mysql.service.ILogicTestDataService;
 import com.baomidou.mybatisplus.test.mysql.service.ILogicTestDataService;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import javax.annotation.Resource;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.sql.SQLException;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.util.*;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -57,7 +62,7 @@ public class MysqlTestDataMapperTest {
         LocalDateTime nowDateTime = LocalDateTime.now();
         LocalDateTime nowDateTime = LocalDateTime.now();
         LocalDate nowDate = nowDateTime.toLocalDate();
         LocalDate nowDate = nowDateTime.toLocalDate();
         LocalTime nowTime = nowDateTime.toLocalTime();
         LocalTime nowTime = nowDateTime.toLocalTime();
-        for (int i = 0; i < 20; i++) {
+        for (int i = 0; i < 1; i++) {
             mapper.insert(new TestData().setTestInt(i).setTestStr(String.format("第%s条数据", i))
             mapper.insert(new TestData().setTestInt(i).setTestStr(String.format("第%s条数据", i))
                 .setTestDouble(BigDecimal.valueOf(3.3).multiply(BigDecimal.valueOf(i)).doubleValue())
                 .setTestDouble(BigDecimal.valueOf(3.3).multiply(BigDecimal.valueOf(i)).doubleValue())
                 .setTestBoolean((i + 3) % 2 == 0).setTestDate(nowDate)
                 .setTestBoolean((i + 3) % 2 == 0).setTestDate(nowDate)

+ 6 - 5
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/config/DBConfig.java

@@ -1,5 +1,9 @@
 package com.baomidou.mybatisplus.test.mysql.config;
 package com.baomidou.mybatisplus.test.mysql.config;
 
 
+import java.sql.SQLException;
+
+import javax.sql.DataSource;
+
 import org.h2.Driver;
 import org.h2.Driver;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
@@ -7,9 +11,6 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 import org.springframework.jdbc.datasource.SimpleDriverDataSource;
 import org.springframework.jdbc.datasource.SimpleDriverDataSource;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 
-import javax.sql.DataSource;
-import java.sql.SQLException;
-
 /**
 /**
  * @author miemie
  * @author miemie
  * @since 2018/6/7
  * @since 2018/6/7
@@ -23,9 +24,9 @@ public class DBConfig {
         SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
         SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
         dataSource.setDriver(new Driver());
         dataSource.setDriver(new Driver());
         dataSource.setDriverClass(com.mysql.jdbc.Driver.class);
         dataSource.setDriverClass(com.mysql.jdbc.Driver.class);
-        dataSource.setUrl("jdbc:mysql://localhost:3306/mshop_saas?useSSL=false&useUnicode=true&characterEncoding=UTF-8");
+        dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=UTF-8");
         dataSource.setUsername("root");
         dataSource.setUsername("root");
-        dataSource.setPassword("MySQL5715");
+        dataSource.setPassword("123456");
         return dataSource;
         return dataSource;
     }
     }
 
 

+ 9 - 23
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/config/MybatisPlusConfig.java

@@ -1,21 +1,20 @@
 package com.baomidou.mybatisplus.test.mysql.config;
 package com.baomidou.mybatisplus.test.mysql.config;
 
 
-import com.baomidou.mybatisplus.annotation.IdType;
+import javax.sql.DataSource;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.type.JdbcType;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
 import com.baomidou.mybatisplus.core.MybatisConfiguration;
 import com.baomidou.mybatisplus.core.MybatisConfiguration;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
 import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
 import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import com.baomidou.mybatisplus.test.mysql.MysqlMetaObjectHandler;
 import com.baomidou.mybatisplus.test.mysql.MysqlMetaObjectHandler;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.apache.ibatis.type.JdbcType;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import javax.sql.DataSource;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -60,16 +59,6 @@ public class MybatisPlusConfig {
         return sqlSessionFactory.getObject();
         return sqlSessionFactory.getObject();
     }
     }
 
 
-//    /**
-//     * 无效配置 --
-//     * 乐观锁插件
-//     * @return OptimisticLockerInterceptor
-//     */
-//    @Bean
-//    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
-//        return new OptimisticLockerInterceptor();
-//    }
-
     @Bean
     @Bean
     public GlobalConfig globalConfig() {
     public GlobalConfig globalConfig() {
         GlobalConfig conf = new GlobalConfig();
         GlobalConfig conf = new GlobalConfig();
@@ -77,10 +66,7 @@ public class MybatisPlusConfig {
         /* 逻辑删除注入器 */
         /* 逻辑删除注入器 */
         LogicSqlInjector logicSqlInjector = new LogicSqlInjector();
         LogicSqlInjector logicSqlInjector = new LogicSqlInjector();
         conf.setSqlInjector(logicSqlInjector);
         conf.setSqlInjector(logicSqlInjector);
-        conf.setDbConfig(new GlobalConfig.DbConfig()
-            .setIdType(IdType.ID_WORKER)
-            .setLogicDeleteValue("1")
-            .setLogicNotDeleteValue("0"));
+        conf.setDbConfig(new GlobalConfig.DbConfig());
         return conf;
         return conf;
     }
     }
 }
 }

+ 1 - 1
mybatis-plus/src/test/resources/mysql/spring-test-mysql.xml

@@ -6,5 +6,5 @@
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
 
 
     <context:component-scan
     <context:component-scan
-        base-package="com.baomidou.mybatisplus.test.mysql.config,com.baomidou.mybatisplus.test.mysql.service" />
+        base-package="com.baomidou.mybatisplus.test.mysql.config;com.baomidou.mybatisplus.test.mysql.service"/>
 </beans>
 </beans>