Kotlin整合Spring Boot实现数据库增删改查(spring data jpa版)

Kotlin + Spring Boot 实用指南:十几条落地经验与踩坑记录 Kotlin作为JVM上的现代语言,凭借空安全、数据类、协程等特性,正在改变Spring Boot后端的开发方式。Spring Framework从5.0起就提供了官方支持,但很多开发者仍习惯把Java代码逐行翻译成Kotlin,导致代码充满Java味。掌握Kotlin的惯用写法,能让依赖注入、数据建模、接口实现更加简洁安全。本文从环境准备、项目骨架入手,逐步拆解Controller的构造函数注入与suspend fun、数据层的JPA与R2DBC选择、Flow的适用边界、配置绑定与JSON序列化注意事项, 阅读详情

接上次的kotlin整合spring boot的mybatis版本,这次分享的内容也很精彩,现在spring data jpa也慢慢流行起来了,因此学习kotlin的时候也顺带写了spring data jpa版本的,下面就直接上代码分享给大家了

1 pom加入如下配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2 springboot的主配置文件(配置数据源、日志、jpa)
server.port=8089
#DataBase DataSources
spring.datasource.url = jdbc:mysql://localhost:3306/debugxwz
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10



logging.level.com.debug=debug

# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
#[org.hibernate.cfg.ImprovedNamingStrategy  #org.hibernate.cfg.DefaultNamingStrategy]
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
3 实体Entity

package com.debug.pojo

import javax.persistence.Entity
import javax.persistence.Table
import javax.persistence.GenerationType
import javax.persistence.GeneratedValue
import javax.persistence.Id

@Entity
@Table(name = "user")
data class UserInfo (
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	val id:Int?=null,
	val name:String?=null,
	val address:String?=null
)
4 DAO或Repository(CRUDRepository、PagingAndSortingRepository都可,根据实际需要选择)
package com.debug.dao

import com.debug.pojo.UserInfo
import org.springframework.data.repository.PagingAndSortingRepository
import org.springframework.data.repository.query.Param
import org.springframework.data.jpa.repository.Query
import org.springframework.data.jpa.repository.Modifying


interface UserDao:PagingAndSortingRepository<UserInfo, Integer> {
    //根据id获取用户信息
    fun findById(id: Int): UserInfo
	
    @Query("select m from UserInfo m where m.name like %:name%")
    fun getUserInfoByName(@Param("name") name:String):List<UserInfo>
	
    @Modifying
    @Query("update UserInfo m set m.name=:name where m.id=:id")
    fun updateMemberById(@Param("name")name:String,@Param("id")id:Int) 
   
    @Modifying
    @Query("delete from UserInfo m  where m.id=:id")
    fun deleteMemberById(@Param("id")id:Int) 
	
}
5  service层

package com.debug.service

import com.debug.pojo.UserInfo
import org.springframework.transaction.annotation.Transactional
import org.springframework.transaction.annotation.Propagation
import org.springframework.data.repository.query.Param

interface IUserService {
	
	fun findUserById(userId: Int): UserInfo
	fun getUserInfoByName(name:String):List<UserInfo>
	fun updateMemberById(name:String,id:Int)
	fun deleteMemberById(id:Int) 
	
	
}

package com.debug.service.impl

import com.debug.service.IUserService
import javax.annotation.Resource
import com.debug.pojo.UserInfo
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import javafx.scene.control.Pagination
import org.springframework.transaction.annotation.Propagation
import com.debug.dao.UserDao

@Service(value="userSrvice")
open class UserService:IUserService{
	@Resource
    lateinit var userDao:UserDao
	
	override fun findUserById(userId: Int):UserInfo{
		return userDao.findById(userId)
	}
	
	override fun getUserInfoByName(name:String):List<UserInfo>{
		return userDao.getUserInfoByName(name)
	}
	@Transactional(propagation=Propagation.REQUIRED)
	override fun updateMemberById(name:String,id:Int){
		return userDao.updateMemberById(name,id)
	}
	@Transactional(propagation=Propagation.REQUIRED)
	override fun deleteMemberById(id:Int) {
		return userDao.deleteMemberById(id)
	}
	
}

service层要注意处理下事务否则调用时会报错

6  controller的代码

package com.debug.controller

import org.springframework.web.bind.annotation.RestController
import javax.annotation.Resource
import com.debug.service.IUserService
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.ResponseBody
import com.debug.pojo.UserInfo
import javax.servlet.http.HttpServletRequest
import com.debug.service.impl.UserService


@RestController
class UserController {
	
    @Resource
    lateinit var userService: IUserService;
	
