Forráskód Böngészése

Add junit test for OptimisticLockerInterceptor

add spring junit test
yuxiaobin 8 éve
szülő
commit
21a0465c3a

+ 29 - 5
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/entity/User.java

@@ -15,14 +15,16 @@
  */
 package com.baomidou.mybatisplus.test.mysql.entity;
 
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+
 import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.annotations.Version;
 import com.baomidou.mybatisplus.enums.FieldStrategy;
 
-import java.io.Serializable;
-import java.lang.reflect.Field;
-
 /**
  * <p>
  * 测试用户类
@@ -47,6 +49,9 @@ public class User implements Serializable {
 	private String name;
 
 	private Integer age;
+	
+	/*BigDecimal 测试*/
+	private BigDecimal price;
 
 	/* 测试下划线字段命名类型, 字段填充 */
 	@TableField(value = "test_type", validate = FieldStrategy.IGNORED)
@@ -56,6 +61,9 @@ public class User implements Serializable {
 	private Role role;
 
 	private String desc = "默认描述";
+	
+	@Version
+	private Integer version;
 
 	// 或@TableField(el = "role,jdbcType=BIGINT)
 	@TableField(el = "phone, typeHandler=com.baomidou.mybatisplus.test.mysql.typehandler.PhoneTypeHandler")
@@ -117,6 +125,14 @@ public class User implements Serializable {
 		this.name = name;
 	}
 
+	public BigDecimal getPrice() {
+		return price;
+	}
+
+	public void setPrice(BigDecimal price) {
+		this.price = price;
+	}
+
 	public Integer getAge() {
 		return age;
 	}
@@ -157,10 +173,18 @@ public class User implements Serializable {
 		this.desc = desc;
 	}
 
+	public Integer getVersion() {
+		return version;
+	}
+
+	public void setVersion(Integer version) {
+		this.version = version;
+	}
+
 	@Override
 	public String toString() {
-		return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", testType=" + testType + ", role="
-				+ role + ", phone=" + phone + ", desc=" + desc + '}';
+		return "User [id=" + id + ", name=" + name + ", age=" + age + ", price=" + price + ", testType=" + testType
+				+ ", role=" + role + ", desc=" + desc + ", phone=" + phone + "]";
 	}
 
 	/**

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

@@ -17,7 +17,6 @@ package com.baomidou.mybatisplus.test.mysql.mapper;
 
 import java.util.List;
 
-import com.baomidou.mybatisplus.test.mysql.MyBaseMapper;
 import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.session.RowBounds;

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

@@ -0,0 +1,50 @@
+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.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(1, user.getVersion().intValue());
+	}
+	
+	@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 = userService.selectById(userId);
+		Assert.assertEquals(3, user.getAge().intValue());
+		Assert.assertEquals(2, user.getVersion().intValue());
+	}
+	
+}

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

@@ -0,0 +1,73 @@
+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.toolkit.IdWorker;
+
+public abstract class UserTestBase {
+
+	@Autowired
+	protected IUserService userService;
+	
+	@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);
+		ew.and("1=1");
+		userService.delete(ew);
+	}
+	
+}

+ 2 - 0
mybatis-plus/src/test/resources/mysql/mysql.sql

@@ -66,6 +66,8 @@ CREATE TABLE `user` (
   `role` bigint(20) DEFAULT NULL,
   `phone` varchar(64) COLLATE utf8_bin DEFAULT NULL,
   `desc` varchar(255) COLLATE utf8_bin DEFAULT NULL,
+  `price` DECIMAL(10,2) NULL DEFAULT NULL,
+  `version` INT(5) NULL DEFAULT NULL,
   PRIMARY KEY (`test_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用户表';
 

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

@@ -89,6 +89,9 @@
 					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>

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

@@ -0,0 +1,13 @@
+<?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" />
+
+	<import resource="classpath:spring/spring-jdbc.xml"/>
+</beans>