فهرست منبع

调整Kotlin单元测试.

nieqiurong 2 ماه پیش
والد
کامیت
4a05e6236a

+ 50 - 0
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/KtTestConfig.kt

@@ -0,0 +1,50 @@
+package com.baomidou.mybatisplus.test.h2
+
+import com.baomidou.mybatisplus.core.MybatisConfiguration
+import com.baomidou.mybatisplus.core.config.GlobalConfig
+import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean
+import com.baomidou.mybatisplus.test.h2.config.DBConfig
+import org.apache.ibatis.session.ExecutorType
+import org.apache.ibatis.session.SqlSessionFactory
+import org.apache.ibatis.type.EnumOrdinalTypeHandler
+import org.apache.ibatis.type.JdbcType
+import org.mybatis.spring.annotation.MapperScan
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.ComponentScan
+import org.springframework.context.annotation.Configuration
+import org.springframework.context.annotation.Import
+import javax.sql.DataSource
+
+/**
+ * @author nieqiurong
+ */
+@Configuration
+@Import(DBConfig::class)
+@ComponentScan("com.baomidou.mybatisplus.test.h2.kotlin")
+@MapperScan("com.baomidou.mybatisplus.test.h2.kotlin.mapper")
+open class KtTestConfig {
+
+    @Bean("sqlSessionFactory")
+    open fun sqlSessionFactory(dataSource: DataSource): SqlSessionFactory? {
+        val sqlSessionFactory = MybatisSqlSessionFactoryBean()
+        sqlSessionFactory.setDataSource(dataSource)
+        val configuration = MybatisConfiguration()
+        configuration.jdbcTypeForNull = JdbcType.NULL
+        configuration.isMapUnderscoreToCamelCase = true
+        configuration.defaultExecutorType = ExecutorType.REUSE
+        configuration.setDefaultEnumTypeHandler(EnumOrdinalTypeHandler::class.java) //默认枚举处理
+        sqlSessionFactory.configuration = configuration
+        val mybatisPlusInterceptor = MybatisPlusInterceptor()
+        mybatisPlusInterceptor.addInnerInterceptor(PaginationInnerInterceptor())
+        sqlSessionFactory.setPlugins(mybatisPlusInterceptor)
+        val globalConfig = GlobalConfig()
+        globalConfig.setMetaObjectHandler(MyMetaObjectHandler())
+        globalConfig.setSqlInjector(DefaultSqlInjector())
+        sqlSessionFactory.setGlobalConfig(globalConfig)
+        return sqlSessionFactory.getObject()
+    }
+
+}

+ 110 - 0
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/MetaObjectHandlerTest.kt

@@ -0,0 +1,110 @@
+package com.baomidou.mybatisplus.test.h2
+
+import com.baomidou.mybatisplus.annotation.FieldFill
+import com.baomidou.mybatisplus.annotation.TableField
+import com.baomidou.mybatisplus.core.MybatisConfiguration
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
+import com.baomidou.mybatisplus.core.metadata.TableInfoHelper
+import org.apache.ibatis.builder.MapperBuilderAssistant
+import org.apache.ibatis.reflection.MetaObject
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
+import java.math.BigDecimal
+import java.math.BigInteger
+import java.sql.Time
+import java.sql.Timestamp
+import java.time.LocalDate
+import java.time.LocalDateTime
+import java.util.*
+
+/**
+ *
+ * @author nieqiurong
+ */
+class MetaObjectHandlerTest {
+
+    @Test
+    fun println() {
+        val clzs = arrayOf(
+            String::class, Long::class, Int::class, Double::class, Float::class,
+            Short::class, Byte::class, Boolean::class, Date::class,
+            Time::class,
+            Timestamp::class, java.sql.Date::class, LocalDate::class, LocalDateTime::class, BigInteger::class,
+            BigDecimal::class, BigInteger::class
+        )
+        for (clz in clzs) {
+            println("kotlinType:" + clz.simpleName + "----->" + "JavaObjectType:" + clz.javaObjectType.name + "---->" + "JavaType:" + clz.java.name)
+        }
+    }
+
+    @Test
+    fun test() {
+        val configuration = MybatisConfiguration()
+        val mapperBuilderAssistant = MapperBuilderAssistant(configuration, "")
+        val tableInfo = TableInfoHelper.initTableInfo(mapperBuilderAssistant, Demo::class.java)
+        for (tableFieldInfo in tableInfo.fieldList) {
+            println(tableFieldInfo.property + "----->" + tableFieldInfo.propertyType.name)
+        }
+        val demo = Demo()
+        val metaObjectHandler = object : MetaObjectHandler {
+            override fun insertFill(metaObject: MetaObject) {
+                this.strictInsertFill(metaObject, "testString", String::class.java, "123")
+                this.strictInsertFill(metaObject, "testLong", Long::class.javaObjectType, 123456L)
+                this.strictInsertFill(metaObject, "testInt", Int::class.javaObjectType, 123)
+                this.strictInsertFill(
+                    metaObject,
+                    "testLocalDateTime",
+                    LocalDateTime::class.javaObjectType,
+                    LocalDateTime.now()
+                )
+                this.strictInsertFill(metaObject, "testBoolean", Boolean::class.javaObjectType, false)
+                this.strictInsertFill(metaObject, "testDate", Date::class.javaObjectType, Date())
+                this.strictInsertFill(metaObject, "testLocalDate", LocalDate::class.javaObjectType, LocalDate.now())
+            }
+
+            override fun updateFill(metaObject: MetaObject) {
+
+            }
+        }
+        val metaObject: MetaObject = configuration.newMetaObject(demo)
+        metaObjectHandler.insertFill(metaObject)
+        Assertions.assertNotNull(demo.testString)
+        Assertions.assertNotNull(demo.testInt)
+        Assertions.assertNotNull(demo.testLong)
+        Assertions.assertNotNull(demo.testDate)
+        Assertions.assertNotNull(demo.testLocalDateTime)
+        Assertions.assertNotNull(demo.testBoolean)
+        Assertions.assertNotNull(demo.testLocalDate)
+        println(demo)
+    }
+
+}
+
+class Demo {
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    var testString: String? = null
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    var testInt: Int? = null
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    var testLong: Long? = null
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    var testDate: Date? = null
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    var testLocalDateTime: LocalDateTime? = null
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    var testBoolean: Boolean? = null
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    var testLocalDate: LocalDate? = null
+
+    override fun toString(): String {
+        return "Demo(testBoolean=$testBoolean, testString=$testString, testInt=$testInt, testLong=$testLong, testDate=$testDate, testLocalDateTime=$testLocalDateTime, testLocalDate=$testLocalDate)"
+    }
+
+}