    @RequestMapping("/getById")
    @ResponseBody
    fun getUserById(req:HttpServletRequest):UserInfo {
	val id:Int=Integer.parseInt(req.getParameter("id"))
        val info:UserInfo=userService.findUserById(id)
        return info
    }
    @RequestMapping("/getUserInfoByName")
    @ResponseBody
    fun getUserInfoByName(req:HttpServletRequest):List<UserInfo> {
	val name:String=req.getParameter("name")
        val info:List<UserInfo> =userService.getUserInfoByName(name)
        return info
    }
	
    @RequestMapping("/updateMemberById")
    @ResponseBody
    fun updateMemberById(req:HttpServletRequest):String {
	val name:String=req.getParameter("name")
	val id:Int=Integer.parseInt(req.getParameter("id"))
        userService.updateMemberById(name,id);
        return "数据修改成功"
    }
	
    @RequestMapping("/deleteMemberById")
    @ResponseBody
    fun deleteMemberById(req:HttpServletRequest):String {
	
	val id:Int=Integer.parseInt(req.getParameter("id"))
        userService.deleteMemberById(id);
        return "数据删除成功"
    }
	
	
}
至此所有的代码编写完成

Kotlin编程基础教程:数据库编程入门 作者:禅与计算机程序设计艺术 1.背景介绍 在Kotlin编程中,经常需要用到数据库进行数据存储、检索和更新等功能。作为一名资深技术专家、程序员和软件系统架构师,我认为无论什么语言和数据库,都可以从以下几个方面入手学习并掌握Kotlin的数据库编程知识: 了解Kotlin中 阅读详情

相关推荐

Maven+SpringBoot+JPA单表增删改查实例

本项目使用Maven+SpringBoot+springDataJPA,实现单表的增删改查

Springboot整合使用JPA进行增删改查

JPA可以根据不同的查询条件在DAO层接口中自定义查询。比如:定义一个根据id和username为查询条件的方法。}controller层调用:}}postman测试:注意:在使用JPA中,发现JPA实现了一些方法,如find,save等,但是没有update。使用@Query,编写nativeSQL,通过原生的SQLupdate。优点,可以自己定制,缺点,SQL语句繁琐,不灵活,不能实现动态更改某个属性。

m0_73311735的博客 4419

从零到一:RT-Thread与W5500的硬件抽象层设计哲学与实践启示

本文深入探讨了RT-Thread操作系统下W5500以太网模块的硬件抽象层(HAL)设计哲学与实践。通过GD32F103和STM32F103平台的适配案例,详细阐述了如何利用RT-Thread的驱动框架实现跨平台硬件无关性、模块化设计及配置定制,为嵌入式开发者提供了可复用的HAL设计方法论和实战经验。

7z8x2c4v6b9的博客 197

springboot整合jpa实现增删改查

一、Jpa简介 1、什么是JPA? JPA是一套Java官方制定的ORM 方案,是Java的一个规范 。Spring Data JPA是对基于 JPA 的数据访问层的增强支持。 应用JPA的主流框架:Hibernate (JBoos)、EclipseTop(Eclipse社区)、OpenJPA (Apache基金会)。 2、为什么使用JPA? JPA优点: (1)简单易用,帮助开发者提供了生产率 (2)便于维护,减低了维护成本 (3)学习成本相对比较低。 jPA存在的缺...

沐@曦辰 4873

大数据之数据抽取架构演变过程

而当时我们搭建的Flink集群是基于YARN进行资源管理和调度的,因为YARN中不仅仅包含着FLInk的资源,也有hive,zoozie,hdfs等等的资源,这样容易造成yarn资源的过度使用,容易引起整个底座的cpu以及内存的使用问题,经过排查,主要是由于FLink的使用资源引起的,所以后续就把Flink从整个集群中剥离出来,进行资源的隔离,最后Flink采用了StandAlone HA部署(但是这个目前还是存在问题,后续根据项目进行优化)'topic' = '表名',二、数据抽取架构的演变。

天道酬勤 867

树莓派3-改装wifi外置天线

声明:本文只是技术性探讨,改装引起的产品损坏等后果,由用户自负! 改装主要有两种方法 方法一:直接替换原来的天线 1、移除原有的小陶瓷天线,就在Made in PRC(或UK)那边的那个 清理一下阻焊剂方便天线接地(图中PRC左侧) 2、焊接天线 天线的屏蔽层焊接到清理完阻焊剂的地方,中间的信号线焊接到PRC右侧焊盘。 3、最终的样子

huayucong的博客 2万+

