Browse Source

标准化测试

小锅盖 8 years ago
parent
commit
ed4beaebfb
31 changed files with 256 additions and 477 deletions
  1. 0 1
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/OptimisticLockerInterceptor.java
  2. 5 0
      mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/PerformanceInterceptor.java
  3. 0 115
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/OptimisticLockerInterceptorTest.java
  4. 0 69
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/OptimisticLockerInterceptorWebTest.java
  5. 0 8
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/DateVersionUserMapper.java
  6. 0 8
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/IntVersionUserMapper.java
  7. 0 8
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/LongVersionUserMapper.java
  8. 0 8
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/ShortVersionUserMapper.java
  9. 0 8
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/TimestampVersionUserMapper.java
  10. 0 8
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/service/IntVersionUserService.java
  11. 0 13
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/service/impl/IntVersionUserServiceImpl.java
  12. 0 112
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLockerInterceptorJUnitTest.java
  13. 0 77
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/UserTestBase.java
  14. 0 0
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/CreateDB.sql
  15. 119 0
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/OptimisticLockerInterceptorTest.java
  16. 1 1
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/DateVersionUser.java
  17. 1 1
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/IntVersionUser.java
  18. 1 1
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/LongVersionUser.java
  19. 1 1
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/ShortVersionUser.java
  20. 1 1
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/TimestampVersionUser.java
  21. 8 0
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/DateVersionUserMapper.java
  22. 8 0
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/IntVersionUserMapper.java
  23. 8 0
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/LongVersionUserMapper.java
  24. 8 0
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/ShortVersionUserMapper.java
  25. 8 0
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/TimestampVersionUserMapper.java
  26. 0 0
      mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mybatis-config.xml
  27. 38 0
      mybatis-plus/src/test/resources/plugins/optimisticLockerInterceptor.xml
  28. 0 36
      mybatis-plus/src/test/resources/spring/spring-jdbc.xml
  29. 45 0
      mybatis-plus/src/test/resources/spring/spring-mybatis.xml
  30. 3 1
      mybatis-plus/src/test/resources/spring/spring-servlet.xml
  31. 1 0
      mybatis-plus/src/test/resources/spring/spring-test.xml

+ 0 - 1
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/OptimisticLockerInterceptor.java