+ 20 - 0
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/MyMetaObjectHandler.kt

@@ -0,0 +1,20 @@
+package com.baomidou.mybatisplus.test.h2
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
+import org.apache.ibatis.reflection.MetaObject
+import java.time.LocalDateTime
+
+/**
+ * @author nieqiurong
+ */
+class MyMetaObjectHandler : MetaObjectHandler {
+
+    override fun insertFill(metaObject: MetaObject) {
+        this.strictInsertFill(metaObject, "createdDt", LocalDateTime::class.javaObjectType, LocalDateTime.now())
+    }
+
+    override fun updateFill(metaObject: MetaObject) {
+        this.strictUpdateFill(metaObject, "lastUpdatedDt", LocalDateTime::class.javaObjectType, LocalDateTime.now())
+    }
+
+}

+ 37 - 4
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/KtH2UserTest.kt → mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/kotlin/KtH2UserTest.kt

@@ -1,8 +1,9 @@
-package com.baomidou.mybatisplus.test.h2
+package com.baomidou.mybatisplus.test.h2.kotlin
 
 
-import com.baomidou.mybatisplus.test.h2.entity.KtH2User
+import com.baomidou.mybatisplus.test.h2.KtTestConfig
+import com.baomidou.mybatisplus.test.h2.kotlin.entity.KtH2User
 import com.baomidou.mybatisplus.test.h2.enums.AgeEnum
 import com.baomidou.mybatisplus.test.h2.enums.AgeEnum
-import com.baomidou.mybatisplus.test.h2.service.KtH2UserService
+import com.baomidou.mybatisplus.test.h2.kotlin.service.KtH2UserService
 import org.junit.jupiter.api.Assertions
 import org.junit.jupiter.api.Assertions
 import org.junit.jupiter.api.Test
 import org.junit.jupiter.api.Test
 import org.junit.jupiter.api.extension.ExtendWith
 import org.junit.jupiter.api.extension.ExtendWith
@@ -17,12 +18,44 @@ import org.springframework.test.context.junit.jupiter.SpringExtension
  * @since 2020/10/18
  * @since 2020/10/18
  */
  */
 @ExtendWith(SpringExtension::class)
 @ExtendWith(SpringExtension::class)
