fix: mybatis plus and kotlinx LocalDateTime

This commit is contained in:
server_main
2026-08-18 06:41:50 +00:00
parent bb3df45b9f
commit a1bcde0a37
5 changed files with 60 additions and 5 deletions
+3
View File
@@ -13,5 +13,8 @@
</list> </list>
</option> </option>
</inspection_tool> </inspection_tool>
<inspection_tool class="ShellCheck" enabled="true" level="ERROR" enabled_by_default="true">
<shellcheck_settings value="SC2317" />
</inspection_tool>
</profile> </profile>
</component> </component>
@@ -0,0 +1,49 @@
package club.itstudio.itmanager.mapper.typehandler
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.toJavaLocalDateTime
import kotlinx.datetime.toKotlinLocalDateTime
import org.apache.ibatis.type.BaseTypeHandler
import org.apache.ibatis.type.JdbcType
import org.apache.ibatis.type.MappedJdbcTypes
import org.apache.ibatis.type.MappedTypes
import java.sql.CallableStatement
import java.sql.PreparedStatement
import java.sql.ResultSet
@MappedTypes(LocalDateTime::class)
@MappedJdbcTypes(JdbcType.TIMESTAMP)
class TimeTypeHandler : BaseTypeHandler<LocalDateTime>() {
override fun setNonNullParameter(
ps: PreparedStatement,
i: Int,
parameter: LocalDateTime,
jdbcType: JdbcType?
) {
ps.setObject(i, parameter.toJavaLocalDateTime())
}
override fun getNullableResult(
rs: ResultSet,
columnName: String
): LocalDateTime? =
rs.getTimestamp(columnName)
?.toLocalDateTime()
?.toKotlinLocalDateTime()
override fun getNullableResult(
rs: ResultSet,
columnIndex: Int
): LocalDateTime? =
rs.getTimestamp(columnIndex)
?.toLocalDateTime()
?.toKotlinLocalDateTime()
override fun getNullableResult(
cs: CallableStatement,
columnIndex: Int
): LocalDateTime? =
cs.getTimestamp(columnIndex)
?.toLocalDateTime()
?.toKotlinLocalDateTime()
}
@@ -3,13 +3,13 @@ package club.itstudio.itmanager.service.impl
import club.itstudio.itmanager.entity.dto.FinanceRecord import club.itstudio.itmanager.entity.dto.FinanceRecord
import club.itstudio.itmanager.mapper.FinanceRecordMapper import club.itstudio.itmanager.mapper.FinanceRecordMapper
import club.itstudio.itmanager.service.FinanceRecordService import club.itstudio.itmanager.service.FinanceRecordService
import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper
import com.baomidou.mybatisplus.extension.plugins.pagination.Page import com.baomidou.mybatisplus.extension.plugins.pagination.Page
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import reactor.core.publisher.Mono import reactor.core.publisher.Mono
import reactor.core.scheduler.Schedulers import reactor.core.scheduler.Schedulers
import java.util.NoSuchElementException
@Service @Service
class FinanceRecordServiceImpl : ServiceImpl<FinanceRecordMapper, FinanceRecord>(), FinanceRecordService { class FinanceRecordServiceImpl : ServiceImpl<FinanceRecordMapper, FinanceRecord>(), FinanceRecordService {
@@ -36,7 +36,7 @@ class FinanceRecordServiceImpl : ServiceImpl<FinanceRecordMapper, FinanceRecord>
): Mono<Page<FinanceRecord>> = ): Mono<Page<FinanceRecord>> =
blockingCall { blockingCall {
logger.info("Paging finance records") logger.info("Paging finance records")
val wrapper = ktQuery() val wrapper = KtQueryWrapper(FinanceRecord())
if (!keyword.isNullOrBlank()) { if (!keyword.isNullOrBlank()) {
wrapper.and { wrapper.and {
it.like(FinanceRecord::recordNo, keyword) it.like(FinanceRecord::recordNo, keyword)
@@ -3,13 +3,13 @@ package club.itstudio.itmanager.service.impl
import club.itstudio.itmanager.entity.dto.Item import club.itstudio.itmanager.entity.dto.Item
import club.itstudio.itmanager.mapper.ItemMapper import club.itstudio.itmanager.mapper.ItemMapper
import club.itstudio.itmanager.service.ItemService import club.itstudio.itmanager.service.ItemService
import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper
import com.baomidou.mybatisplus.extension.plugins.pagination.Page import com.baomidou.mybatisplus.extension.plugins.pagination.Page
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import reactor.core.publisher.Mono import reactor.core.publisher.Mono
import reactor.core.scheduler.Schedulers import reactor.core.scheduler.Schedulers
import java.util.NoSuchElementException
@Service @Service
class ItemServiceImpl : ServiceImpl<ItemMapper, Item>(), ItemService { class ItemServiceImpl : ServiceImpl<ItemMapper, Item>(), ItemService {
@@ -22,7 +22,7 @@ class ItemServiceImpl : ServiceImpl<ItemMapper, Item>(), ItemService {
override fun pageItems(page: Page<Item>, keyword: String?, status: String?): Mono<Page<Item>> = override fun pageItems(page: Page<Item>, keyword: String?, status: String?): Mono<Page<Item>> =
blockingCall { blockingCall {
logger.info("Paging items with keyword and status") logger.info("Paging items with keyword and status")
val wrapper = ktQuery() val wrapper = KtQueryWrapper(Item())
if (!keyword.isNullOrBlank()) { if (!keyword.isNullOrBlank()) {
wrapper.and { wrapper.and {
it.like(Item::name, keyword).or().like(Item::code, keyword) it.like(Item::name, keyword).or().like(Item::code, keyword)
@@ -37,6 +37,9 @@ spring:
#username: root #username: root
#password: 123456 #password: 123456
mybatis-plus:
type-handlers-package: club.itstudio.itmanager.mapper.typehandler
app: app:
flow-limit: flow-limit:
count: 1000 count: 1000