@@ -97,7 +97,6 @@ public final class OptimisticLockerInterceptor implements Interceptor {
 		if (parameterObject == null || !ms.getSqlCommandType().equals(SqlCommandType.UPDATE)) {
 			return invocation.proceed();
 		}
-
 		// 获得参数类型,去缓存中快速判断是否有version注解才继续执行
 		Class<? extends Object> parameterClass = parameterObject.getClass();
 		Class<?> realClass = null;

+ 5 - 0
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/PerformanceInterceptor.java

@@ -30,6 +30,7 @@ import org.apache.ibatis.reflection.MetaObject;
 import org.apache.ibatis.reflection.SystemMetaObject;
 import org.apache.ibatis.session.ResultHandler;
 
+import com.alibaba.druid.pool.DruidPooledPreparedStatement;
 import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
 import com.baomidou.mybatisplus.toolkit.PluginUtils;
 import com.baomidou.mybatisplus.toolkit.SqlUtils;
@@ -64,6 +65,10 @@ public class PerformanceInterceptor implements Interceptor {
 		} else {
 			statement = (Statement) firstArg;
 		}
+		// TODO 这里不太对
+		if (statement instanceof DruidPooledPreparedStatement) {
+			statement = (Statement) SystemMetaObject.forObject(statement).getValue("stmt.statement");
+		}
 		String originalSql = statement.toString();
 		int index = originalSql.indexOf(':');
 		String sql = originalSql;

+ 0 - 115
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/OptimisticLockerInterceptorTest.java

@@ -1,115 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker;
-
-import java.io.Reader;
-import java.sql.Connection;
-import java.sql.Timestamp;
-import java.util.Date;
-
-import org.apache.ibatis.io.Resources;
-import org.apache.ibatis.jdbc.ScriptRunner;
-import org.apache.ibatis.session.SqlSession;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.baomidou.mybatisplus.MybatisSessionFactoryBuilder;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.DateVersionUser;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.IntVersionUser;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.LongVersionUser;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.ShortVersionUser;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.TimestampVersionUser;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.DateVersionUserMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.IntVersionUserMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.LongVersionUserMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.ShortVersionUserMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.TimestampVersionUserMapper;
-
-public class OptimisticLockerInterceptorTest {
-
-	private static SqlSessionFactory sqlSessionFactory;
-
-	@BeforeClass
-	public static void setUp() throws Exception {
-		Reader reader = Resources.getResourceAsReader("com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mybatis-config.xml");
-		sqlSessionFactory = new MybatisSessionFactoryBuilder().build(reader);
-		reader.close();
-		SqlSession session = sqlSessionFactory.openSession();
-		Connection conn = session.getConnection();
-		reader = Resources.getResourceAsReader("com/baomidou/mybatisplus/test/plugin/OptimisticLocker/CreateDB.sql");
-		ScriptRunner runner = new ScriptRunner(conn);
-		runner.setLogWriter(null);
-		runner.runScript(reader);
-		reader.close();
-		session.close();
-	}
-
-	@Test
-	public void shorttVersionTest() {
-		SqlSession sqlSession = sqlSessionFactory.openSession();
-		ShortVersionUserMapper mapper = sqlSession.getMapper(ShortVersionUserMapper.class);
-		// 查到数据
-		ShortVersionUser versionUser = mapper.selectById(1);
-		// 根据Id更新
-		Assert.assertTrue(mapper.updateById(versionUser) == 1);
-		// mapper.update(versionUser, null);
-		sqlSession.close();
-	}
-
-	@Test
-	public void intVersionTest() {
-		SqlSession sqlSession = sqlSessionFactory.openSession();
-		IntVersionUserMapper mapper = sqlSession.getMapper(IntVersionUserMapper.class);
-		// 查到数据
-		IntVersionUser versionUser = mapper.selectById(1);
-		// 根据Id更新
-		Assert.assertTrue(mapper.updateById(versionUser) == 1);
-		sqlSession.close();
-	}
-
-	@Test
-	public void longVersionTest() {
-		SqlSession sqlSession = sqlSessionFactory.openSession();
-		LongVersionUserMapper mapper = sqlSession.getMapper(LongVersionUserMapper.class);
-		// 查到数据
-		LongVersionUser versionUser = mapper.selectById(1);
-		// 根据Id更新
-		Assert.assertTrue(mapper.updateById(versionUser) == 1);
-		sqlSession.close();
-	}
-
-	@Test
-	public void dateVersionTest() {
-		SqlSession sqlSession = sqlSessionFactory.openSession();
-		DateVersionUserMapper mapper = sqlSession.getMapper(DateVersionUserMapper.class);
-		DateVersionUser dateVersionUser = new DateVersionUser();
-		dateVersionUser.setName("zhangsan");
-		dateVersionUser.setVersion(new Date());
-		// 插入数据
-		mapper.insert(dateVersionUser);
-		// 查找出来
-		DateVersionUser dbUser = mapper.selectById(dateVersionUser.getId());
-		// 根据Id更新
-		dbUser.setName("lisi");
-		Assert.assertTrue(mapper.updateById(dbUser) == 1);
-		sqlSession.close();
-	}
-
-	@Test
-	public void timestampVersionTest() {
-		SqlSession sqlSession = sqlSessionFactory.openSession();
-		TimestampVersionUserMapper mapper = sqlSession.getMapper(TimestampVersionUserMapper.class);
-		TimestampVersionUser timeVersionUser = new TimestampVersionUser();
-		timeVersionUser.setName("zhangsan");
-		timeVersionUser.setVersion(new Timestamp(new Date().getTime()));
-		// 插入数据
-		mapper.insert(timeVersionUser);
-		// 查找出来
-		TimestampVersionUser dbUser = mapper.selectById(timeVersionUser.getId());
-		// 根据Id更新
-		dbUser.setName("lisi");
-		Assert.assertTrue(mapper.updateById(dbUser) == 1);
-		sqlSession.close();
-	}
-
-}

+ 0 - 69
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/OptimisticLockerInterceptorWebTest.java

@@ -1,69 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker;
-
-import java.io.Reader;
-import java.sql.Connection;
-import java.util.Date;
-
-import org.apache.ibatis.io.Resources;
-import org.apache.ibatis.jdbc.ScriptRunner;
-import org.apache.ibatis.session.SqlSession;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mybatis.spring.SqlSessionTemplate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.DateVersionUser;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.IntVersionUser;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.DateVersionUserMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.IntVersionUserMapper;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = { "/spring/spring-test.xml" })
-public class OptimisticLockerInterceptorWebTest {
-
-	@Autowired
-	private IntVersionUserMapper intVersionUserMapper;
-	@Autowired
-	private DateVersionUserMapper DateVersionUserMapper;
-
-	@Autowired
-	private SqlSessionTemplate sqlSessionTemplate;
-
-	@Before
-	public void setUp() throws Exception {
-		SqlSession session = sqlSessionTemplate.getSqlSessionFactory().openSession();
-		Connection conn = session.getConnection();
-		Reader reader = Resources.getResourceAsReader("com/baomidou/mybatisplus/test/plugin/OptimisticLocker/CreateDB.sql");
-		ScriptRunner runner = new ScriptRunner(conn);
-		runner.setLogWriter(null);
-		runner.runScript(reader);
-		reader.close();
-		session.close();
-	}
-
-	@Test
-	public void intVersionTest() {
-		IntVersionUser versionUser = intVersionUserMapper.selectById(1);
-		versionUser.setName("红薯");
-		Assert.assertTrue(intVersionUserMapper.updateById(versionUser) == 1);
-	}
-
-	@Test
-	public void dateVersionTest() {
-		DateVersionUser dateVersionUser = new DateVersionUser();
-		dateVersionUser.setName("zhangsan");
-		dateVersionUser.setVersion(new Date());
-		// 插入数据
-		DateVersionUserMapper.insert(dateVersionUser);
-		// 查找出来
-		DateVersionUser dbUser = DateVersionUserMapper.selectById(dateVersionUser.getId());
-		// 根据Id更新
-		dbUser.setName("lisi");
-		Assert.assertTrue(DateVersionUserMapper.updateById(dbUser) == 1);
-	}
-
-}

