- Notifications
You must be signed in to change notification settings - Fork 6
Quick Start
Let's try mybatis-thymeleaf quickly using the Spring Boot! Basically, Please see the mybatis-spring-boot-starter's Quick Start on GitHub wiki page. In this page, we introduce usage in three JVM based language.
Add mybatis-thymeleaf into dependency on pom.xml
.
<dependencies> <dependency> <groupId>org.mybatis.scripting</groupId> <artifactId>mybatis-thymeleaf</artifactId> <version>1.0.4</version> </dependency> </dependencies>
Configure to use mybatis-thymeleaf feature in configuration properties file(src/main/resources/application.properties
).
# Enable mybatis-thymeleaf feature mybatis.configuration.default-scripting-language=org.mybatis.scripting.thymeleaf.ThymeleafLanguageDriver # Workaround for https://github.com/spring-projects/spring-boot/issues/16079 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration
src/main/java/com/example/mybatissample/CityMapper.java
package com.example.mybatissample; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Select; @Mapper public interface CityMapper { @Insert({ "INSERT INTO city (name, state, country) VALUES(", "/*[# mb:p='name']*/ 'Name' /*[/]*/,", "/*[# mb:p='state']*/ 'State' /*[/]*/,", "/*[# mb:p='country']*/ 'country' /*[/]*/,", ")" }) @Options(useGeneratedKeys = true, keyProperty = "id") void insert(City city); @Select({ "SELECT id, name, state, country FROM city", "WHERE id = /*[# mb:p='id']*/ 1 /*[/]*/" }) City findById(long id); }
$ curl -s https://start.spring.io/starter.tgz\ -d name=mybatis-sample\ -d artifactId=mybatis-sample\ -d dependencies=mybatis,h2\ -d baseDir=mybatis-sample\ -d language=kotlin\ | tar -xzvf -
src/main/kotlin/com/example/mybatissample/City.kt
package com.example.mybatissample class City { var id: Long = 0 var name: String? = null var state: String? = null var country: String? = null override fun toString(): String = """${id},${name},${state},${country}""" }
src/main/kotlin/com/example/mybatissample/CityMapper.kt
package com.example.mybatissample import org.apache.ibatis.annotations.Insert import org.apache.ibatis.annotations.Mapper import org.apache.ibatis.annotations.Options import org.apache.ibatis.annotations.Select @Mapper interface CityMapper { @Insert(""" INSERT INTO city (name, state, country) VALUES( /*[# mb:p="name"]*/ 'Name' /*[/]*/, /*[# mb:p="state"]*/ 'State' /*[/]*/, /*[# mb:p="country"]*/ 'Country' /*[/]*/ ) """) @Options(useGeneratedKeys = true, keyProperty = "id") fun insert(city: City) @Select(""" SELECT id, name, state, country FROM city WHERE id = /*[# mb:p="id"]*/ 1 /*[/]*/ """) fun findById(id: Long): City }
src/main/kotlin/com/example/mybatissample/MybatisSampleApplication.kt
package com.example.mybatissample import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.CommandLineRunner import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.context.annotation.Bean @SpringBootApplication class MybatisSampleApplication { @Autowired lateinit var cityMapper: CityMapper @Bean fun sampleCommandLineRunner(): CommandLineRunner = CommandLineRunner { val city = City() city.name = "San Francisco" city.state = "CA" city.country = "US" cityMapper.insert(city) System.out.println(this.cityMapper.findById(city.id)) } } fun main(args: Array<String>) { runApplication<MybatisSampleApplication>(*args) }
src/test/kotlin/com/example/mybatissample/MybatisSampleApplicationTests.kt
package com.example.mybatissample import org.hamcrest.Matchers.containsString import org.junit.ClassRule import org.junit.Test import org.junit.runner.RunWith import org.springframework.boot.test.context.SpringBootTest import org.springframework.boot.test.rule.OutputCapture import org.springframework.test.context.junit4.SpringRunner @RunWith(SpringRunner::class) @SpringBootTest class MybatisSampleApplicationTests { companion object { @ClassRule @JvmField val out = OutputCapture() } @Test fun contextLoads() { out.expect(containsString("1,San Francisco,CA,US")) } }
$ curl -s https://start.spring.io/starter.tgz\ -d name=mybatis-sample\ -d artifactId=mybatis-sample\ -d dependencies=mybatis,h2\ -d baseDir=mybatis-sample\ -d language=groovy\ | tar -xzvf -
src/main/groovy/com/example/mybatissample/City.groovy
package com.example.mybatissample class City { Long id String name String state String country @Override String toString() { """${id},${name},${state},${country}""" } }
src/main/groovy/com/example/mybatissample/CityMapper.groovy
package com.example.mybatissample import org.apache.ibatis.annotations.Insert import org.apache.ibatis.annotations.Mapper import org.apache.ibatis.annotations.Options import org.apache.ibatis.annotations.Select @Mapper interface CityMapper { @Insert(''' INSERT INTO city (name, state, country) VALUES( /*[# mb:p="name"]*/ 'Name' /*[/]*/, /*[# mb:p="state"]*/ 'State' /*[/]*/, /*[# mb:p="country"]*/ 'Country' /*[/]*/ ) ''') @Options(useGeneratedKeys = true, keyProperty = "id") void insert(City city) @Select(''' SELECT id, name, state, country FROM city WHERE id = /*[# mb:p="id"]*/ 1 /*[/]*/ ''') City findById(long id) }
src/main/groovy/com/example/mybatissample/MybatisSampleApplication.groovy
package com.example.mybatissample import org.springframework.boot.CommandLineRunner import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.context.annotation.Bean @SpringBootApplication class MybatisSampleApplication { static void main(String[] args) { SpringApplication.run(MybatisSampleApplication, args) } @Bean CommandLineRunner sampleCommandLineRunner(CityMapper cityMapper) { new SampleCommandLineRunner(cityMapper) } static class SampleCommandLineRunner implements CommandLineRunner { private final CityMapper cityMapper; SampleCommandLineRunner(CityMapper cityMapper) { this.cityMapper = cityMapper; } @Override void run(String... args) { def city = new City(name: "San Francisco", state: "CA", country: "US") cityMapper.insert(city) println this.cityMapper.findById(city.getId()) } } }
src/test/groovy/com/example/mybatissample/MybatisSampleApplicationTests.groovy
package com.example.mybatissample import org.junit.ClassRule import org.junit.Test import org.junit.runner.RunWith import org.springframework.boot.test.context.SpringBootTest import org.springframework.boot.test.rule.OutputCapture import org.springframework.test.context.junit4.SpringRunner import static org.hamcrest.Matchers.containsString @RunWith(SpringRunner) @SpringBootTest class MybatisSampleApplicationTests { @ClassRule public static OutputCapture out = new OutputCapture() @Test void contextLoads() { out.expect(containsString("1,San Francisco,CA,US")) } }