当前位置: 首页 > article >正文

使用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)
    }


http://www.kler.cn/a/455593.html

相关文章:

  • Linux中sh脚本发邮件配置
  • Mono里运行C#脚本11—do_load_header_internal
  • 计算属性 简写和 完整写法
  • 探索基金聚合平台的背景与发展:Finanzen.net、Franklin Templeton、Finect
  • MySQL外键类型与应用场景总结:优缺点一目了然
  • LaTeX 是一种基于标记的排版系统,广泛用于创建高质量的文档,特别是在需要复杂数学公式、表格、文献引用等的场景中
  • Linux设置自动重启脚本
  • 流架构的读书笔记(2)
  • 「地平线」副总裁余轶南与「理想汽车」智驾产品总监赵哲伦联手创业,入局具身智能赛道!
  • 实践KDTS-WEB从mysql迁移到kingbasev9
  • 平凉大锅盔:历史与美味的交织
  • matlab客户端最新功能:使用vs code的github copilot编写mlx实时脚本文件
  • 渗透--还是tp
  • 浅谈下Spring MVC的执行流程
  • 关于SNAT、DNAT及浮动地址
  • MAC M4安装QT使用国内镜像源在线安装
  • JAVAweb學習日記(四)Maven
  • 大语言模型提示词工程
  • 基于Sentinel的服务保护方案的三种方式(请求限流、线程隔离、服务熔断)超详细讲解
  • AR 模型的功率谱
  • 优雅草央千澈-关于蓝湖如何快速的标注交互原型是如何使用的-如何使用蓝湖设计交互原型和整个软件项目的流程逻辑-实践项目详细说明
  • 卷积神经网络-三维卷积
  • 请分别从CPU、内 存、IO、⽹络的⻆度判断Linux的瓶颈?
  • 【数据库学习笔记】SQL触发器(例题+代码)
  • STM32F103RCT6学习之二:GPIO开发
  • Java 中的 7 种重试机制