+ 0 - 8
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/DateVersionUserMapper.java

@@ -1,8 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper;
-
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.DateVersionUser;
-
-public interface DateVersionUserMapper extends BaseMapper<DateVersionUser> {
-
-}

+ 0 - 8
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/IntVersionUserMapper.java

@@ -1,8 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper;
-
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.IntVersionUser;
-
-public interface IntVersionUserMapper extends BaseMapper<IntVersionUser> {
-	
-}

+ 0 - 8
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/LongVersionUserMapper.java

@@ -1,8 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper;
-
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.LongVersionUser;
-
-public interface LongVersionUserMapper extends BaseMapper<LongVersionUser> {
-
-}

+ 0 - 8
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/ShortVersionUserMapper.java

@@ -1,8 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper;
-
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.ShortVersionUser;
-
-public interface ShortVersionUserMapper extends BaseMapper<ShortVersionUser> {
-	
-}

+ 0 - 8
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mapper/TimestampVersionUserMapper.java

@@ -1,8 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper;
-
-import com.baomidou.mybatisplus.mapper.BaseMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.TimestampVersionUser;
-
-public interface TimestampVersionUserMapper extends BaseMapper<TimestampVersionUser> {
-
-}

+ 0 - 8
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/service/IntVersionUserService.java

@@ -1,8 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.service;
-
-import com.baomidou.mybatisplus.service.IService;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.IntVersionUser;
-
-public interface IntVersionUserService extends IService<IntVersionUser> {
-
-}

+ 0 - 13
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/service/impl/IntVersionUserServiceImpl.java

@@ -1,13 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.service.impl;
-
-import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.IntVersionUser;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.IntVersionUserMapper;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.service.IntVersionUserService;
-
-@Service
-public class IntVersionUserServiceImpl extends ServiceImpl<IntVersionUserMapper, IntVersionUser> implements IntVersionUserService {
-
-}

+ 0 - 112
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLockerInterceptorJUnitTest.java

