瀏覽代碼

Merge pull request #1985 from flyingglass/3.0

Phoenix整合patch
miemieYaho 5 年之前
父節點
當前提交
38559c08f7

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/methods/Upsert.java

@@ -37,7 +37,7 @@ public class Upsert extends AbstractMethod {
     @Override
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         KeyGenerator keyGenerator = new NoKeyGenerator();
-        SqlMethod sqlMethod = SqlMethod.INSERT_ONE;
+        SqlMethod sqlMethod = SqlMethod.UPSERT_ONE;
         String columnScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlColumnMaybeIf(),
             LEFT_BRACKET, RIGHT_BRACKET, null, COMMA);
         String valuesScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlPropertyMaybeIf(null),

+ 2 - 1
mybatis-plus/build.gradle

@@ -13,12 +13,13 @@ dependencies {
     testCompile "${lib.postgresql}"
     testCompile lib.oracle as ConfigurableFileTree
     testCompile "${lib.mysql}"
-    testCompile "${lib.jackson}"
+//    testCompile "${lib.jackson}"
     testCompile "${lib.'mybatis-ehcache'}"
     testCompile "${lib.'mybatis-redis'}"
     testCompile "${lib.'spring-context-support'}"
     testCompile "${lib.'spring-jdbc'}"
     testCompile 'javax.annotation:javax.annotation-api:1.3.2'
+    // 与jackson会冲突
     testCompile ('com.github.flyingglass:phoenix-core-shaded:1.0.0-SNAPSHOT')
         {
             exclude group: 'org.apache.phoenix', module: 'phoenix-core'

+ 41 - 8
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/phoenix/PhoenixTest.java

@@ -1,10 +1,17 @@
 package com.baomidou.mybatisplus.test.phoenix;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.injector.methods.Upsert;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.baomidou.mybatisplus.test.phoenix.entity.PhoenixTestInfo;
 import com.baomidou.mybatisplus.test.phoenix.mapper.PhoenixTestInfoMapper;
+import com.mysql.cj.xdevapi.SqlStatement;
+import org.apache.ibatis.session.SqlSession;
 import org.junit.jupiter.api.MethodOrderer;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.TestMethodOrder;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.test.annotation.DirtiesContext;
@@ -14,6 +21,9 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 import javax.annotation.Resource;
 import java.util.List;
 
+import static com.baomidou.mybatisplus.core.enums.SqlMethod.UPSERT_ONE;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 /**
  * @author: fly
  * Created date: 2019/12/21 16:35
@@ -29,22 +39,45 @@ public class PhoenixTest {
 
     @Test
     void a00_upsertForeach() {
-
+        int size = 10;
         for (int i = 0; i < 10; i++) {
             PhoenixTestInfo testInfo = new PhoenixTestInfo()
                 .setId(i)
-                .setName("upsert");
-            mapper.upsert(testInfo);
+                .setName("test");
+            assertEquals (1, mapper.upsert(testInfo));
         }
+
+        assertEquals(size, mapper.selectList(Wrappers.emptyWrapper()).size());
     }
 
-    @Test
-    void a01_select() {
-        int size = 10;
 
-        List<PhoenixTestInfo> l = mapper.selectList(Wrappers.emptyWrapper());
-        assert (l.size() == size);
+    @Test
+    void a01_upsertBatch() {
+        int size = 10000;
+        try (SqlSession sqlSession = SqlHelper.sqlSessionBatch(PhoenixTestInfo.class)) {
+            String sqlStatement = SqlHelper.table(PhoenixTestInfo.class).getSqlStatement(UPSERT_ONE.getMethod());
+            for (int i = 0; i < size; i++) {
+                PhoenixTestInfo testInfo = new PhoenixTestInfo()
+                    .setId(i)
+                    .setName("upsertBatch");
+                sqlSession.insert(sqlStatement, testInfo);
+            }
+            sqlSession.commit();
+//            sqlSession.flushStatements();
+        }
+        assertEquals(size, mapper.selectList(Wrappers.emptyWrapper()).size());
     }
 
+    @Test
+    void a02_page() {
+        Page<PhoenixTestInfo> page = new Page<>(2, 100);
+        IPage<PhoenixTestInfo> result = mapper.selectPage(page, Wrappers.emptyWrapper());
+
+        assertEquals(10000, result.getTotal());
+        assertEquals(2, result.getCurrent());
+        assertEquals(100, result.getPages());
+        assertEquals(100, result.getRecords().size());
+
+    }
 
 }

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/phoenix/config/DBConfig.java

@@ -40,7 +40,7 @@ public class DBConfig {
     @Bean("dataSource")
     public DataSource dataSource() {
         SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
-        dataSource.setDriverClass(org.apache.phoenix.jdbc.PhoenixDriver);
+        dataSource.setDriverClass(org.apache.phoenix.jdbc.PhoenixDriver.class);
         dataSource.setUrl("jdbc:phoenix:dnode28,dnode29,dnode30:2181");
         Properties properties = new Properties();
         properties.setProperty("schema", "TEST");

+ 16 - 5
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/phoenix/config/MybatisPlusConfig.java

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
 import com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory;
 import com.baomidou.mybatisplus.extension.injector.methods.Upsert;
 import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.type.JdbcType;
@@ -44,13 +45,17 @@ import java.util.List;
 public class MybatisPlusConfig {
 
     @Bean("mybatisSqlSession")
-    public SqlSessionFactory sqlSessionFactory(DataSource dataSource, GlobalConfig globalConfig) throws Exception {
+    public SqlSessionFactory sqlSessionFactory(
+        DataSource dataSource,
+        GlobalConfig globalConfig,
+        PaginationInterceptor paginationInterceptor
+    ) throws Exception {
         MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
         /* 数据源 */
         sqlSessionFactory.setDataSource(dataSource);
         /* xml扫描 */
-        sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
-            .getResources("classpath:/mapper/*.xml"));
+//        sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
+//            .getResources("classpath:/mapper/*.xml"));
         /* 扫描 typeHandler */
         MybatisConfiguration configuration = new MybatisConfiguration();
         configuration.setJdbcTypeForNull(JdbcType.NULL);
@@ -58,6 +63,7 @@ public class MybatisPlusConfig {
         configuration.setMapUnderscoreToCamelCase(true);
         /* 乐观锁插件 */
         configuration.addInterceptor(new OptimisticLockerInterceptor());
+        configuration.addInterceptor(paginationInterceptor);
         /* map 下划线转驼峰 */
         configuration.setObjectWrapperFactory(new MybatisMapWrapperFactory());
         sqlSessionFactory.setConfiguration(configuration);
@@ -68,8 +74,8 @@ public class MybatisPlusConfig {
     @Bean
     public GlobalConfig globalConfig() {
         GlobalConfig conf = new GlobalConfig();
-        conf.setDbConfig(new GlobalConfig.DbConfig()
-            .setColumnFormat("`%s`"));
+//        conf.setDbConfig(new GlobalConfig.DbConfig()
+//            .setColumnFormat("`%s`"));
         DefaultSqlInjector phoenixSqlInjector = new DefaultSqlInjector() {
             /**
              * 注入自定义全局方法
@@ -84,4 +90,9 @@ public class MybatisPlusConfig {
         conf.setSqlInjector(phoenixSqlInjector);
         return conf;
     }
+
+    @Bean
+    PaginationInterceptor paginationInterceptor() {
+        return new PaginationInterceptor();
+    }
 }

+ 2 - 2
mybatis-plus/src/test/resources/phoenix/test_info.ddl.sql

@@ -1,5 +1,5 @@
-DROP SCHEMA TEST;
-CREATE SCHEMA TEST;
+-- DROP SCHEMA TEST;
+-- CREATE SCHEMA TEST;
 USE TEST;
 
 DROP TABLE IF EXISTS TEST_INFO;