Browse Source

配置文件错误, 暂时仍然兼容jdk5,增加web下测试

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

+ 6 - 8
mybatis-plus/src/main/java/com/baomidou/mybatisplus/plugins/OptimisticLockerInterceptor.java

@@ -188,9 +188,9 @@ public final class OptimisticLockerInterceptor implements Interceptor {
 		// 这一句可以全局一个 TODO
 		ParameterMapping parameterMapping = new ParameterMapping.Builder(configuration, "originVersionValue", new UnknownTypeHandler(configuration.getTypeHandlerRegistry()))
 				.build();
-		List<ParameterMapping> parameterMappings = new LinkedList<>(originBoundSql.getParameterMappings());
+		List<ParameterMapping> parameterMappings = new LinkedList<ParameterMapping>(originBoundSql.getParameterMappings());
 		parameterMappings.add(parse.getExpressions().size(), parameterMapping);
-		Map<String, Object> additionalParameters = new HashMap<>();
+		Map<String, Object> additionalParameters = new HashMap<String, Object>();
 		additionalParameters.put("originVersionValue", versionValue);
 		return new MySqlSource(configuration, parse.toString(), parameterMappings, additionalParameters);
 	}
@@ -261,7 +261,6 @@ public final class OptimisticLockerInterceptor implements Interceptor {
 			this.additionalParameters = additionalParameters;
 		}
 
-		@Override
 		public BoundSql getBoundSql(Object parameterObject) {
 			BoundSql boundSql = new BoundSql(configuration, sql, parameterMappings, parameterObject);
 			if (additionalParameters != null && additionalParameters.size() > 0) {
@@ -276,21 +275,20 @@ public final class OptimisticLockerInterceptor implements Interceptor {
 	// *****************************基本类型处理器*****************************
 
 	private static class ShortTypeHnadler implements VersionHandler<Short> {
-		@Override
 		public void plusVersion(Object paramObj, Field field, Short versionValue) throws Exception {
 			field.set(paramObj, (short) (versionValue + 1));
 		}
 	}
 
 	private static class IntegerTypeHnadler implements VersionHandler<Integer> {
-		@Override
+
 		public void plusVersion(Object paramObj, Field field, Integer versionValue) throws Exception {
 			field.set(paramObj, versionValue + 1);
 		}
 	}
 
 	private static class LongTypeHnadler implements VersionHandler<Long> {
-		@Override
+
 		public void plusVersion(Object paramObj, Field field, Long versionValue) throws Exception {
 			field.set(paramObj, versionValue + 1);
 		}
@@ -299,14 +297,14 @@ public final class OptimisticLockerInterceptor implements Interceptor {
 
 	// ***************************** 时间类型处理器*****************************
 	private static class DateTypeHandler implements VersionHandler<Date> {
-		@Override
+
 		public void plusVersion(Object paramObj, Field field, Date versionValue) throws Exception {
 			field.set(paramObj, new Date());
 		}
 	}
 
 	private static class TimestampTypeHandler implements VersionHandler<Timestamp> {
-		@Override
+
 		public void plusVersion(Object paramObj, Field field, Timestamp versionValue) throws Exception {
 			field.set(paramObj, new Timestamp(new Date().getTime()));
 		}

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

@@ -0,0 +1,69 @@
+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);
+	}
+
+}

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

@@ -0,0 +1,8 @@
+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> {
+
+}

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

@@ -0,0 +1,13 @@
+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 {
+
+}

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

@@ -69,7 +69,7 @@ public abstract class UserTestBase {
 	public void cleanData(){
 		User user = new User();
 		user.setDesc(null);
-		EntityWrapper<User> ew = new EntityWrapper<>(user);
+		EntityWrapper<User> ew = new EntityWrapper<User>(user);
 		ew.and("1=1");
 		userService.delete(ew);
 	}

+ 4 - 107
mybatis-plus/src/test/resources/spring/spring-jdbc.xml

@@ -95,113 +95,10 @@
 			</array>
 		</property>
 	</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>
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
-	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
-	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-4.0.xsd
-	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
-	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
-	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
-
-	<!-- 加载配置文件 -->
-	<context:property-placeholder location="classpath:properties/jdbc.properties" />
-
-	<!-- 数据库连接池 -->
-	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
-		destroy-method="close">
-		<property name="url" value="${jdbc.url}" />
-		<property name="username" value="${jdbc.username}" />
-		<property name="password" value="${jdbc.password}" />
-		<property name="driverClassName" value="${jdbc.driver}" />
-		<!-- 初始化连接大小 -->
-		<property name="initialSize" value="0" />
-		<!-- 连接池最大使用连接数量 -->
-		<property name="maxActive" value="20" />
-		<!-- 连接池最大空闲 -->
-		<property name="maxIdle" value="20" />
-		<!-- 连接池最小空闲 -->
-		<property name="minIdle" value="0" />
-		<!-- 获取连接最大等待时间 -->
-		<property name="maxWait" value="60000" />
-		<property name="validationQuery" value="${validationQuery}" />
-		<property name="testOnBorrow" value="false" />
-		<property name="testOnReturn" value="false" />
-		<property name="testWhileIdle" value="true" />
-		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
-		<property name="timeBetweenEvictionRunsMillis" value="60000" />
-		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
-		<property name="minEvictableIdleTimeMillis" value="25200000" />
-		<!-- 打开removeAbandoned功能 -->
-		<property name="removeAbandoned" value="true" />
-		<!-- 1800秒,也就是30分钟 -->
-		<property name="removeAbandonedTimeout" value="1800" />
-		<!-- 关闭abanded连接时输出错误日志 -->
-		<property name="logAbandoned" value="true" />
-		<!-- 监控数据库 -->
-		<property name="filters" value="stat" />
-	</bean>
-
-	<!-- 事务管理器 -->
-	<bean id="transactionManager"
-		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
-		<!-- 数据源 -->
-		<property name="dataSource" ref="dataSource" />
-	</bean>
-
-	<!-- 通知 -->
-	<tx:advice id="txAdvice" transaction-manager="transactionManager">
-		<tx:attributes>
-			<!-- 传播行为 -->
-			<tx:method name="save*" propagation="REQUIRED" />
-			<tx:method name="insert*" propagation="REQUIRED" />
-			<tx:method name="add*" propagation="REQUIRED" />
-			<tx:method name="create*" propagation="REQUIRED" />
-			<tx:method name="delete*" propagation="REQUIRED" />
-			<tx:method name="update*" propagation="REQUIRED" />
-			<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
-			<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
-			<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
-		</tx:attributes>
-	</tx:advice>
-	<!-- 切面 -->
-	<aop:config>
-		<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">