@@ -1,112 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin;
-
-import java.math.BigDecimal;
-import java.sql.Timestamp;
-import java.util.Calendar;
-import java.util.Date;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.test.mysql.entity.User;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.TimestampVersionUser;
-
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = { "/spring/spring-test.xml" })
-public class OptimisticLockerInterceptorJUnitTest extends UserTestBase{
-	
-	@Test
-	public void testSelectWithDecimalData(){
-		User user = userService.selectById(11);
-		System.err.println(user);
-		Assert.assertNotNull(user);
-		Assert.assertEquals(new BigDecimal("99.99"), user.getPrice());
-	}
-	
-	@Test
-	public void testUpdateWithoutVersionControl(){
-		User user = userService.selectById(11);//if cacheEnabled=true, this object will be cached
-		Assert.assertEquals(1, user.getAge().intValue());
-		User updateUser = new User();
-		updateUser.setId(user.getId());
-		updateUser.setAge(2);
-		userService.updateById(updateUser);
-		
-		user = userService.selectById(11);
-		Assert.assertEquals(2, user.getAge().intValue());
-		Assert.assertEquals(1, user.getVersion().intValue());
-		
-		User user2 = userService.selectById(12);
-		updateUser = new User();
-		updateUser.setAge(99);
-		updateUser.setPrice(new BigDecimal("9.99"));
-		userService.updateById(updateUser);
-		user2 = userService.selectById(12);
-		Assert.assertEquals(1, user2.getVersion().intValue());//test if version is cached in plugin [OK]
-	}
-	
-	@Test
-	public void testUpdateWithVersionControl(){
-		long userId = 12;
-		User user = userService.selectById(userId);
-		Assert.assertEquals(1, user.getVersion().intValue());
-		User updateUser = new User();
-		updateUser.setId(userId);
-		updateUser.setAge(3);
-		updateUser.setVersion(user.getVersion());
-		userService.updateById(updateUser);
-		user = userService.selectById(userId);
-		
-		Assert.assertEquals(3, user.getAge().intValue());
-		Assert.assertEquals(2, user.getVersion().intValue());
-		
-		User where = new User();
-		where.setId(userId);
-//		updateUser = new User();
-//		updateUser.setId(userId);
-//		updateUser.setAge(3);
-//		updateUser.setVersion(user.getVersion());
-		userService.update(user, new EntityWrapper<User>(where));
-		user = userService.selectById(userId);
-		Assert.assertEquals(3, user.getAge().intValue());
-		Assert.assertEquals(3, user.getVersion().intValue());
-	}
-	
-	@Test
-	public void testTimestampVersionControl(){
-		timeVersionMapper.deleteById(1L);
-		TimestampVersionUser user = new TimestampVersionUser();
-		user.setId(1L);
-		user.setName("name1");
-		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.DAY_OF_MONTH, -1);
-		user.setVersion(new Timestamp(new Date().getTime()));
-		timeVersionMapper.insert(user);
-		
-		cal = Calendar.getInstance();
-		cal.add(Calendar.SECOND, -1);
-		Date date = cal.getTime();
-		System.err.println("date="+date);
-		int compare = user.getVersion().compareTo(date);
-		Assert.assertTrue(compare<0);
-		
-		TimestampVersionUser updateUser = new TimestampVersionUser();
-		updateUser.setId(1L);
-		updateUser.setName("updname");
-		updateUser.setVersion(user.getVersion());
-		
-		timeVersionMapper.updateById(updateUser);
-		user = timeVersionMapper.selectById(1L);
-		Date version = user.getVersion();
-		System.err.println("after update: version="+version);
-		compare = version.compareTo(date);
-		System.err.println("compare="+compare);
-		Assert.assertTrue(compare>0);
-	}
-	
-}

+ 0 - 77
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/UserTestBase.java

