Preface
I have used JPA a lot recently. I feel uncomfortable writing SQL with mybatis' XML method. The interface definition and mapping are discrete in different files, making it not particularly convenient to read.
Therefore, use Spring Boot to integrate MyBatis and write sql in the annotation
Refer to "My First Kotlin App"
Create a project, introduce dependencies in the build.gradle file
compile "org.mybatis.spring.boot:mybatis-spring-boot-starter:$mybatis_version" compile "mysql:mysql-connector-java:$mysql_version"
Complete build.gradle file
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 integrates SpringBoot's default parameterless constructor, and sets all classes by default all classes to open class plugin 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-pluginapply plugin: 'org.springframework.boot'apply plugin: "kotlin-jpa" //https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-helljar { 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"}Configure mysql connection in the application.yml file
spring: datasource: url: jdbc:mysql://localhost:3306/test username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver
Using MyBatis
Create a User table in Mysql, including id (BIGINT), username (VARCHAR), and age (INT) fields. At the same time, create a mapping object User
data class User(var id: Long? = -1, var username: String = "", val age: Int? = 0)
Create UserMapper operation for Usermapper, for subsequent unit test verification, implement insert and query operations
import name.quanke.kotlin.chaper11_6_5.entity.Userimport org.apache.ibatis.annotations.Insertimport org.apache.ibatis.annotations.Mapperimport org.apache.ibatis.annotations.Paramimport org.apache.ibatis.annotations.Paramimport org.apache.ibatis.annotations.Select/** * Created by http://quanke.name on 2018/1/11. */@Mapperinterface 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}Start Spring Boot class
import org.springframework.boot.SpringApplicationimport org.springframework.boot.autoconfigure.SpringBootApplication/** * Created by http://quanke.name on 2018/1/9. */@SpringBootApplicationclass Applicationfun main(args: Array<String>) { SpringApplication.run(Application::class.java, *args)} Unit Testing
import name.quanke.kotlin.chaper11_6_5.repository.UserMapperimport org.apache.commons.logging.LogFactoryimport org.junit.Testimport org.junit.runner.RunWithimport org.springframework.boot.test.context.SpringBootTestimport org.springframework.test.context.junit4.SpringRunnerimport javax.annotation.Resource/** * Created by http://quanke.name on 2018/1/9. */@RunWith(SpringRunner::class)@SpringBootTestclass ApplicationTests { val log = LogFactory.getLog(ApplicationTests::class.java)!! @Resource lateinit var userMapper: UserMapper @Test fun `MyBatis test"`() { log.info("Query user with username [quanke.name]: ${userMapper.findByUserName("quanke.name")}") userMapper.insert("quanke", "123") log.info("Query user with username [quanke]: ${userMapper.findByUserName("quanke")}") }}Summarize
The above is the entire content of this article. I hope that the content of this article has certain reference value for everyone's study or work. If you have any questions, you can leave a message to communicate. Thank you for your support to Wulin.com.