当前位置:Gxlcms > 数据库问题 > kotlin + springboot整合mybatis操作mysql数据库及单元测试

kotlin + springboot整合mybatis操作mysql数据库及单元测试

时间:2021-07-01 10:21:17 帮助过:6人阅读

1、kotlin版springboot项目创建

访问https://start.spring.io/, 创建项目demo(maven + kotlin + springboot 2.1.7, 其他默认)。

2、创建数据库及表

  1. <span style="color: #000000;">create database test;
  2. use test;
  3. CREATE TABLE category_ (
  4. id </span><span style="color: #0000ff;">int</span>(11<span style="color: #000000;">) NOT NULL AUTO_INCREMENT,
  5. name varchar(</span>30<span style="color: #000000;">),
  6. PRIMARY KEY (id)
  7. ) DEFAULT CHARSET</span>=<span style="color: #000000;">UTF8;
  8. insert into category_ values(</span><span style="color: #0000ff;">null</span>,‘category 1‘<span style="color: #000000;">);
  9. insert into category_ values(</span><span style="color: #0000ff;">null</span>,‘category 2‘<span style="color: #000000;">);
  10. insert into category_ values(</span><span style="color: #0000ff;">null</span>,‘category 3‘<span style="color: #000000;">);
  11. insert into category_ values(</span><span style="color: #0000ff;">null</span>,‘category 4‘);

3、将项目demo导入idea,等待maven导入依赖jar包。

修改pom.xml,增加mysql数据库连接jar包。

  1. <!-- https:<span style="color: #008000;">//</span><span style="color: #008000;">mvnrepository.com/artifact/mysql/mysql-connector-java --></span>
  2. <dependency>
  3. <groupId>mysql</groupId>
  4. <artifactId>mysql-connector-java</artifactId>
  5. <version>5.1.47</version>
  6. </dependency>

在src/main/resources包下的application.properties文件中增加数据库访问参数(包括mysql数据库用户名及密码)、端口号等。

  1. server.port=8080<span style="color: #000000;">
  2. spring.datasource.password</span>=<span style="color: #000000;">admin
  3. spring.datasource.username</span>=<span style="color: #000000;">root
  4. spring.datasource.driver</span>-<span style="color: #0000ff;">class</span>-name=<span style="color: #000000;">com.mysql.jdbc.Driver
  5. spring.datasource.url</span>=jdbc:mysql:<span style="color: #008000;">//</span><span style="color: #008000;">127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false</span>

在com.example.demo目录下新建entity包,创建类Category.kt

  1. <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo.entity
  2. </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Category {
  3. var id : Int</span>? = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  4. var name : String</span>? = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  5. }</span>

修改pom.xml,增加mybatis注解jar包。

  1. <!-- mybatis -->
  2. <dependency>
  3. <groupId>org.mybatis.spring.boot</groupId>
  4. <artifactId>mybatis-spring-boot-starter</artifactId>
  5. <version>1.1.1</version>
  6. </dependency>

在com.example.demo包下创建mapper包,创建接口类CategoryMapper.kt, 实现增、删、改、查。

  1. <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo.mapper
  2. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.example.demo.entity.Category
  3. </span><span style="color: #0000ff;">import</span> org.apache.ibatis.annotations.*<span style="color: #000000;">
  4. @Mapper
  5. </span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> CategoryMapper {
  6. @Select(</span>" select * from category_"<span style="color: #000000;">)
  7. fun list() : List</span><Category><span style="color: #000000;">
  8. @Insert(</span>" insert into category_ values(null, #{name})"<span style="color: #000000;">)
  9. fun insert(category: Category) : Int
  10. @Delete(</span>" delete from category_ where id = #{id}"<span style="color: #000000;">)
  11. fun delete(id : Int)
  12. @Update(</span>" update category_ set name=#{name} where id = #{id}"<span style="color: #000000;">)
  13. fun update(category: Category) : Int
  14. @Select( </span>" select * from category_ where id = #{id}"<span style="color: #000000;">)
  15. fun get(id : Int) : Category
  16. }</span>