@@ -1,77 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.After;
-import org.junit.Before;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.test.mysql.entity.User;
-import com.baomidou.mybatisplus.test.mysql.service.IUserService;
-import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.TimestampVersionUserMapper;
-import com.baomidou.mybatisplus.toolkit.IdWorker;
-
-public abstract class UserTestBase {
-
-	@Autowired
-	protected IUserService userService;
-	
-	@Autowired
-	protected TimestampVersionUserMapper timeVersionMapper;
-	
-	@Before
-	public void init(){
-//		cleanData();
-		User userA = new User();
-		userA.setId(IdWorker.getId());
-		userA.setName("junyu_shi");
-		userA.setAge(1);
-		userA.setDesc("测试一把");
-		userA.setTestType(1);
-		userA.setVersion(1);
-		userService.insert(userA);
-		long id = IdWorker.getId();
-		userA = new User(id, "abc", 18, 1);
-		userA.setVersion(1);
-		userService.insert(userA);
-		userA = new User(18);
-		userA.setVersion(1);
-		userService.insert(userA);
-		
-		List<User> ul = new ArrayList<User>();
-		/* 手动输入 ID */
-		ul.add(new User(11L, "1", 1, 0));
-		ul.add(new User(12L, "2", 2, 1));
-		ul.add(new User(13L, "3", 3, 1));
-		ul.add(new User(14L, "delname", 4, 0));
-		ul.add(new User(15L, "5", 5, 1));
-		ul.add(new User(16L, "6", 6, 0));
-		/* 测试 name test_type 填充 */
-		ul.add(new User(17L, 7));
-		ul.add(new User(18L, 8));
-		ul.add(new User(19L, 9));
-		ul.add(new User(7));
-		ul.add(new User(20L, "deleteByMap", 7, 0));
-		/* 使用 ID_WORKER 自动生成 ID */
-		ul.add(new User("8", 8, 1));
-		ul.add(new User("9", 9, 1));
-		for (User u : ul) {
-			u.setVersion(1);
-			u.setPrice(new BigDecimal("99.99"));
-			userService.insert(u);
-		}
-	}
-	
-	@After
-	public void cleanData(){
-		User user = new User();
-		user.setDesc(null);
-		EntityWrapper<User> ew = new EntityWrapper<User>(user);
-		ew.and("1=1");
-		userService.delete(ew);
-	}
-	
-}

+ 0 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/CreateDB.sql → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/CreateDB.sql


+ 119 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/OptimisticLockerInterceptorTest.java

@@ -0,0 +1,119 @@
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker;
+
+import java.io.Reader;
+import java.sql.Connection;
+import java.sql.Timestamp;
+import java.util.Date;
+
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.jdbc.ScriptRunner;
+import org.apache.ibatis.session.SqlSession;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.DateVersionUser;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.IntVersionUser;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.LongVersionUser;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.ShortVersionUser;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.TimestampVersionUser;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper.DateVersionUserMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper.IntVersionUserMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper.LongVersionUserMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper.ShortVersionUserMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper.TimestampVersionUserMapper;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = { "/plugins/optimisticLockerInterceptor.xml" })
+public class OptimisticLockerInterceptorTest {
+	@Autowired
+	private ShortVersionUserMapper shortVersionUserMapper;
+	@Autowired
+	private IntVersionUserMapper intVersionUserMapper;
+	@Autowired
+	private LongVersionUserMapper longVersionUserMapper;
+	@Autowired
+	private DateVersionUserMapper dateVersionUserMapper;
+	@Autowired
+	private TimestampVersionUserMapper timestampVersionUserMapper;
+	@Autowired
+	private SqlSessionTemplate sqlSessionTemplate;
+
+	@Before
+	public void setUp() throws Exception {
+		SqlSession session = sqlSessionTemplate.getSqlSessionFactory().openSession();
+		Connection conn = session.getConnection();
+		Reader reader = Resources.getResourceAsReader("com/baomidou/mybatisplus/test/plugins/optimisticLocker/CreateDB.sql");
+		ScriptRunner runner = new ScriptRunner(conn);
+		runner.setLogWriter(null);
+		runner.runScript(reader);
+		reader.close();
+		session.close();
+	}
+
+	@Test
+	public void shorttVersionTest() {
+		// 查询数据
+		ShortVersionUser versionUser = shortVersionUserMapper.selectById(1);
+		Short originVersion = versionUser.getVersion();
+		// 更新数据
+		versionUser.setName("苗神");
+		shortVersionUserMapper.updateById(versionUser);
+		Assert.assertTrue(versionUser.getVersion() == originVersion + 1);
+	}
+
+	@Test
+	public void intVersionTest() {
+		// 查询数据
+		IntVersionUser versionUser = intVersionUserMapper.selectById(1);
+		Integer originVersion = versionUser.getVersion();
+		// 更新数据
+		versionUser.setName("苗神");
+		intVersionUserMapper.updateById(versionUser);
+		Assert.assertTrue(versionUser.getVersion() == originVersion + 1);
+	}
+
+	@Test
+	public void longVersionTest() {
+		// 查询数据
+		LongVersionUser versionUser = longVersionUserMapper.selectById(1);
+		Long originVersion = versionUser.getVersion();
+		// 更新数据
+		versionUser.setName("苗神");
+		longVersionUserMapper.updateById(versionUser);
+		Assert.assertTrue(versionUser.getVersion() == originVersion + 1);
+	}
+
+	@Test
+	public void dateVersionTest() {
+		// 插入数据
+		DateVersionUser versionUser = new DateVersionUser();
+		versionUser.setName("苗神");
+		Date originVersion = new Date();
+		versionUser.setVersion(originVersion);
+		dateVersionUserMapper.insert(versionUser);
+		// 更新数据
+		versionUser.setName("小锅盖");
+		dateVersionUserMapper.updateById(versionUser);
+		Assert.assertTrue(versionUser.getVersion().after(originVersion));
+	}
+
+	@Test
+	public void timestampVersionTest() {
+		// 插入数据
+		TimestampVersionUser versionUser = new TimestampVersionUser();
+		versionUser.setName("苗神");
+		Timestamp originVersion = new Timestamp(new Date().getTime());
+		versionUser.setVersion(originVersion);
+		timestampVersionUserMapper.insert(versionUser);
+		// 更新数据
+		versionUser.setName("小锅盖");
+		timestampVersionUserMapper.updateById(versionUser);
+		Assert.assertTrue(versionUser.getVersion().after(originVersion));
+	}
+}

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/entity/DateVersionUser.java → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/DateVersionUser.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity;
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity;
 
 import java.io.Serializable;
 import java.util.Date;

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/entity/IntVersionUser.java → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/IntVersionUser.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity;
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity;
 
 import java.io.Serializable;
 

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/entity/LongVersionUser.java → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/LongVersionUser.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity;
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity;
 
 import java.io.Serializable;
 

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/entity/ShortVersionUser.java → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/ShortVersionUser.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity;
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity;
 
 import java.io.Serializable;
 

