使用Kotlin开发Springboot项目
创建项目
选择kotlin
使用gradle
选择使用的库和Springboot版本
项目配置
和Java项目一致
项目结构
和Java项目也差不多
增删改查
先定义一个Mapper,使用@Mapper,不需要进行其他配置,比如mapper路径等。
package com.example.demo.mapper
import com.example.demo.model.vo.LoginResultVO
import org.apache.ibatis.annotations.Mapper
import org.apache.ibatis.annotations.Select
/**
* @Author : Cook
* @Date : 2024/12/27
* @Desc :
* @Version:
*/
@Mapper
interface UserMapper {
@Select("select * from users")
fun findAll(): List<LoginResultVO>
}
定义Service接口
package com.example.demo.service
import com.example.demo.model.vo.LoginResultVO
/**
* @Author : Cook
* @Date : 2024/12/27
* @Desc :
* @Version:
*/
interface UserService {
fun findAll(): List<LoginResultVO>
}
Service的实现
引用其他对象不需要用spring的注解了,只需要在构造方法里面引用就可以
package com.example.demo.service
import com.example.demo.mapper.UserMapper
import com.example.demo.model.vo.LoginResultVO
import org.springframework.stereotype.Service
/**
* @Author : Cook
* @Date : 2024/12/27
* @Desc :
* @Version:
*/
@Service
class UserServiceImpl(private val mapper: UserMapper) : UserService {
override fun findAll(): List<LoginResultVO> {
return mapper.findAll()
}
}
Control
package com.example.demo.api
import com.example.demo.model.vo.LoginResultVO
import com.example.demo.model.vo.LoginVO
import com.example.demo.service.UserService
import jakarta.servlet.http.HttpServletRequest
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
/**
* @Author : Cook
* @Date : 2024/12/27
* @Desc :
* @Version:
*/
@RestController
@RequestMapping("/user/")
class UserApi(private val userService: UserService) {
@PostMapping("findAll")
fun findAll(request: HttpServletRequest, @RequestBody(required = false) loginVO: LoginVO?): List<LoginResultVO> {
return userService.findAll()
}
}
SQL中使用脚本
和Java方式有点不同
需要@Update(("SQL语句")) 多个括号,其他都差不多
使用<script>标签
@Update(
("<script>" +
"<foreach collection='list' item= 'user' index ='id' separator=';'> " +
"update user set name = #{user.name},sex = #{user.outStoreId} where id = #{user.id}" +
"</foreach> " +
" </script>")
)
fun updateUser(userList: List<User>): Int
@Bean注解
@Bean(name = ["WeChatService"])
fun getWeChatService(): WeChatService {
return retrofitClient.create(WeChatService::class.java, WeChatService.BASE_URL)
}