Spring Boot + Kotlin整合MyBatis的方法教程

前言

最近使用jpa比较多,再看看mybatis的xml方式写sql觉得不爽,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便。

因此使用Spring Boot去整合MyBatis,在注解里写sql

参考《我的第一个Kotlin应用》

创建项目,在build.gradle文件中引入依赖

compile "org.mybatis.spring.boot:mybatis-spring-boot-starter:$mybatis_version"
compile "mysql:mysql-connector-java:$mysql_version"

完整的build.gradle文件

group 'name.quanke.kotlin'
version '1.0-SNAPSHOT'
buildscript {
 ext.kotlin_version = '1.2.10'
 ext.spring_boot_version = '1.5.4.RELEASE'
 ext.springfox_swagger2_version = '2.7.0'
 ext.mysql_version = '5.1.21'
 ext.mybatis_version = '1.1.1'
 repositories {
  mavenCentral()
 }
 dependencies {
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
  classpath("org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version")

//  Kotlin整合SpringBoot的默认无参构造函数,默认把所有的类设置open类插件
  classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version")
  classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version")
 }
}
apply plugin: 'kotlin'
apply plugin: "kotlin-spring" // See https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-plugin
apply plugin: 'org.springframework.boot'
apply plugin: "kotlin-jpa" //https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-hell
jar {
 baseName = 'chapter11-6-5-service'
 version = '0.1.0'
}
repositories {
 mavenCentral()
}
dependencies {
 compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
 compile("org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}")
 compile "org.mybatis.spring.boot:mybatis-spring-boot-starter:$mybatis_version"
 compile "mysql:mysql-connector-java:$mysql_version"
 testCompile "org.springframework.boot:spring-boot-starter-test:$spring_boot_version"
 testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"

}
compileKotlin {
 kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
 kotlinOptions.jvmTarget = "1.8"
}

在application.yml文件中配置mysql的连接

spring:
 datasource:
 url: jdbc:mysql://localhost:3306/test
 username: root
 password: 123456
 driver-class-name: com.mysql.jdbc.Driver

使用MyBatis

在Mysql中创建User表,包含id(BIGINT)、username(VARCHAR)、age(INT)字段。同时,创建映射对象User

data class User(var id: Long? = -1, var username: String = "", val age: Int? = 0)

创建User映射的操作UserMapper,为了后续单元测试验证,实现插入和查询操作

import name.quanke.kotlin.chaper11_6_5.entity.User
import org.apache.ibatis.annotations.Insert
import org.apache.ibatis.annotations.Mapper
import org.apache.ibatis.annotations.Param
import org.apache.ibatis.annotations.Select
/**
 * Created by http://quanke.name on 2018/1/11.
 */
@Mapper
interface UserMapper {
 @Select("SELECT * FROM USER WHERE USERNAME = #{username}")
 fun findByUserName(@Param("username") username: String): List<User>
 @Insert("INSERT INTO USER(USERNAME, PASSWORD) VALUES(#{username}, #{password})")
 fun insert(@Param("username") username: String, @Param("password") password: String): Int
}

启动 Spring Boot 类

import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
/**
 * Created by http://quanke.name on 2018/1/9.
 */
@SpringBootApplication
class Application
fun main(args: Array<String>) {
 SpringApplication.run(Application::class.java, *args)
}

单元测试

import name.quanke.kotlin.chaper11_6_5.repository.UserMapper
import org.apache.commons.logging.LogFactory
import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit4.SpringRunner
import javax.annotation.Resource
/**
 * Created by http://quanke.name on 2018/1/9.
 */
@RunWith(SpringRunner::class)
@SpringBootTest
class ApplicationTests {
 val log = LogFactory.getLog(ApplicationTests::class.java)!!
 @Resource
 lateinit var userMapper: UserMapper
 @Test
 fun `MyBatis test"`() {
  log.info("查询用户名为【quanke.name】的用户:${userMapper.findByUserName("quanke.name")}")
  userMapper.insert("quanke", "123")
  log.info("查询用户名为【quanke】的用户:${userMapper.findByUserName("quanke")}")
 }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

您可能感兴趣的文章:

