时间:2021-07-01 10:21:17 帮助过:6人阅读
1、kotlin版springboot项目创建
访问https://start.spring.io/, 创建项目demo(maven + kotlin + springboot 2.1.7, 其他默认)。
2、创建数据库及表
- <span style="color: #000000;">create database test;
- use test;
- CREATE TABLE category_ (
- id </span><span style="color: #0000ff;">int</span>(11<span style="color: #000000;">) NOT NULL AUTO_INCREMENT,
- name varchar(</span>30<span style="color: #000000;">),
- PRIMARY KEY (id)
- ) DEFAULT CHARSET</span>=<span style="color: #000000;">UTF8;
- insert into category_ values(</span><span style="color: #0000ff;">null</span>,‘category 1‘<span style="color: #000000;">);
- insert into category_ values(</span><span style="color: #0000ff;">null</span>,‘category 2‘<span style="color: #000000;">);
- insert into category_ values(</span><span style="color: #0000ff;">null</span>,‘category 3‘<span style="color: #000000;">);
- insert into category_ values(</span><span style="color: #0000ff;">null</span>,‘category 4‘);
3、将项目demo导入idea,等待maven导入依赖jar包。
修改pom.xml,增加mysql数据库连接jar包。
- <!-- https:<span style="color: #008000;">//</span><span style="color: #008000;">mvnrepository.com/artifact/mysql/mysql-connector-java --></span>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.47</version>
- </dependency>
在src/main/resources包下的application.properties文件中增加数据库访问参数(包括mysql数据库用户名及密码)、端口号等。
- server.port=8080<span style="color: #000000;">
- spring.datasource.password</span>=<span style="color: #000000;">admin
- spring.datasource.username</span>=<span style="color: #000000;">root
- spring.datasource.driver</span>-<span style="color: #0000ff;">class</span>-name=<span style="color: #000000;">com.mysql.jdbc.Driver
- 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
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo.entity
- </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Category {
- var id : Int</span>? = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
- var name : String</span>? = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
- }</span>
修改pom.xml,增加mybatis注解jar包。
- <!-- mybatis -->
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>1.1.1</version>
- </dependency>
在com.example.demo包下创建mapper包,创建接口类CategoryMapper.kt, 实现增、删、改、查。
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo.mapper
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.example.demo.entity.Category
- </span><span style="color: #0000ff;">import</span> org.apache.ibatis.annotations.*<span style="color: #000000;">
- @Mapper
- </span><span style="color: #0000ff;">interface</span><span style="color: #000000;"> CategoryMapper {
- @Select(</span>" select * from category_"<span style="color: #000000;">)
- fun list() : List</span><Category><span style="color: #000000;">
- @Insert(</span>" insert into category_ values(null, #{name})"<span style="color: #000000;">)
- fun insert(category: Category) : Int
- @Delete(</span>" delete from category_ where id = #{id}"<span style="color: #000000;">)
- fun delete(id : Int)
- @Update(</span>" update category_ set name=#{name} where id = #{id}"<span style="color: #000000;">)
- fun update(category: Category) : Int
- @Select( </span>" select * from category_ where id = #{id}"<span style="color: #000000;">)
- fun get(id : Int) : Category
- }</span>
修改pom.xml增加相关依赖,在src/test/kotlin路径下com.example.demo路径下创建类CategoryMapperTest.kt,并执行相关测试。
- <!-- https:<span style="color: #008000;">//</span><span style="color: #008000;">mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-test-junit5 --></span>
- <dependency>
- <groupId>org.jetbrains.kotlin</groupId>
- <artifactId>kotlin-test-junit5</artifactId>
- <version>1.2.70</version>
- <scope>test</scope>
- </dependency>
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.example.demo.mapper.CategoryMapper
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.Assert
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.boot.test.context.SpringBootTest
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.annotation.Resource
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> kotlin.test.Test
- @SpringBootTest
- </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> CategoryMapperTest {
- @Resource
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> lateinit var categoryMapper1: CategoryMapper
- @Resource
- </span><span style="color: #0000ff;">private</span> val categoryMapper2: CategoryMapper? = <span style="color: #0000ff;">null</span><span style="color: #000000;">
- @Test
- fun test() {
- val size1 </span>=<span style="color: #000000;"> categoryMapper1.list().size;
- val size2 </span>= categoryMapper2!!<span style="color: #000000;">.list().size;
- Assert.assertEquals(size1, size2)
- }
- }</span>
4、修改pom.xml,添加web相关依赖。
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
在src/main/kotlin目录下com.example.demo包下新建controller包,创建kotlin类HelloController.kt
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo.controller
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.web.bind.annotation.GetMapping
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.web.bind.annotation.RestController
- @RestController
- </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> HelloController {
- @GetMapping(</span>"/hello"<span style="color: #000000;">)
- fun hello() : String {
- </span><span style="color: #0000ff;">return</span> "hello"<span style="color: #000000;">;
- }
- }</span>
修改pom.xml, 添加单元测试相关依赖。
- <!-- https:<span style="color: #008000;">//</span><span style="color: #008000;">mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-test-junit5 --></span>
- <dependency>
- <groupId>org.jetbrains.kotlin</groupId>
- <artifactId>kotlin-test-junit5</artifactId>
- <version>1.2.70</version>
- <scope>test</scope>
- </dependency>
在src/test/kotlin路径下 com.example.demo包下创建kotlin类HelloControllerTest.kt
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.example.demo
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.jupiter.api.Test
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.boot.test.context.SpringBootTest
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.http.HttpMethod
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.context.web.WebAppConfiguration
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.web.servlet.request.MockMvcRequestBuilders
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.test.web.servlet.setup.MockMvcBuilders
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.web.context.WebApplicationContext
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.annotation.Resource
- @SpringBootTest
- @WebAppConfiguration
- </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> HelloControllerTest {
- @Resource
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> lateinit var wac : WebApplicationContext
- @Test
- fun test() {
- val mockMvc </span>=<span style="color: #000000;"> MockMvcBuilders.webAppContextSetup(wac).build()
- val result </span>= mockMvc.perform(MockMvcRequestBuilders.request(HttpMethod.GET, "/hello"<span style="color: #000000;">))
- .andExpect(status().isOk)
- .andDo(::println)
- .andReturn().response.contentAsString;
- println(result)
- }
- }</span>
点击HelloControllerTest类前的三角号,即可执行单元测试,在下方窗口看到输出结果“hello”。
kotlin + springboot整合mybatis操作mysql数据库及单元测试
标签:ble result contex from status web ini mys let