Kotlin在进行后端开发中一些注意事项

发布时间 2023-04-20 22:45:34作者: loveletters

前言

我们通过kotlin在进行后端开发的时候,大部分时候可以直接调用java的方法,但是有时候会因为各种原因不能够直接使用。本文旨在记录一下,我在使用kotlin进行后端开发中遇到的一些问题。

@Slf4j

我们在平时java开发中经常会用到一个lombok提供的注解@Slf4j,来帮我们快速生成log对象记录日志,但是在kotlin中lombok是不能使用的,我们需要自己定义一个这样的注解来实现功能

@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class Slf4j{
    companion object{
        val <reified T> T.log: Logger
            inline get() = LoggerFactory.getLogger(T::class.java)
    }
}

SpringMVC中@RequestBody

在java中 @RequestBody注解中我们可以通过添加required=false注解来标识可以不传递这个参数,但是在kotlin中我们需要通过可空类型 ? 来标识。

 fun list(
        pageParams: PageParams,
        @RequestBody queryCourseParamsDto: QueryCourseParamsDto?
    ): PageResult<CourseBase> {
        TODO 
    }

MyBatis-Plus中LambdaQueryWrapper

在kotlin中不能直接使用LambdaQueryWrapper,而要使用KtQueryWrapper
例如:

        val queryWrapper = KtQueryWrapper(CourseBase())
        queryWrapper.like(StringUtils.isNotEmpty(courseParamsDto.courseName),CourseBase::name,courseParamsDto.courseName)

        queryWrapper.eq(StringUtils.isNotEmpty(courseParamsDto.auditStatus),CourseBase::auditStatus,courseParamsDto.auditStatus)

        queryWrapper.eq(StringUtils.isNotEmpty(courseParamsDto.publishStatus),CourseBase::status,courseParamsDto.publishStatus)