  • 关于Spring Boot和Kotlin的联合开发
  • spring boot + jpa + kotlin入门实例详解
  • Spring Boot 与 Kotlin 上传文件的示例代码
  • Spring Boot 与 Kotlin 使用Redis数据库的配置方法
  • Spring Boot与Kotlin处理Web表单提交的方法
(0)

相关推荐

  • Spring Boot 与 Kotlin 上传文件的示例代码

    如果我们做一个小型的web站,而且刚好选择的kotlin 和Spring Boot技术栈,那么上传文件的必不可少了,当然,如果你做一个中大型的web站,那建议你使用云存储,能省不少事情. 这篇文章就介绍怎么使用kotlin 和Spring Boot上传文件 构建工程 如果对于构建工程还不是很熟悉的可以参考<我的第一个Kotlin应用> 完整 build.gradle 文件 group 'name.quanke.kotlin' version '1.0-SNAPSHOT' buildscript

  • spring boot + jpa + kotlin入门实例详解

    spring boot +jpa的文章网络上已经有不少,这里主要补充一下用kotlin来做. kotlin里面的data class来创建entity可以帮助我们减少不少的代码,比如现在这个User的Entity,这是Java版本的: @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String firstName; private S

  • Spring Boot与Kotlin处理Web表单提交的方法

