- Notifications
You must be signed in to change notification settings - Fork6
Quick Start
Let's try mybatis-thymeleaf quickly using the Spring Boot! Basically, Please see the mybatis-spring-boot-starter'sQuick Start on GitHub wiki page. In this page, we introduce usage in three JVM based language.
Add mybatis-thymeleaf into dependency onpom.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 featuremybatis.configuration.default-scripting-language=org.mybatis.scripting.thymeleaf.ThymeleafLanguageDriver# Workaround for https://github.com/spring-projects/spring-boot/issues/16079spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration
src/main/java/com/example/mybatissample/CityMapper.java
packagecom.example.mybatissample;importorg.apache.ibatis.annotations.Insert;importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Options;importorg.apache.ibatis.annotations.Select;@MapperpublicinterfaceCityMapper {@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")voidinsert(Citycity);@Select({"SELECT id, name, state, country FROM city","WHERE id = /*[# mb:p='id']*/ 1 /*[/]*/" })CityfindById(longid);}
$ 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
packagecom.example.mybatissampleclassCity {var id:Long=0var name:String?=nullvar state:String?=nullvar country:String?=nulloverridefuntoString():String="""${id},${name},${state},${country}"""}
src/main/kotlin/com/example/mybatissample/CityMapper.kt
packagecom.example.mybatissampleimportorg.apache.ibatis.annotations.Insertimportorg.apache.ibatis.annotations.Mapperimportorg.apache.ibatis.annotations.Optionsimportorg.apache.ibatis.annotations.Select@MapperinterfaceCityMapper { @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")funinsert(city:City) @Select(""" SELECT id, name, state, country FROM city WHERE id = /*[# mb:p="id"]*/ 1 /*[/]*/""")funfindById(id:Long):City}
src/main/kotlin/com/example/mybatissample/MybatisSampleApplication.kt
packagecom.example.mybatissampleimportorg.springframework.beans.factory.annotation.Autowiredimportorg.springframework.boot.CommandLineRunnerimportorg.springframework.boot.autoconfigure.SpringBootApplicationimportorg.springframework.boot.runApplicationimportorg.springframework.context.annotation.Bean@SpringBootApplicationclassMybatisSampleApplication { @Autowiredlateinitvar cityMapper:CityMapper @BeanfunsampleCommandLineRunner():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)) }}funmain(args:Array<String>) { runApplication<MybatisSampleApplication>(*args)}
src/test/kotlin/com/example/mybatissample/MybatisSampleApplicationTests.kt
packagecom.example.mybatissampleimportorg.hamcrest.Matchers.containsStringimportorg.junit.ClassRuleimportorg.junit.Testimportorg.junit.runner.RunWithimportorg.springframework.boot.test.context.SpringBootTestimportorg.springframework.boot.test.rule.OutputCaptureimportorg.springframework.test.context.junit4.SpringRunner@RunWith(SpringRunner::class)@SpringBootTestclassMybatisSampleApplicationTests {companionobject { @ClassRule @JvmFieldvalout=OutputCapture() } @TestfuncontextLoads() {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
packagecom.example.mybatissampleclassCity {Long idString nameString stateString country@OverrideStringtoString() {"""${id},${name},${state},${country}""" }}
src/main/groovy/com/example/mybatissample/CityMapper.groovy
packagecom.example.mybatissampleimportorg.apache.ibatis.annotations.Insertimportorg.apache.ibatis.annotations.Mapperimportorg.apache.ibatis.annotations.Optionsimportorg.apache.ibatis.annotations.Select@MapperinterfaceCityMapper {@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")voidinsert(Citycity)@Select(''' SELECT id, name, state, country FROM city WHERE id = /*[# mb:p="id"]*/ 1 /*[/]*/''')CityfindById(longid) }
src/main/groovy/com/example/mybatissample/MybatisSampleApplication.groovy
packagecom.example.mybatissampleimportorg.springframework.boot.CommandLineRunnerimportorg.springframework.boot.SpringApplicationimportorg.springframework.boot.autoconfigure.SpringBootApplicationimportorg.springframework.context.annotation.Bean@SpringBootApplicationclassMybatisSampleApplication {staticvoidmain(String[]args) {SpringApplication.run(MybatisSampleApplication, args) }@BeanCommandLineRunnersampleCommandLineRunner(CityMappercityMapper) {newSampleCommandLineRunner(cityMapper) }staticclassSampleCommandLineRunnerimplementsCommandLineRunner {privatefinalCityMapper cityMapper;SampleCommandLineRunner(CityMappercityMapper) {this.cityMapper= cityMapper; }@Overridevoidrun(String...args) {def city=newCity(name:"San Francisco",state:"CA",country:"US") cityMapper.insert(city)printlnthis.cityMapper.findById(city.getId()) } } }
src/test/groovy/com/example/mybatissample/MybatisSampleApplicationTests.groovy
packagecom.example.mybatissampleimportorg.junit.ClassRuleimportorg.junit.Testimportorg.junit.runner.RunWithimportorg.springframework.boot.test.context.SpringBootTestimportorg.springframework.boot.test.rule.OutputCaptureimportorg.springframework.test.context.junit4.SpringRunnerimport staticorg.hamcrest.Matchers.containsString@RunWith(SpringRunner)@SpringBootTestclassMybatisSampleApplicationTests {@ClassRulepublicstaticOutputCapture out=newOutputCapture()@TestvoidcontextLoads() { out.expect(containsString("1,San Francisco,CA,US")) } }