Springboot快速整合JPA实现增删查改

connection-test-query: SELECT 1 #连接池每分配一条连接前执行的查询语句(如:SELECT 1),以验证该连接是否是有效的。①数据库连接池,这次例子里面采用的是springboot2.0版本后默认整合的hikari连接池,想多了解的可以去网上额外了解下这个数据库连接池的优劣。:每次运行程序,没有表时会创建表,如果对象发生改变会更新表结构,原有数据不会清空,只会更新(推荐使用)auto-commit: true # 此属性控制从池返回的连接的默认自动提交行为,默认值:true。

2301_76238237的博客 1370

<PLC><汇川>汇川PLC基于EtherCat协议使用转矩模式控制SV630N伺服驱动电机

本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

用沸腾的热血,支付我们的人生吧! 4158

SpringBoot整合JPA的增删改查

废话不多说,上操作方法和相应的代码

2401_84502663的博客 1204

MMC混合型换流器系统设计与开关模型仿真

摘要:本文针对220kV交流/400kV直流电压等级,设计了由20个半桥和20个全桥子模块组成的混合型MMC换流器系统。通过建立开关函数等效模型,研究了其拓扑结构、工作原理及控制策略,包括NLM调制、电容电压均衡和环流抑制。MATLAB/Simulink仿真结果表明,系统直流电压波动控制在±5%以内,交流电流THD低于1.8%,验证了混合型MMC在高压大功率应用中的良好性能。该研究为工程实践提供了参考依据。 关键词:模块化多电平换流器;开关函数模型;混合子模块;最近电平逼近调制;电容电压均衡

huanghm88的专栏 133

YOLO26改进策略【YOLO和Mamba】| 替换骨干 Mamba-YOLO26-T !!! 最新的发文热点

模块是模型中的一个重要组成部分,其主要作用是在模型的初始阶段对输入图像进行处理,方便后续的特征提取和目标检测。以下是对。

Limiiiing的博客 900

Springboot集成mysql+jpa实现增删改查示例

Springboot集成mysql+jpa实现增删改查示例

weixin_40764759的博客 749

【测开求职】面试题:计算机网络 详细版整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。读者可以先查看上面的链接走一遍计算机网络的整体框架结构。其中,重点难点以及易混淆的知识点,笔者会用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。

vector的博客 5936

Kotlin JDSL与Spring Boot集成:无缝对接Spring Data JPA的完整指南

Kotlin JDSL是一个强大的Kotlin领域特定语言库,它让构建和执行JPQL查询变得异常简单。通过**Kotlin JDSL与Spring Boot的深度集成**,开发者可以在Spring Data JPA项目中享受类型安全的查询构建体验,无需生成元模型即可编写复杂的数据库查询。本文将为您提供一份完整的集成指南,帮助您快速上手这个强大的组合。 ## 🚀 为什么选择Kotlin JDSL

gitblog_01185的博客 216

基于SC、SCL、BP、SCAN和SSC的译码算法及Matlab代码

本文将介绍几种常见的译码算法,包括SC(Successive Cancellation)、SCL(Successive Cancellation List)、BP(Belief Propagation)、SCAN(Soft-Input Soft-Output Successive Cancellation)、SSC(Stacked Successive Cancellation)的原理,并提供相应的Matlab代码实现。以上是基于SC、SCL、BP、SCAN和SSC的译码算法的Matlab代码示例。

ByteWhisper的博客 946

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

终极Spring Boot与Kotlin整合指南:great-big-example-application后端开发最佳实践

Spring Boot与Kotlin是现代Java后端开发的黄金组合,而great-big-example-application项目正是这一技术栈的完美示范。这个由JHipster生成的全栈示例应用展示了如何将Spring Boot的便捷性与Kotlin的现代语法相结合,构建企业级后端服务的最佳实践。🚀 ## 📋 项目架构概览 great-big-example-application是

gitblog_01410的博客 328

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

如何快速构建现代Java应用:Kotlin与Spring Boot完整指南

在当今快速发展的Java生态系统中,**Kotlin与Spring Boot**的结合已经成为构建现代化企业级应用的首选技术栈。blog-tutorials项目为开发者提供了全面的教程资源,帮助您快速掌握这一强大的技术组合。本指南将带您深入了解如何利用Kotlin的简洁语法和Spring Boot的强大功能,打造高效、可维护的后端应用。 ## 🚀 Kotlin与Spring Boot:现代Ja

gitblog_00054的博客 936

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

为什么选择Kotlin JDSL?10个理由让你放弃传统JPA查询方式 [特殊字符]