    我们在做web开发的时候,肯定逃不过表单提交,这篇文章通过Spring Boot使用Kotlin 语言 创建和提交一个表单. 下面我们在之前<Spring Boot 与 Kotlin使用Freemarker模板引擎渲染web视图>项目的基础上,增加处理表单提交. build.gradle 文件没有变化,这里贴一下完整的build.gradle group 'name.quanke.kotlin' version '1.0-SNAPSHOT' buildscript { ext.kotlin_v

  • Spring Boot 与 Kotlin 使用Redis数据库的配置方法

    Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elasticsearch, Solr和Cassandra. 使用Redis Redis是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型. Key-Value 数据库. Redis官网 Redis中文社区 引入依赖 Spring Boot提供的数据访问框架Spring Data Redis基于Jedi

  • 关于Spring Boot和Kotlin的联合开发

    一.概述 spring官方最近宣布,将在Spring Framework 5.0版本中正式支持Kotlin语言.这意味着Spring Boot 2.x版本将为Kotlin提供一流的支持. 这并不会令人意外,因为Pivotal团队以广泛接纳​​JVM语言(如Scala和Groovy)而闻名.下面我们用Spring Boot 2.x和Kotlin应用程序. 二.搭建环境 1.环境 IntelliJ和Eclipse都对Kotlin提供了支持,可以根据自己的喜好搭建Kotlin开发环境. 2.构建应用

  • Spring Boot + Kotlin整合MyBatis的方法教程

    前言 最近使用jpa比较多,再看看mybatis的xml方式写sql觉得不爽,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便. 因此使用Spring Boot去整合MyBatis,在注解里写sql 参考<我的第一个Kotlin应用> 创建项目,在build.gradle文件中引入依赖 compile "org.mybatis.spring.boot:mybatis-spring-boot-starter:$mybatis_version" compile &qu

  • Spring boot怎么整合Mybatis

    最近刚接触spring boot,正是因为他的及简配置方便开发,促使我下定决心要用它把之前写的项目重构,那么问题来了,spring boot怎么整合mybatis呢,下面几个配置类来搞定. 在我的代码当中是实现了数据库读写分离的,所以代码仅做参考,如有需要可以加我微信:benyzhous [后续更新] 1.文件结构 DataBaseConfiguration.Java用来获取数据库连接配置信息,配置从application.properties中读取 MybatisConfiguration.j

  • Spring利用注解整合Mybatis的方法详解

    目录 一.环境准备 步骤1:数据库相关 步骤2:导入jar包 步骤3:创建模型类 步骤4:创建Dao接口和实现类 步骤5:创建Service接口和实现类 步骤6:添加jdbc.properties文件 步骤7:添加Mybatis核心配置文件 步骤8:编写测试程序 二.整合思路分析 三.整合步骤 步骤1:导入整合jar包 步骤2:创建数据源配置类 步骤3:创建Mybatis配置类 步骤4:创建Spring主配置类 步骤5:编写运行程序 一.环境准备 步骤1:数据库相关 建库建表 创建spring_

  • Spring Boot中使用Activiti的方法教程(二)

    前言 前面一节我们已经了解了Activiti的基础概念,包括流程定义的用语和它的API功能,已经如何入手Activiti,在这一节我们将结合代码具体学习使用.小图是我们需要完成的请假流程图: 正如我们在图中看到的,这是一个非常简单的流程:员工提出休假请求,提供休假天数和开始日期.请求发送给经理.他们可以批准/拒绝该请求. 如果获得批准,则会定义一个服务任务serviceTask来发送确认电子邮件.如果被拒绝,员工可以选择修改并重新发送请求,也可以不执行任何操作. 此流程的BPMN 2.0定义文件

  • Spring Boot中使用activiti的方法教程(一)

    前言 Activiti API是一个工作流程(workflow)和业务流程管理(BPM)系统,可以定义流程.执行流程并以不同方式对其实现运行.使用API​​的开发可以在任何IDE中完成,但是要使用Activiti Designer需要Eclipse,IDEA中使用actiBPM插件. 定义流程有几种方式: 1. 使用BPMN 2.0标准在定义一个流程XML. 2. 使用StartEvent,EndEvent,UserTask,SequenceFlow等Java类. 如果我们想要运行进程或访问任何

  • spring boot添加新模块的方法教程

    前言 在springboot项目框架里,把一个项目两大模块,主项目main和测试项目test,而我们的测试项目根据功能又可以再分,比如可以有单元测试,集成测试,业务测试等等. 对于一个初学者来说,建立模块的方式需要我们掌握,网上的资料不多,很少讲到这个功能点,大叔在这里普及一下! springboot项目基本结构如图: 下面我们来建立一个集成测试模块intTest,有的团队愿意叫它integTest,都可以,intTest这个名字来自于gradle官方的文档上,大叔也借鉴一下(https://d

  • 从零搭建Spring Boot脚手架整合OSS作为文件服务器的详细教程

    1. 前言 文件服务器是一个应用必要的组件之一.最早我搞过FTP,然后又用过FastDFS,接私活的时候我用MongoDB也凑合凑合.现如今时代不同了,开始流行起了OSS. Gitee: https://gitee.com/felord/kono day06 分支 欢迎Star GitHub: https://github.com/NotFound403/kono day06 分支 欢迎Star 2. 什么是OSS 全称为Object Storage Service,也叫对象存储服务,是一种解决

  • SpringBoot整合MyBatis超详细教程

    1.整合MyBatis操作 前面一篇提到了SpringBoot整合基础的数据源JDBC.Druid操作,实际项目中更常用的还是MyBatis框架,而SpringBoot整合MyBatis进行CRUD也非常方便. 下面从配置模式.注解模式.混合模式三个方面进行说明MyBatis与SpringBoot的整合. 1.1.配置模式 MyBatis配置模式是指使用mybatis配置文件的方式与SpringBoot进行整合,相对应的就有mybatis-config.xml(用于配置驼峰命名,也可以省略这个文

  • Spring Boot 功能整合的实现

    前言 如果根据之前做的 Nest.js 后端项目功能为标准的话,那么 Spring Boot 项目需要几种功能进行整合,好在生态丰富,集成也不算困难.所以打算根据之前的项目使用 Spring Boot 重写个新的项目: Restful API CRUD 功能实现 数据库对象关系映射功能持久化支持 OpenAPI 文档支持 参数校验判断业务 redis 缓存 ... 数据库持久化支持 目前数据库持久化主要是 Spring Boot Jpa 和 Spring Boot Mybatis .如果看过 J

  • Spring Boot 如何整合连接池

    Spring Boot 整合连接池 在实际开发中应用程序与数据库交互时,"获得连接"或在"释放资源"是非常消耗资源的两个过程,为了解决如此类性能问题,通常这种情况我们采用连接池技术重用连接Connection对象,如图1所示. 图-1 其实Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口.然后我们的应用程序中耦合这个接口,便可以方便的切换不同厂商的连接池,常见的连接池有DBCP.C3P0.DRU

随机推荐