Browse Source

规范乐观锁基础测试

小锅盖 8 năm trước cách đây
mục cha
commit
b6f9784c57

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

@@ -0,0 +1,22 @@
+DROP TABLE
+IF EXISTS version_user;
+
+CREATE TABLE version_user (
+	id bigint (11) NOT NULL ,
+	NAME VARCHAR (20),
+	version INT (11),
+	PRIMARY KEY (`id`)
+) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
+
+DROP TABLE
+IF EXISTS time_version_user;
+
+CREATE TABLE time_version_user (
+	id bigint (11) NOT NULL ,
+	NAME VARCHAR (20),
+	version datetime,
+	PRIMARY KEY (`id`)
+) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
+
+insert into version_user (id,name,version) values(1,"zhangsan",1);
+

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

@@ -0,0 +1,45 @@
+package com.baomidou.mybatisplus.test.plugin.OptimisticLocker;
+
+import java.io.Reader;
+import java.sql.Connection;
+
+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.BeforeClass;
+import org.junit.Test;
+
+import com.baomidou.mybatisplus.MybatisSessionFactoryBuilder;
+import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity.VersionUser;
+import com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.VersionUserMapper;
+
+public class OptimisticLockerInterceptorJUnitTest {
+
+	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 baseVersion() {
+		SqlSession sqlSession = sqlSessionFactory.openSession();
+		VersionUserMapper mapper = sqlSession.getMapper(VersionUserMapper.class);
+		VersionUser versionUser = mapper.selectById(1);
+		mapper.update(versionUser, null);
+		sqlSession.close();
+	}
+
+}

+ 47 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/entity/TimeVersionUser.java

@@ -0,0 +1,47 @@
+package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.annotations.Version;
+
+@TableName("time_version_user")
+public class TimeVersionUser implements Serializable {
+
+	@TableField(exist = false)
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+
+	private String name;
+
+	@Version
+	private Date version;
+
+	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 Date getVersion() {
+		return version;
+	}
+
+	public void setVersion(Date version) {
+		this.version = version;
+	}
+
+}

+ 46 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/plugin/OptimisticLocker/entity/VersionUser.java

@@ -0,0 +1,46 @@
+package com.baomidou.mybatisplus.test.plugin.OptimisticLocker.entity;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.annotations.Version;
+
+@TableName("version_user")
+public class VersionUser implements Serializable {
+
+	@TableField(exist = false)
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+
+	private String name;
+
+	@Version
+	private Integer version;
+
+	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 getVersion() {
+		return version;
+	}
+
+	public void setVersion(Integer version) {
+		this.version = version;
+	}
+
+}

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

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

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

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

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

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-config.dtd">
+
+<configuration>
+	<plugins>
+		<plugin interceptor="com.baomidou.mybatisplus.plugins.PerformanceInterceptor"></plugin>
+		<plugin interceptor="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor"></plugin>
+	</plugins>
+
+	<environments default="development">
+		<environment id="development">
+			<transactionManager type="JDBC">
+				<property name="" value="" />
+			</transactionManager>
+			<dataSource type="UNPOOLED">
+				<property name="driver" value="com.mysql.jdbc.Driver" />
+				<property name="url" value="jdbc:mysql://localhost:3306/mybatis-plus" />
+				<property name="username" value="root" />
+				<property name="password" value="!Ty5546380" />
+			</dataSource>
+
+		</environment>
+
+	</environments>
+
+	<mappers>
+		<mapper
+			class="com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.VersionUserMapper" />
+		<mapper
+			class="com.baomidou.mybatisplus.test.plugin.OptimisticLocker.mapper.TimeVersionUserMapper" />
+	</mappers>
+
+</configuration>

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

@@ -1,54 +0,0 @@
-package com.baomidou.mybatisplus.test.plugin;
-
-import java.math.BigDecimal;
-
-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;
-
-
-@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);
-		Assert.assertEquals(1, user.getAge().intValue());
-		user.setVersion(null);
-		user.setAge(2);
-		userService.updateById(user);
-		user = userService.selectById(11);
-		Assert.assertEquals(2, user.getAge().intValue());
-		Assert.assertEquals(null, user.getVersion());
-	}
-	
-	@Test
-	public void testUpdateWithVersionControl(){
-		long userId = 12;
-		User user = userService.selectById(userId);
-		Assert.assertEquals(2, user.getAge().intValue());
-		user.setAge(3);
-		userService.updateById(user);
-		User where = new User();
-		where.setId(userId);
-		userService.update(user, new EntityWrapper<User>(where));
-		user = userService.selectById(userId);
-		Assert.assertEquals(3, user.getAge().intValue());
-		Assert.assertEquals(2, user.getVersion().intValue());
-	}
-	
-}