在Kotlin开发领域,数据库查询构建一直是个挑战。传统的JPA查询方式虽然功能强大,但存在诸多不便。今天,我将为你介绍Kotlin JDSL——一个革命性的Kotlin库,它能让你轻松构建和执行查询,无需生成元模型。Kotlin JDSL通过基于KClass和KProperty的领域特定语言(DSL),彻底改变了Kotlin开发者的数据库查询体验。 ## 📊 Kotlin JDSL与传统JP

gitblog_00087的博客 613

第20篇-Spring-Data-JPA-Repository详解

本文介绍了在 Kotlin + Spring Boot 4 项目中使用 Spring Data JPA 的 Repository 接口体系进行高效数据访问。主要内容包括: Spring Data JPA 与传统 DAO 方式的对比,展示其通过方法名自动生成 SQL 的特性 Repository 接口体系的三层架构(Repository → CrudRepository → JpaRepository)及其适用场景 方法名查询语法,详细解析了 findBy 前缀和各种条件关键字的使用方式 提供完整的查询关键字

liumingxiy的博客 269

fritz2与Spring Boot整合:全栈Kotlin开发指南

fritz2是一个基于Kotlin协程和流的轻量级响应式Web框架,能够帮助开发者轻松构建现代化Web应用。当与Spring Boot后端结合时,可实现全栈Kotlin开发,享受类型安全和统一技术栈带来的开发效率提升。本文将详细介绍如何从零开始搭建fritz2前端与Spring Boot后端的整合项目,让你快速掌握全栈Kotlin开发的核心技能。 ## 1. 环境准备:快速搭建全栈开发环境 要

gitblog_01085的博客 462

Kotlin + SpringBoot + JPA 服务端开发

Kotlin + SpringBoot + JPA 服务端开发 本篇主要介绍一下 kotlin + springboot的服务端开发环境搭建 1.概述 Kotlin 是一个基于JVM的编程语言, 是IDEA开发工具 jetbrains 公司开发的语言,也被google选为android开发的首选语言, 因为它是完全兼容Java的 所以也可以做后端开发 比如集成我们在使用Java的一些技术框架 ,本篇就来简单介绍一下和SpringBoot的集成 下面我用Gradle init 的方式从头开始搭建Kot

qq_34285557的博客 1321

Spring Boot 后端开发详解:great-big-example-application 数据库配置与 RESTful API 设计

great-big-example-application 是一个基于 Spring Boot、Kotlin、Angular 4 等技术栈构建的全栈示例应用,本文将详细解析其数据库配置与 RESTful API 设计,帮助开发者快速掌握后端开发核心要点。 ## 一、数据库配置最佳实践 ### 1.1 多环境配置方案 项目采用 YAML 格式配置文件实现多环境隔离,核心配置位于 `src/ma

gitblog_00106的博客 508

Spring Boot 与 Kotlin使用Spring-data-jpa简化数据访问层

在《Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL》 中介绍了一种基本的数据访问方式,结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端和Web站点的开发任务了。 然而,在实际开发过程中,对数据库的操作无非就“增删改查”。就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量...

全科的博客 1611

Spring Boot 4 与 Kotlin 2.2:原生协程与惯用开发实战

Kotlin 以空安全、协程和函数式特性成为现代 JVM 后端开发的热门选择,但传统 Spring Boot 对 Kotlin 的支持往往停留在语法兼容层面。Spring Boot 4 基于 Spring Framework 7,原生支持 Kotlin 2.2 与 K2 编译器,彻底移除 XML 配置,并深度集成协程、suspend 函数与 HTTP Interface,让 Kotlin 开发者摆脱 Java 思维束缚。本文从 Kotlin 语言核心优势切入,剖析 Spring Boot 4 底层架构变化,

weixin_34007020的博客 507

Spring Data JPA核心原理与高效查询实战

Spring Data JPA作为Java持久层框架,通过ORM技术实现对象与关系数据库的映射。其核心原理基于JPA规范,利用Hibernate等提供者实现,通过方法名解析自动生成SQL查询,大幅减少样板代码。该技术显著提升开发效率,特别适合CRUD密集的业务系统,如用户管理、订单处理等场景。文章深入解析Repository动态代理机制,结合分页查询、实体关联等高频使用场景,并针对N+1查询等性能痛点提供解决方案。通过二级缓存配置、批量操作优化等技巧,帮助开发者构建高性能数据访问层。

weixin_30294295的博客 384
上一篇: Kotlin整合Spring Boot实现数据库增删改查(mybatis版)
下一篇: Spring Boot整合MongoDB实现增删改查
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值