Spring Boot + Kotlin整合MyBatis的方法教程
程序员文章站
2023-11-26 20:21:34
前言
最近使用jpa比较多,再看看mybatis的xml方式写sql觉得不爽,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便。
因此使用spring boo...
前言
最近使用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://*.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整合MyBatis的方法教程
-
Spring Boot+Mybatis的整合过程
-
spring boot整合redis实现shiro的分布式session共享的方法
-
MyBatis 与 Spring 的完美整合方法
-
Spring Boot与Kotlin 整合全文搜索引擎Elasticsearch的示例代码
-
spring boot整合mybatis+mybatis-plus的示例代码
-
spring boot整合Cucumber(BDD)的方法
-
spring boot mybatis 整合教程
-
详解Spring Boot中MyBatis的使用方法
-
Spring Boot中使用JDBC Templet的方法教程