-@ContextConfiguration(locations = ["classpath:h2/spring-test-h2.xml"])
+@ContextConfiguration(classes = [KtTestConfig::class])
 class KtH2UserTest {
 class KtH2UserTest {
+
     @Autowired
     @Autowired
     private lateinit var userService: KtH2UserService
     private lateinit var userService: KtH2UserService
 
 
 
 
+    @Test
+    fun testSave() {
+        val user = KtH2User()
+        user.age = AgeEnum.ONE
+        user.name = "Demo"
+        userService.save(user)
+        Assertions.assertNotNull(user.createdDt)
+    }
+
+    @Test
+    fun testUpdate() {
+        val user = KtH2User()
+        user.age = AgeEnum.ONE
+        user.name = "Demo"
+        userService.save(user)
+        user.name = "Update"
+        userService.updateById(user)
+        Assertions.assertNotNull(user.lastUpdatedDt)
+    }
+
+    @Test
+    fun testDelete() {
+        val user = KtH2User()
+        user.age = AgeEnum.ONE
+        user.name = "Delete"
+        userService.save(user)
+        userService.removeById(user)
+        Assertions.assertNull(userService.getById(user.testId))
+    }
+
+
     @Test
     @Test
     fun testServiceImplInnerKtChain() {
     fun testServiceImplInnerKtChain() {
         var tomcat = userService.ktQuery().eq(KtH2User::name, "Tomcat").one()
         var tomcat = userService.ktQuery().eq(KtH2User::name, "Tomcat").one()

+ 12 - 5
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/entity/KtH2User.kt → mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/kotlin/entity/KtH2User.kt

@@ -1,16 +1,17 @@
-package com.baomidou.mybatisplus.test.h2.entity
+package com.baomidou.mybatisplus.test.h2.kotlin.entity
 
 
-import com.baomidou.mybatisplus.annotation.TableField
-import com.baomidou.mybatisplus.annotation.TableLogic
-import com.baomidou.mybatisplus.annotation.TableName
-import com.baomidou.mybatisplus.annotation.Version
+import com.baomidou.mybatisplus.annotation.*
 import com.baomidou.mybatisplus.test.h2.enums.AgeEnum
 import com.baomidou.mybatisplus.test.h2.enums.AgeEnum
 import java.math.BigDecimal
 import java.math.BigDecimal
+import java.time.LocalDateTime
 import java.util.*
 import java.util.*
 
 
 @TableName("h2user")
 @TableName("h2user")
 class KtH2User {
 class KtH2User {
 
 
+    @TableId
+    var testId: Long? = null
+
     var name: String? = null
     var name: String? = null
 
 
     var age: AgeEnum? = null
     var age: AgeEnum? = null
@@ -31,4 +32,10 @@ class KtH2User {
     @TableLogic
     @TableLogic
     val deleted: Int? = null
     val deleted: Int? = null
 
 
+    @TableField(fill = FieldFill.INSERT)
+    var createdDt: LocalDateTime? = null
+
+    @TableField(fill = FieldFill.UPDATE)
+    var lastUpdatedDt: LocalDateTime? = null
+
 }
 }

+ 9 - 0
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/kotlin/mapper/KtUserMapper.kt

@@ -0,0 +1,9 @@
+package com.baomidou.mybatisplus.test.h2.kotlin.mapper
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper
+import com.baomidou.mybatisplus.test.h2.kotlin.entity.KtH2User
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface KtUserMapper : BaseMapper<KtH2User> {
+}

+ 7 - 0
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/kotlin/service/KtH2UserService.kt

@@ -0,0 +1,7 @@
+package com.baomidou.mybatisplus.test.h2.kotlin.service
+
+import com.baomidou.mybatisplus.extension.service.IService
+import com.baomidou.mybatisplus.test.h2.kotlin.entity.KtH2User
+
+interface KtH2UserService : IService<KtH2User> {
+}

+ 12 - 0
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/kotlin/service/impl/KtH2UserServiceImpl.kt

@@ -0,0 +1,12 @@
+package com.baomidou.mybatisplus.test.h2.kotlin.service.impl
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
+import com.baomidou.mybatisplus.test.h2.kotlin.entity.KtH2User
+import com.baomidou.mybatisplus.test.h2.kotlin.mapper.KtUserMapper
+import com.baomidou.mybatisplus.test.h2.kotlin.service.KtH2UserService
+import org.springframework.stereotype.Service
+
+@Service
+class KtH2UserServiceImpl : ServiceImpl<KtUserMapper, KtH2User>(), KtH2UserService {
+
+}

+ 0 - 7
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/mapper/KtUserMapper.kt

@@ -1,7 +0,0 @@
-package com.baomidou.mybatisplus.test.h2.mapper
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper
-import com.baomidou.mybatisplus.test.h2.entity.KtH2User
-
-interface KtUserMapper : BaseMapper<KtH2User> {
-}

+ 0 - 7
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/service/KtH2UserService.kt

@@ -1,7 +0,0 @@
-package com.baomidou.mybatisplus.test.h2.service
-
-import com.baomidou.mybatisplus.extension.service.IService
-import com.baomidou.mybatisplus.test.h2.entity.KtH2User
-
-interface KtH2UserService : IService<KtH2User> {
-}

+ 0 - 12
mybatis-plus/src/test/kotlin/com/baomidou/mybatisplus/test/h2/service/impl/KtH2UserServiceImpl.kt

@@ -1,12 +0,0 @@
-package com.baomidou.mybatisplus.test.h2.service.impl
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
-import com.baomidou.mybatisplus.test.h2.entity.KtH2User
-import com.baomidou.mybatisplus.test.h2.mapper.KtUserMapper
-import com.baomidou.mybatisplus.test.h2.service.KtH2UserService
-import org.springframework.stereotype.Service
-
-@Service
-class KtH2UserServiceImpl : ServiceImpl<KtUserMapper, KtH2User>(), KtH2UserService {
-
-}