使用Kotlin开发Springboot项目

ops/2024/12/29 2:00:54/

创建项目

选择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)}


http://www.ppmy.cn/ops/145796.html

相关文章

GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——行为问题、路径错误、处理程序错误

GB/T34944-2017 《Java语言源代码漏洞测试规范》标准是软件测评机构开展代码测试活动的重要依据&#xff0c;也是软件测评机构申请代码测试CNAS/CMA资质认证时依据的重要标准方法。本系列文章将带大家解读GB/T34944-2017 《Java语言源代码漏洞测试规范》&#xff0c;前面的文章…

QT集成intel RealSense 双目摄像头

最近一个小项目&#xff0c;用到了双目相机&#xff0c;选用了Intel的RealSense双目相机。功能很简单&#xff0c;就是识别某一个物体&#xff0c;然后对对这个物体进行操作。具体功能随后再说&#xff0c;这里只介绍QT如何集成IntelRealSense相机&#xff0c;就是下面这个。 首…

linux、mysql日常工作备忘录

Mysql ==mysql8远程授权访问========================================== use mysql; mysql8不再允许直接对root用户授权远程访问,需要新建一个用户。 CREATE USER root@% IDENTIFIED BY password; GRANT ALL PRIVILEGES ON *.* TO root@% WITH GRANT OPTION;mysql8数据备份=…

亚马逊云科技 | Amazon Nova:智能技术新势力

在2024年亚马逊云科技re:invent大会上&#xff0c;Amazon Nova 系列自研生成式 AI 多模态模型重磅登场&#xff0c;新一代的AI产品-Amazon Nova&#xff0c;隶属于 Amazon Bedrock&#xff0c;一共发布6款大模型&#xff0c;精准切入不同领域&#xff0c;解锁多元业务可能&…

IOS safari 播放 mp4 遇到的坎儿

起因 事情的起因是调试 IOS 手机下播放服务器接口返回的 mp4 文件流失败。对于没调试过移动端和 Safari 的我来说着实费了些功夫&#xff0c;网上和AI也没有讲明白。好在最终大概理清楚了&#xff0c;在这里整理出来供有缘人参考。 问题 因为直接用 IOS 手机的浏览器打开页面…

国标GB28181设备管理软件EasyGBS:P2P远程访问故障排查指南(设备端)

在现代安防监控系统中&#xff0c;国标GB28181协议已成为连接和管理视频监控设备的重要标准。EasyGBS作为一款遵循该协议的设备管理软件&#xff0c;为用户提供了强大的视频监控和设备管理功能。然而&#xff0c;在实际应用中&#xff0c;用户可能会遇到P2P远程访问故障的问题&…

AI Agent案例全解析:百度营销智能体(8/30)

引言&#xff1a;在当今这个科技飞速发展的时代&#xff0c;AI技术呈现出爆发式的增长&#xff0c;正以前所未有的态势改变着众多行业的发展轨迹&#xff0c;营销领域也不例外。随着市场竞争的日益激烈&#xff0c;传统营销模式逐渐显露出疲态&#xff0c;对于变革的需求愈发迫…

MinIO服务器文件复制(Windows环境Linux环境)

一、下载 Windows环境&#xff1a;https://dl.min.io/server/minio/release/windows-amd64/minio.exe Linux环境&#xff1a; > curl https://dl.min.io/client/mc/release/linux-amd64/mc \ --create-dirs \ -o $HOME/minio/mc > chmod x $HOME/minio/mc > expo…