+ 1 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/entity/TimestampVersionUser.java → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/entity/TimestampVersionUser.java

@@ -1,4 +1,4 @@
-package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity;
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity;
 
 import java.io.Serializable;
 import java.sql.Timestamp;

+ 8 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/DateVersionUserMapper.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.DateVersionUser;
+
+public interface DateVersionUserMapper extends BaseMapper<DateVersionUser> {
+
+}

+ 8 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/IntVersionUserMapper.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.IntVersionUser;
+
+public interface IntVersionUserMapper extends BaseMapper<IntVersionUser> {
+	
+}

+ 8 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/LongVersionUserMapper.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.LongVersionUser;
+
+public interface LongVersionUserMapper extends BaseMapper<LongVersionUser> {
+
+}

+ 8 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/ShortVersionUserMapper.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.ShortVersionUser;
+
+public interface ShortVersionUserMapper extends BaseMapper<ShortVersionUser> {
+	
+}

+ 8 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mapper/TimestampVersionUserMapper.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity.TimestampVersionUser;
+
+public interface TimestampVersionUserMapper extends BaseMapper<TimestampVersionUser> {
+
+}

+ 0 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/mybatis-config.xml → mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugins/optimisticLocker/mybatis-config.xml


+ 38 - 0
mybatis-plus/src/test/resources/plugins/optimisticLockerInterceptor.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:mvc="http://www.springframework.org/schema/mvc"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
+           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
+           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
+
+	<context:component-scan base-package="com.baomidou.mybatisplus.test.mysql.plugins" />
+
+	<import resource="classpath:spring/spring-jdbc.xml" />
+
+	<!-- MyBatis SqlSessionFactoryBean 配置 -->
+	<bean id="sqlSessionFactory"
+		class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
+		<property name="dataSource" ref="dataSource" />
+		<property name="configLocation" value="classpath:mybatis-config.xml" />
+		<property name="typeAliasesPackage"
+			value="com.baomidou.mybatisplus.test.mysql.entity;com.baomidou.mybatisplus.test.plugins.optimisticLocker.entity" />
+		<property name="mapperLocations" value="classpath:mysql/*Mapper.xml" />
+		<property name="plugins">
+			<array>
+				<bean class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor" />
+				<bean class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor" />
+			</array>
+		</property>
+	</bean>
+
+	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
+		<constructor-arg index="0" ref="sqlSessionFactory" />
+	</bean>
+
+	<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
+		<property name="basePackage"
+			value="com.baomidou.mybatisplus.test.plugins.optimisticLocker.mapper" />
+	</bean>
+</beans>