修改pom.xml增加相关依赖,在src/test/kotlin路径下com.example.demo路径下创建类CategoryMapperTest.kt,并执行相关测试。

  1. <!-- https:<span style="color: #008000;">//</span><span style="color: #008000;">mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-test-junit5 --></span>
  2. <dependency>
  3. <groupId>org.jetbrains.kotlin</groupId>
  4. <artifactId>kotlin-test-junit5</artifactId>
  5. <version>1.2.70</version>
  6. <scope>test</scope>
  7. </dependency>

 

  1. <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo
  2. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.example.demo.mapper.CategoryMapper
  3. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.Assert
  4. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.boot.test.context.SpringBootTest
  5. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.annotation.Resource
  6. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> kotlin.test.Test
  7. @SpringBootTest
  8. </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> CategoryMapperTest {
  9. @Resource
  10. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> lateinit var categoryMapper1: CategoryMapper
  11. @Resource
  12. </span><span style="color: #0000ff;">private</span> val categoryMapper2: CategoryMapper? = <span style="color: #0000ff;">null</span><span style="color: #000000;">
  13. @Test
  14. fun test() {
  15. val size1 </span>=<span style="color: #000000;"> categoryMapper1.list().size;
  16. val size2 </span>= categoryMapper2!!<span style="color: #000000;">.list().size;
  17. Assert.assertEquals(size1, size2)
  18. }
  19. }</span>

 

4、修改pom.xml,添加web相关依赖。

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>

在src/main/kotlin目录下com.example.demo包下新建controller包,创建kotlin类HelloController.kt

  1. <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo.controller
  2. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.web.bind.annotation.GetMapping
  3. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.web.bind.annotation.RestController
  4. @RestController
  5. </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> HelloController {
  6. @GetMapping(</span>"/hello"<span style="color: #000000;">)
  7. fun hello() : String {
  8. </span><span style="color: #0000ff;">return</span> "hello"<span style="color: #000000;">;
  9. }
  10. }</span>

修改pom.xml,  添加单元测试相关依赖。

  1. <!-- https:<span style="color: #008000;">//</span><span style="color: #008000;">mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-test-junit5 --></span>
  2. <dependency>
  3. <groupId>org.jetbrains.kotlin</groupId>
  4. <artifactId>kotlin-test-junit5</artifactId>
  5. <version>1.2.70</version>
  6. <scope>test</scope>
  7. </dependency>

在src/test/kotlin路径下 com.example.demo包下创建kotlin类HelloControllerTest.kt

  1. <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo
  2. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.jupiter.api.Test
  3. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.boot.test.context.SpringBootTest
  4. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.http.HttpMethod
  5. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.context.web.WebAppConfiguration
  6. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.web.servlet.request.MockMvcRequestBuilders
  7. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
  8. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.web.servlet.setup.MockMvcBuilders
  9. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.web.context.WebApplicationContext
  10. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.annotation.Resource
  11. @SpringBootTest
  12. @WebAppConfiguration
  13. </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> HelloControllerTest {
  14. @Resource
  15. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> lateinit var wac : WebApplicationContext
  16. @Test
  17. fun test() {
  18. val mockMvc </span>=<span style="color: #000000;"> MockMvcBuilders.webAppContextSetup(wac).build()
  19. val result </span>= mockMvc.perform(MockMvcRequestBuilders.request(HttpMethod.GET, "/hello"<span style="color: #000000;">))
  20. .andExpect(status().isOk)
  21. .andDo(::println)
  22. .andReturn().response.contentAsString;
  23. println(result)
  24. }
  25. }</span>

点击HelloControllerTest类前的三角号,即可执行单元测试,在下方窗口看到输出结果“hello”。

 

kotlin + springboot整合mybatis操作mysql数据库及单元测试

标签:ble   result   contex   from   status   web   ini   mys   let   

人气教程排行