Browse Source

pg 测试

miemie 6 years ago
parent
commit
f88f9cb16a

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

@@ -52,6 +52,7 @@ public class MysqlTestDataMapperTest {
     @BeforeClass
     public static void init() throws Exception {
         MysqlDb.initMysqlData();
+        System.out.println("init success");
     }
 
     @Test

+ 3 - 7
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/config/DBConfig.java

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

+ 8 - 11
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/config/MysqlDb.java

@@ -1,21 +1,18 @@
 package com.baomidou.mybatisplus.test.mysql.config;
 
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import javax.sql.DataSource;
-
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.test.base.db.BaseDb;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.test.base.db.BaseDb;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
 
 public class MysqlDb extends BaseDb {
 
-    public static void initMysqlData() throws SQLException, IOException {
+    public static void initMysqlData() throws SQLException {
         ApplicationContext context = new ClassPathXmlApplicationContext("classpath:mysql/spring-test-mysql.xml");
         DataSource ds = context.getBean("dataSource", DataSource.class);
         try (Connection conn = ds.getConnection()) {
@@ -24,7 +21,7 @@ public class MysqlDb extends BaseDb {
     }
 
     public static void initData(Connection conn, String path, String ddlFileName)
-        throws SQLException, IOException {
+        throws SQLException {
         String createTableSql = readFile(path, ddlFileName);
         String[] sqls = createTableSql.split(";");
         Statement stmt = conn.createStatement();

+ 1 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/postgres/PostgresTestDataMapperTest.java

@@ -51,6 +51,7 @@ public class PostgresTestDataMapperTest {
     @BeforeClass
     public static void init() throws Exception {
         PostgresDb.initPgData();
+        System.out.println("init success");
     }
 
     @Test

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

@@ -1,6 +1,5 @@
 package com.baomidou.mybatisplus.test.postgres.config;
 
-import org.h2.Driver;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@@ -8,7 +7,6 @@ import org.springframework.jdbc.datasource.SimpleDriverDataSource;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 import javax.sql.DataSource;
-import java.sql.SQLException;
 
 /**
  * @author miemie
@@ -19,9 +17,8 @@ import java.sql.SQLException;
 public class DBConfig {
 
     @Bean("dataSource")
-    public DataSource dataSource() throws SQLException {
+    public DataSource dataSource() {
         SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
-        dataSource.setDriver(new Driver());
         dataSource.setDriverClass(org.postgresql.Driver.class);
         dataSource.setUrl("jdbc:postgresql://localhost:5432/mybatis_plus");
         dataSource.setUsername("postgres");

+ 43 - 5
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/postgres/config/MybatisPlusConfig.java

@@ -2,11 +2,16 @@ package com.baomidou.mybatisplus.test.postgres.config;
 
 import com.baomidou.mybatisplus.core.MybatisConfiguration;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.parser.ISqlParser;
 import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
 import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler;
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import com.baomidou.mybatisplus.test.postgres.PostgresMetaObjectHandler;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.LongValue;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.type.JdbcType;
 import org.mybatis.spring.annotation.MapperScan;
@@ -14,6 +19,8 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 import javax.sql.DataSource;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * <p>
@@ -24,11 +31,12 @@ import javax.sql.DataSource;
  * @since 2017/4/1
  */
 @Configuration
-@MapperScan({"com.baomidou.mybatisplus.test.base.mapper.commons", "com.baomidou.mybatisplus.test.base.mapper.ps"})
+@MapperScan({"com.baomidou.mybatisplus.test.base.mapper.commons", "com.baomidou.mybatisplus.test.base.mapper.pg"})
 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);
@@ -38,8 +46,7 @@ public class MybatisPlusConfig {
         /* 驼峰转下划线 */
         configuration.setMapUnderscoreToCamelCase(true);
         /* 分页插件 */
-        PaginationInterceptor pagination = new PaginationInterceptor();
-        configuration.addInterceptor(pagination);
+        configuration.addInterceptor(paginationInterceptor);
         /* 乐观锁插件 */
         configuration.addInterceptor(new OptimisticLockerInterceptor());
         sqlSessionFactory.setConfiguration(configuration);
@@ -51,11 +58,42 @@ public class MybatisPlusConfig {
 
     @Bean
     public GlobalConfig globalConfig() {
-        GlobalConfig conf = new GlobalConfig();
+        GlobalConfig conf = new GlobalConfig().setSqlParserCache(true);
         conf.setDbConfig(new GlobalConfig.DbConfig());
         /* 逻辑删除注入器 */
         LogicSqlInjector logicSqlInjector = new LogicSqlInjector();
         conf.setSqlInjector(logicSqlInjector);
         return conf;
     }
+
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        /*
+         * 【测试多租户】 SQL 解析处理拦截器<br>
+         * 这里固定写成住户 1 实际情况你可以从cookie读取,因此数据看不到 【 麻花藤 】 这条记录( 注意观察 SQL )<br>
+         */
+        List<ISqlParser> sqlParserList = new ArrayList<>();
+        TenantSqlParser tenantSqlParser = new TenantSqlParser();
+        tenantSqlParser.setTenantHandler(new TenantHandler() {
+            @Override
+            public Expression getTenantId() {
+                return new LongValue(1L);
+            }
+
+            @Override
+            public String getTenantIdColumn() {
+                return "tenant_id";
+            }
+
+            @Override
+            public boolean doTableFilter(String tableName) {
+                // 这里可以判断是否过滤表
+                return "common_logic_data".equals(tableName) || "pg_data".equals(tableName);
+            }
+        });
+        sqlParserList.add(tenantSqlParser);
+        paginationInterceptor.setSqlParserList(sqlParserList);
+        return paginationInterceptor;
+    }
 }

+ 2 - 3
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/postgres/config/PostgresDb.java

@@ -6,14 +6,13 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 import javax.sql.DataSource;
-import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.Statement;
 
 public class PostgresDb extends BaseDb {
 
-    public static void initPgData() throws SQLException, IOException {
+    public static void initPgData() throws SQLException {
         ApplicationContext context = new ClassPathXmlApplicationContext("classpath:postgres/spring-test-postgres.xml");
         DataSource ds = context.getBean("dataSource", DataSource.class);
         try (Connection conn = ds.getConnection()) {
@@ -22,7 +21,7 @@ public class PostgresDb extends BaseDb {
     }
 
     public static void initData(Connection conn, String path, String ddlFileName)
-        throws SQLException, IOException {
+        throws SQLException {
         String createTableSql = readFile(path, ddlFileName);
         String[] sqls = createTableSql.split(";");
         Statement stmt = conn.createStatement();

+ 6 - 6
mybatis-plus/src/test/resources/postgres/test_data.ddl.sql

@@ -1,7 +1,7 @@
-drop table if exists common_data;
-drop table if exists common_logic_data;
-drop table if exists pg_data;
-CREATE TABLE common_data (
+drop table if exists public.common_data;
+drop table if exists public.common_logic_data;
+drop table if exists public.pg_data;
+CREATE TABLE public.common_data (
     id        BIGINT primary key,
     test_int  integer,
     test_str  varchar(50),
@@ -11,7 +11,7 @@ CREATE TABLE common_data (
     tenant_id bigint
 );
 
-CREATE TABLE common_logic_data (
+CREATE TABLE public.common_logic_data (
     id       BIGINT primary key,
     test_int integer,
     test_str varchar(50),
@@ -21,7 +21,7 @@ CREATE TABLE common_logic_data (
     version  integer  default 0
 );
 
-CREATE TABLE pg_data (
+CREATE TABLE public.pg_data (
     id      BIGINT primary key,
     "pgInt" integer,
     pg_int2 integer,