瀏覽代碼

update test case for logic delete

yuxiaobin 8 年之前
父節點
當前提交
13b4847b43
共有 17 個文件被更改,包括 389 次插入37 次删除
  1. 3 2
      src/main/java/com/baomidou/mybatisplus/mapper/LogicSqlInjector.java
  2. 90 0
      src/test/java/com/baomidou/mybatisplus/test/h2/H2LogicDeleteTest.java
  3. 13 14
      src/test/java/com/baomidou/mybatisplus/test/h2/H2MetaObjectHandlerTest.java
  4. 1 1
      src/test/java/com/baomidou/mybatisplus/test/h2/H2UserNoOptLockTest.java
  5. 1 1
      src/test/java/com/baomidou/mybatisplus/test/h2/H2UserNoVersionTest.java
  6. 17 11
      src/test/java/com/baomidou/mybatisplus/test/h2/H2UserTest.java
  7. 2 2
      src/test/java/com/baomidou/mybatisplus/test/h2/config/MybatisPlusConfig.java
  8. 64 0
      src/test/java/com/baomidou/mybatisplus/test/h2/config/MybatisPlusLoginDeleteConfig.java
  9. 20 0
      src/test/java/com/baomidou/mybatisplus/test/h2/config/ServiceConfig.java
  10. 16 0
      src/test/java/com/baomidou/mybatisplus/test/h2/entity/mapper/H2UserLogicDeleteMapper.java
  11. 121 0
      src/test/java/com/baomidou/mybatisplus/test/h2/entity/persistent/H2UserLogicDelete.java
  12. 15 0
      src/test/java/com/baomidou/mybatisplus/test/h2/service/IH2UserLogicDeleteService.java
  13. 1 1
      src/test/java/com/baomidou/mybatisplus/test/h2/service/IH2UserNoVersionService.java
  14. 1 1
      src/test/java/com/baomidou/mybatisplus/test/h2/service/IH2UserService.java
  15. 20 0
      src/test/java/com/baomidou/mybatisplus/test/h2/service/impl/H2UserLogicDeleteServiceImpl.java
  16. 2 2
      src/test/java/com/baomidou/mybatisplus/test/h2/service/impl/H2UserNoVersionServiceImpl.java
  17. 2 2
      src/test/java/com/baomidou/mybatisplus/test/h2/service/impl/H2UserServiceImpl.java

+ 3 - 2
src/main/java/com/baomidou/mybatisplus/mapper/LogicSqlInjector.java

