创建项目
选择kotlin
使用gradle
选择使用的库和Springboot版本
项目配置
和Java项目一致
项目结构
和Java项目也差不多
增删改查
先定义一个Mapper,使用@Mapper,不需要进行其他配置,比如mapper路径等。
package com.example.demo.mapperimport 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.serviceimport 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.serviceimport 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.apiimport 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)}