+ 0 - 36
mybatis-plus/src/test/resources/spring/spring-jdbc.xml

@@ -73,40 +73,4 @@
 		<aop:advisor advice-ref="txAdvice"
 			pointcut="execution(* com.baomidou.*.service.*.*.*(..))" />
 	</aop:config>
-
-	<!-- MyBatis SqlSessionFactoryBean 配置 -->
-	<bean id="sqlSessionFactory"
-		class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
-		<property name="dataSource" ref="dataSource" />
-		<property name="configLocation" value="classpath:mybatis-config.xml" />
-		<property name="typeAliasesPackage" value="com.baomidou.mybatisplus.test.mysql.entity;com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity" />
-		<property name="mapperLocations" value="classpath:mysql/*Mapper.xml" />
-		<property name="globalConfig" ref="globalConfig" />
-		<property name="plugins">
-			<array>
-				<!-- 分页插件配置 -->
-				<bean id="paginationInterceptor"
-					class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
-					<property name="dialectType" value="mysql" />
-				</bean>
-				<bean id="optimisticLockerInterceptor"
-					class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor">
-				</bean>
-			</array>
-		</property>
-	</bean>
-	
-	    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
-        <constructor-arg index="0" ref="sqlSessionFactory"/>
-    </bean>
-
-	<!-- 注入配置 -->
-	<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
-		<property name="sqlInjector" ref="sqlInjector" />
-	</bean>
-	<bean id="sqlInjector" class="com.baomidou.mybatisplus.test.mysql.MySqlInjector" />
-
-	<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
-		<property name="basePackage" value="com.baomidou.mybatisplus.test.mysql.mapper;com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper" />
-	</bean>
 </beans>

+ 45 - 0
mybatis-plus/src/test/resources/spring/spring-mybatis.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="
+	http://www.springframework.org/schema/beans
+	http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<!-- MyBatis SqlSessionFactoryBean 配置 -->
+	<bean id="sqlSessionFactory"
+		class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
+		<property name="dataSource" ref="dataSource" />
+		<property name="configLocation" value="classpath:mybatis-config.xml" />
+		<property name="typeAliasesPackage"
+			value="com.baomidou.mybatisplus.test.mysql.entity;com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity" />
+		<property name="mapperLocations" value="classpath:mysql/*Mapper.xml" />
+		<property name="globalConfig" ref="globalConfig" />
+		<property name="plugins">
+			<array>
+				<!-- 分页插件配置 -->
+				<bean id="paginationInterceptor"
+					class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
+					<property name="dialectType" value="mysql" />
+				</bean>
+				<bean id="optimisticLockerInterceptor"
+					class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor">
+				</bean>
+			</array>
+		</property>
+	</bean>
+
+	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
+		<constructor-arg index="0" ref="sqlSessionFactory" />
+	</bean>
+
+	<!-- 注入配置 -->
+	<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
+		<property name="sqlInjector" ref="sqlInjector" />
+	</bean>
+	<bean id="sqlInjector" class="com.baomidou.mybatisplus.test.mysql.MySqlInjector" />
+
+	<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
+		<property name="basePackage"
+			value="com.baomidou.mybatisplus.test.mysql.mapper;com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper" />
+	</bean>
+</beans>

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

@@ -11,5 +11,7 @@
 
 	<mvc:default-servlet-handler />
 
-	<import resource="classpath:spring/spring-jdbc.xml"/>
+	<import resource="classpath:spring/spring-jdbc.xml" />
+	<import resource="classpath:spring/spring-mybatis.xml" />
+
 </beans>

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

@@ -10,4 +10,5 @@
 	<context:component-scan base-package="com.baomidou.mybatisplus.test.mysql" />
 
 	<import resource="classpath:spring/spring-jdbc.xml"/>
+	<import resource="classpath:spring/spring-mybatis.xml"/>
 </beans>