@@ -147,8 +147,9 @@ public class LogicSqlInjector extends AutoSqlInjector {
     protected void injectUpdateByIdSql(boolean selective, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
         if (table.isLogicDelete()) {
             SqlMethod sqlMethod = selective ? SqlMethod.LOGIC_UPDATE_BY_ID : SqlMethod.LOGIC_UPDATE_ALL_COLUMN_BY_ID;
-            String sql = String.format(sqlMethod.getSql(), table.getTableName(), sqlSet(selective, table, null),
-                    table.getKeyColumn(), table.getKeyProperty(),
+            String sql = String.format(sqlMethod.getSql(), table.getTableName(), sqlSet(selective, table, "et."),
+                    table.getKeyColumn(),
+                    "et." + table.getKeyProperty(),
                     "<if test=\"et instanceof java.util.Map\">" +
                             "<if test=\"et.MP_OPTLOCK_VERSION_ORIGINAL!=null\">"
                             + "and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL}"

+ 90 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/H2LogicDeleteTest.java

@@ -0,0 +1,90 @@
+package com.baomidou.mybatisplus.test.h2;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.List;
+
+import javax.sql.DataSource;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.test.h2.config.ServiceConfig;
+import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserLogicDelete;
+import com.baomidou.mybatisplus.test.h2.service.IH2UserLogicDeleteService;
+
+/**
+ * <p>
+ * H2LogicDeleteTest
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2017/6/15
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {ServiceConfig.class})
+public class H2LogicDeleteTest extends H2Test {
+
+    @BeforeClass
+    public static void init() throws SQLException, IOException {
+        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
+        context.register(ServiceConfig.class);
+        context.refresh();
+        DataSource ds = (DataSource) context.getBean("dataSource");
+        try (Connection conn = ds.getConnection()) {
+            String createTableSql = readFile("user.ddl.sql");
+            Statement stmt = conn.createStatement();
+            stmt.execute(createTableSql);
+            stmt.execute("truncate table h2user");
+            executeSql(stmt, "user.insert.sql");
+            conn.commit();
+        }
+    }
+
+    @Autowired
+    private IH2UserLogicDeleteService userService;
+
+    @Test
+    public void testInsert() {
+        H2UserLogicDelete user = new H2UserLogicDelete();
+        user.setAge(1);
+        user.setPrice(new BigDecimal("9.99"));
+        user.setVersion(1);
+        userService.insert(user);
+        Long id = user.getId();
+        Assert.assertNotNull(id);
+        user.setDesc("Caratacus");
+        userService.insertOrUpdate(user);
+        System.out.println("************************************");
+        System.out.println("*********" + user.getVersion());
+        System.out.println("************************************");
+        user = new H2UserLogicDelete();
+        user.setId(id);
+        EntityWrapper<H2UserLogicDelete> ew = new EntityWrapper<>(user);
+        List<H2UserLogicDelete> list = userService.selectList(ew);
+        System.out.println("************************************");
+        System.out.println("*********" + list.size());
+        System.out.println("************************************");
+        H2UserLogicDelete userFromDB = userService.selectById(user.getId());
+        Assert.assertEquals("Caratacus", userFromDB.getDesc());
+        Assert.assertEquals(1, userFromDB.getVersion().intValue());
+
+        userService.deleteById(id);
+        list = userService.selectList(ew);
+        System.out.println("************************************");
+        System.out.println("*********" + list.size());
+        System.out.println("************************************");
+
+    }
+
+}

+ 13 - 14
src/test/java/com/baomidou/mybatisplus/test/h2/H2MetaObjectHandlerTest.java

@@ -1,7 +1,16 @@
 package com.baomidou.mybatisplus.test.h2;
 
-import com.baomidou.mybatisplus.test.h2.entity.mapper.H2UserMetaobjMapper;
-import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserMetaObj;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.sql.DataSource;
+
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -12,21 +21,11 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
-import javax.sql.DataSource;
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
+import com.baomidou.mybatisplus.test.h2.entity.mapper.H2UserMetaobjMapper;
+import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserMetaObj;
 
 /**
  * <p>
- * TODO class
  * </p>
  *
  * @author yuxiaobin

+ 1 - 1
src/test/java/com/baomidou/mybatisplus/test/h2/H2UserNoOptLockTest.java

@@ -3,7 +3,7 @@ package com.baomidou.mybatisplus.test.h2;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2User;
-import com.baomidou.mybatisplus.test.h2.entity.service.IH2UserService;
+import com.baomidou.mybatisplus.test.h2.service.IH2UserService;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;

+ 1 - 1
src/test/java/com/baomidou/mybatisplus/test/h2/H2UserNoVersionTest.java

@@ -3,7 +3,7 @@ package com.baomidou.mybatisplus.test.h2;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserNoVersion;
-import com.baomidou.mybatisplus.test.h2.entity.service.IH2UserNoVersionService;
+import com.baomidou.mybatisplus.test.h2.service.IH2UserNoVersionService;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;

+ 17 - 11
src/test/java/com/baomidou/mybatisplus/test/h2/H2UserTest.java

@@ -1,9 +1,18 @@
 package com.baomidou.mybatisplus.test.h2;
 
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.baomidou.mybatisplus.test.h2.entity.persistent.H2User;
-import com.baomidou.mybatisplus.test.h2.entity.service.IH2UserService;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+import javax.sql.DataSource;
+
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -14,13 +23,10 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.*;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.test.h2.entity.persistent.H2User;
+import com.baomidou.mybatisplus.test.h2.service.IH2UserService;
 
 /**
  * <p>

+ 2 - 2
src/test/java/com/baomidou/mybatisplus/test/h2/config/MybatisPlusConfig.java

@@ -56,8 +56,8 @@ public class MybatisPlusConfig {
     @Bean
     public GlobalConfiguration globalConfiguration() {
         GlobalConfiguration conf = new GlobalConfiguration(new LogicSqlInjector());
-        conf.setLogicDeleteValue("D");
-        conf.setLogicNotDeleteValue("A");
+        conf.setLogicDeleteValue("-1");
+        conf.setLogicNotDeleteValue("1");
         conf.setIdType(2);
         return conf;
     }

+ 64 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/config/MybatisPlusLoginDeleteConfig.java

@@ -0,0 +1,64 @@
+package com.baomidou.mybatisplus.test.h2.config;
+
+import javax.sql.DataSource;
+
+import org.apache.ibatis.plugin.Interceptor;
+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 org.springframework.core.io.ResourceLoader;
+
+import com.baomidou.mybatisplus.MybatisConfiguration;
+import com.baomidou.mybatisplus.MybatisXMLLanguageDriver;
+import com.baomidou.mybatisplus.entity.GlobalConfiguration;
+import com.baomidou.mybatisplus.mapper.LogicSqlInjector;
+import com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor;
+import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.plugins.PerformanceInterceptor;
+import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;
+
+/**
+ * <p>
+ *     逻辑删除boot方式注入
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2017/6/15
+ */
+@Configuration
+@MapperScan("com.baomidou.mybatisplus.test.h2.entity.mapper")
+public class MybatisPlusLoginDeleteConfig {
+
+    @Bean("mybatisSqlSession")
+    public SqlSessionFactory sqlSessionFactory(DataSource dataSource, ResourceLoader resourceLoader, GlobalConfiguration globalConfiguration) throws Exception {
+        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
+        sqlSessionFactory.setDataSource(dataSource);
+//        sqlSessionFactory.setConfigLocation(resourceLoader.getResource("classpath:mybatis-config.xml"));
+        sqlSessionFactory.setTypeAliasesPackage("com.baomidou.mybatisplus.test.h2.entity.persistent");
+        MybatisConfiguration configuration = new MybatisConfiguration();
+        configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
+        configuration.setJdbcTypeForNull(JdbcType.NULL);
+        sqlSessionFactory.setConfiguration(configuration);
+        PaginationInterceptor pagination = new PaginationInterceptor();
+        pagination.setDialectType("h2");
+        OptimisticLockerInterceptor optLock = new OptimisticLockerInterceptor();
+        sqlSessionFactory.setPlugins(new Interceptor[]{
+                pagination,
+                optLock,
+                new PerformanceInterceptor()
+        });
+        sqlSessionFactory.setGlobalConfig(globalConfiguration);
+        return sqlSessionFactory.getObject();
+    }
+
+    @Bean
+    public GlobalConfiguration globalConfiguration() {
+        GlobalConfiguration conf = new GlobalConfiguration(new LogicSqlInjector());
+        conf.setLogicDeleteValue("-1");
+        conf.setLogicNotDeleteValue("1");
+        conf.setIdType(2);
+        return conf;
+    }
+}

+ 20 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/config/ServiceConfig.java

@@ -0,0 +1,20 @@
+package com.baomidou.mybatisplus.test.h2.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * <p>
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2017/6/15
+ */
+@Configuration
+@Import(value = {DBConfig.class, MybatisPlusConfig.class})
+@ComponentScan("com.baomidou.mybatisplus.test.h2.service")
+public class ServiceConfig {
+
+
+}

+ 16 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/entity/mapper/H2UserLogicDeleteMapper.java

@@ -0,0 +1,16 @@
+package com.baomidou.mybatisplus.test.h2.entity.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserLogicDelete;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2017/6/15
+ */
+public interface H2UserLogicDeleteMapper extends BaseMapper<H2UserLogicDelete> {
+
+}

+ 121 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/entity/persistent/H2UserLogicDelete.java

@@ -0,0 +1,121 @@
+package com.baomidou.mybatisplus.test.h2.entity.persistent;
+
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableLogic;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.FieldStrategy;
+import com.baomidou.mybatisplus.enums.IdType;
+
+/**
+ * <p>
+ * 测试逻辑删除实体
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2017/6/15
+ */
+@TableName("h2user")
+public class H2UserLogicDelete {
+
+    /* 表字段注解,false 表中不存在的字段,可无该注解 默认 true */
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /* 主键ID 注解,value 字段名,type 用户输入ID */
+    @TableId(value = "test_id", type = IdType.AUTO)
+    private Long id;
+
+    /* 测试忽略验证 */
+    private String name;
+
+    private Integer age;
+
+    /*BigDecimal 测试*/
+    private BigDecimal price;
+
+    /* 测试下划线字段命名类型, 字段填充 */
+    @TableField(value = "test_type", validate = FieldStrategy.IGNORED)
+    private Integer testType;
+
+    private String desc;
+
+//    @Version
+    @TableLogic
+    private Integer version;
+
+    @TableField(value = "last_updated_dt")
+    private Timestamp lastUpdatedDt;
+
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getAge() {
+        return age;
+    }
+
+    public void setAge(Integer age) {
+        this.age = age;
+    }
+
+    public BigDecimal getPrice() {
+        return price;
+    }
+
+    public void setPrice(BigDecimal price) {
+        this.price = price;
+    }
+
+    public Integer getTestType() {
+        return testType;
+    }
+
+    public void setTestType(Integer testType) {
+        this.testType = testType;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public Timestamp getLastUpdatedDt() {
+        return lastUpdatedDt;
+    }
+
+    public void setLastUpdatedDt(Timestamp lastUpdatedDt) {
+        this.lastUpdatedDt = lastUpdatedDt;
+    }
+}

+ 15 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/service/IH2UserLogicDeleteService.java

@@ -0,0 +1,15 @@
+package com.baomidou.mybatisplus.test.h2.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserLogicDelete;
+
+/**
+ * <p>
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2017/6/15
+ */
+public interface IH2UserLogicDeleteService extends IService<H2UserLogicDelete> {
+
+}

+ 1 - 1
src/test/java/com/baomidou/mybatisplus/test/h2/entity/service/IH2UserNoVersionService.java → src/test/java/com/baomidou/mybatisplus/test/h2/service/IH2UserNoVersionService.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.test.h2.entity.service;
+package com.baomidou.mybatisplus.test.h2.service;
 
 import com.baomidou.mybatisplus.service.IService;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserNoVersion;

+ 1 - 1
src/test/java/com/baomidou/mybatisplus/test/h2/entity/service/IH2UserService.java → src/test/java/com/baomidou/mybatisplus/test/h2/service/IH2UserService.java

@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.test.h2.entity.service;
+package com.baomidou.mybatisplus.test.h2.service;
 
 import com.baomidou.mybatisplus.service.IService;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2User;

+ 20 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/service/impl/H2UserLogicDeleteServiceImpl.java

@@ -0,0 +1,20 @@
+package com.baomidou.mybatisplus.test.h2.service.impl;
+
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.test.h2.entity.mapper.H2UserLogicDeleteMapper;
+import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserLogicDelete;
+import com.baomidou.mybatisplus.test.h2.service.IH2UserLogicDeleteService;
+
+/**
+ * <p>
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2017/6/15
+ */
+@Service
+public class H2UserLogicDeleteServiceImpl extends ServiceImpl<H2UserLogicDeleteMapper, H2UserLogicDelete> implements IH2UserLogicDeleteService{
+
+}

+ 2 - 2
src/test/java/com/baomidou/mybatisplus/test/h2/entity/service/impl/H2UserNoVersionServiceImpl.java → src/test/java/com/baomidou/mybatisplus/test/h2/service/impl/H2UserNoVersionServiceImpl.java

@@ -13,14 +13,14 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.test.h2.entity.service.impl;
+package com.baomidou.mybatisplus.test.h2.service.impl;
 
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.test.h2.entity.mapper.H2UserNoVersionMapper;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserNoVersion;
-import com.baomidou.mybatisplus.test.h2.entity.service.IH2UserNoVersionService;
+import com.baomidou.mybatisplus.test.h2.service.IH2UserNoVersionService;
 
 /**
  * <p>

+ 2 - 2
src/test/java/com/baomidou/mybatisplus/test/h2/entity/service/impl/H2UserServiceImpl.java → src/test/java/com/baomidou/mybatisplus/test/h2/service/impl/H2UserServiceImpl.java

@@ -13,14 +13,14 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.baomidou.mybatisplus.test.h2.entity.service.impl;
+package com.baomidou.mybatisplus.test.h2.service.impl;
 
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.test.h2.entity.mapper.H2UserMapper;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2User;
-import com.baomidou.mybatisplus.test.h2.entity.service.IH2UserService;
+import com.baomidou.mybatisplus.test.h2.service.IH2UserService;
 
 /**
  * <p>