Skip to content

Commit 67ce5b5

Browse files
authored
Update Komapper to v0.25.0 (#73)
* Add jpetstore example * Add kweet example * Mask passwords * Add README.md * Use kotlin("plugin.spring") instead of kotlin("plugin.allopen") * Update Komapper to v0.25.0 * Use komapper-starter-r2dbc
1 parent 80bfac7 commit 67ce5b5

File tree

135 files changed

+4478
-33
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+4478
-33
lines changed

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
val ktlintVersion: String by project
88

99
val springBootProjects = subprojects.filter {
10-
it.name.startsWith("spring-boot")
10+
it.name.startsWith("spring-boot") || it.name == "jpetstore"
1111
}
1212

1313
allprojects {
@@ -16,6 +16,7 @@ allprojects {
1616

1717
repositories {
1818
mavenCentral()
19+
mavenLocal()
1920
}
2021

2122
spotless {

comparison-with-exposed/src/main/kotlin/org/komapper/example/Application.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ fun main() {
6060
}
6161

6262
val (_, pragueId) = db.runQuery {
63-
QueryDsl.insert(c).values { c.name set substring(trim(literal(" Prague ")), 1, 2) }
63+
QueryDsl.insert(c).values { c.name eq substring(trim(literal(" Prague ")), 1, 2) }
6464
}
6565

6666
val prague = db.runQuery {
@@ -79,7 +79,7 @@ fun main() {
7979
}
8080

8181
db.runQuery {
82-
QueryDsl.update(u).set { u.name set "Alexey" }.where { u.id eq "alex" }
82+
QueryDsl.update(u).set { u.name eq "Alexey" }.where { u.id eq "alex" }
8383
}
8484

8585
db.runQuery {

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ group=org.komapper
55
version=0.0.1
66

77
kotlinVersion=1.5.31
8-
komapperVersion=0.24.0
8+
komapperVersion=0.25.0
99
kspVersion=1.5.31-1.0.1
1010
ktlintVersion=0.43.0

jpetstore/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# JPetStore
2+
3+
Shopping application written with [String Boot](https://spring.io/projects/spring-boot) using the Komapper JDBC API.
4+
5+
This application is based on [jpetstore-6](https://github.com/mybatis/jpetstore-6),
6+
a sample application from MyBatis.
7+
8+
## Running
9+
10+
Execute this command to run the sample:
11+
12+
```bash
13+
./gradlew :jpetstore:run
14+
```
15+
16+
And navigate to [http://localhost:8080/](http://localhost:8080/) to see the sample home page.
17+
18+
You can use the following username and password to sing in:
19+
20+
* username: `jpetstore`
21+
* password: `jpetstore`

jpetstore/build.gradle.kts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
plugins {
2+
id("org.springframework.boot") version "2.6.2"
3+
id("com.google.devtools.ksp")
4+
kotlin("plugin.spring")
5+
}
6+
7+
apply(plugin = "io.spring.dependency-management")
8+
9+
val komapperVersion: String by project
10+
11+
kotlin {
12+
sourceSets.main {
13+
kotlin.srcDirs("build/generated/ksp/main/kotlin")
14+
}
15+
jvmToolchain {
16+
(this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
17+
}
18+
}
19+
20+
springBoot {
21+
mainClass.set("org.komapper.example.ApplicationKt")
22+
}
23+
24+
repositories {
25+
mavenCentral()
26+
mavenLocal()
27+
maven(url = "https://repo.spring.io/milestone")
28+
}
29+
30+
dependencies {
31+
implementation("org.komapper:komapper-spring-boot-starter-jdbc:$komapperVersion")
32+
implementation("org.komapper:komapper-dialect-h2-jdbc:$komapperVersion")
33+
ksp("org.komapper:komapper-processor:$komapperVersion")
34+
35+
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
36+
implementation("org.springframework.boot:spring-boot-starter-web")
37+
implementation("org.springframework.boot:spring-boot-starter-security")
38+
implementation("org.springframework.boot:spring-boot-starter-validation")
39+
implementation("com.h2database:h2:1.4.200")
40+
implementation("org.webjars:jquery:3.6.0")
41+
implementation("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.0.0")
42+
developmentOnly("org.springframework.boot:spring-boot-devtools")
43+
testImplementation("org.springframework.boot:spring-boot-starter-test") {
44+
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
45+
}
46+
}
47+
48+
tasks {
49+
test {
50+
useJUnitPlatform()
51+
}
52+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.komapper.example
2+
3+
import org.springframework.boot.SpringApplication
4+
import org.springframework.boot.autoconfigure.SpringBootApplication
5+
6+
@SpringBootApplication
7+
class Application
8+
9+
fun main(args: Array<String>) {
10+
SpringApplication.run(Application::class.java, *args)
11+
}
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
package org.komapper.example.entity
2+
3+
import java.io.Serializable
4+
import java.math.BigDecimal
5+
6+
data class Account(
7+
val username: String,
8+
val email: String,
9+
val firstName: String,
10+
val lastName: String,
11+
val status: String?,
12+
val address1: String,
13+
val address2: String?,
14+
val city: String,
15+
val state: String,
16+
val zip: String,
17+
val country: String,
18+
val phone: String,
19+
) : Serializable
20+
21+
data class BannerData(
22+
val favouriteCategoryId: String,
23+
val bannerName: String?,
24+
) : Serializable
25+
26+
data class Category(
27+
val categoryId: String,
28+
val name: String?,
29+
val description: String?,
30+
) : Serializable
31+
32+
data class Inventory(
33+
val itemId: String,
34+
val quantity: Int,
35+
) : Serializable
36+
37+
data class Item(
38+
val itemId: String,
39+
val productId: String,
40+
val listPrice: BigDecimal,
41+
val unitCost: BigDecimal,
42+
val supplierId: Int?,
43+
val status: String?,
44+
val attribute1: String?,
45+
val attribute2: String?,
46+
val attribute3: String?,
47+
val attribute4: String?,
48+
val attribute5: String?,
49+
) : Serializable
50+
51+
data class LineItem(
52+
val orderId: Int,
53+
val lineNumber: Int,
54+
val itemId: String,
55+
val quantity: Int,
56+
val unitPrice: BigDecimal,
57+
) : Serializable {
58+
val total: BigDecimal
59+
get() = unitPrice.multiply(BigDecimal(quantity))
60+
}
61+
62+
data class Order(
63+
val orderId: Int = 0,
64+
val username: String,
65+
val orderDate: java.time.LocalDateTime,
66+
val shipAddress1: String,
67+
val shipAddress2: String?,
68+
val shipCity: String,
69+
val shipState: String,
70+
val shipZip: String,
71+
val shipCountry: String,
72+
val billAddress1: String,
73+
val billAddress2: String?,
74+
val billCity: String,
75+
val billState: String,
76+
val billZip: String,
77+
val billCountry: String,
78+
val courier: String,
79+
val totalPrice: BigDecimal,
80+
val billToFirstName: String,
81+
val billToLastName: String,
82+
val shipToFirstName: String,
83+
val shipToLastName: String,
84+
val creditCard: String,
85+
val expiryDate: String,
86+
val cardType: String,
87+
val locale: String,
88+
) : Serializable
89+
90+
data class OrderStatus(
91+
val orderId: Int,
92+
val lineNumber: Int,
93+
val timestamp: java.time.LocalDate,
94+
val status: String,
95+
) : Serializable
96+
97+
data class Product(
98+
val productId: String,
99+
val categoryId: String,
100+
val name: String?,
101+
val description: String?,
102+
) : Serializable
103+
104+
data class Profile(
105+
val username: String,
106+
val languagePreference: String,
107+
val favouriteCategoryId: String?,
108+
val listOption: Int?,
109+
val bannerOption: Int?,
110+
) : Serializable
111+
112+
data class SignOn(
113+
val username: String,
114+
val password: String,
115+
) : Serializable
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
package org.komapper.example.entity
2+
3+
import org.komapper.annotation.KomapperColumn
4+
import org.komapper.annotation.KomapperEntityDef
5+
import org.komapper.annotation.KomapperId
6+
import org.komapper.annotation.KomapperSequence
7+
import org.komapper.annotation.KomapperTable
8+
9+
@KomapperEntityDef(Account::class)
10+
@KomapperTable("ACCOUNT")
11+
data class AccountDef(
12+
@KomapperId @KomapperColumn("USERID") val username: Nothing,
13+
@KomapperColumn("EMAIL") val email: Nothing,
14+
@KomapperColumn("FIRSTNAME") val firstName: Nothing,
15+
@KomapperColumn("LASTNAME") val lastName: Nothing,
16+
@KomapperColumn("STATUS") val status: Nothing,
17+
@KomapperColumn("ADDR1") val address1: Nothing,
18+
@KomapperColumn("ADDR2") val address2: Nothing,
19+
@KomapperColumn("CITY") val city: Nothing,
20+
@KomapperColumn("STATE") val state: Nothing,
21+
@KomapperColumn("ZIP") val zip: Nothing,
22+
@KomapperColumn("COUNTRY") val country: Nothing,
23+
@KomapperColumn("PHONE") val phone: Nothing,
24+
)
25+
26+
@KomapperEntityDef(BannerData::class)
27+
@KomapperTable("BANNERDATA")
28+
data class BannerDataDef(
29+
@KomapperId @KomapperColumn("FAVCATEGORY") val favouriteCategoryId: Nothing,
30+
@KomapperColumn("BANNERNAME") val bannerName: Nothing,
31+
)
32+
33+
@KomapperEntityDef(Category::class)
34+
@KomapperTable("CATEGORY")
35+
data class CategoryDef(
36+
@KomapperId @KomapperColumn("CATID") val categoryId: Nothing,
37+
@KomapperColumn("NAME") val name: Nothing,
38+
@KomapperColumn("DESCN") val description: Nothing,
39+
)
40+
41+
@KomapperEntityDef(Inventory::class)
42+
@KomapperTable("INVENTORY")
43+
data class InventoryDef(
44+
@KomapperId @KomapperColumn("ITEMID") val itemId: Nothing,
45+
@KomapperColumn("QTY") val quantity: Nothing,
46+
)
47+
48+
@KomapperEntityDef(Item::class)
49+
@KomapperTable("ITEM")
50+
data class ItemDef(
51+
@KomapperId @KomapperColumn("ITEMID") val itemId: Nothing,
52+
@KomapperColumn("PRODUCTID") val productId: Nothing,
53+
@KomapperColumn("LISTPRICE") val listPrice: Nothing,
54+
@KomapperColumn("UNITCOST") val unitCost: Nothing,
55+
@KomapperColumn("SUPPLIER") val supplierId: Nothing,
56+
@KomapperColumn("STATUS") val status: Nothing,
57+
@KomapperColumn("ATTR1") val attribute1: Nothing,
58+
@KomapperColumn("ATTR2") val attribute2: Nothing,
59+
@KomapperColumn("ATTR3") val attribute3: Nothing,
60+
@KomapperColumn("ATTR4") val attribute4: Nothing,
61+
@KomapperColumn("ATTR5") val attribute5: Nothing,
62+
)
63+
64+
@KomapperEntityDef(LineItem::class)
65+
@KomapperTable("LINEITEM")
66+
data class LineItemDef(
67+
@KomapperId @KomapperColumn("ORDERID") val orderId: Nothing,
68+
@KomapperId @KomapperColumn("LINENUM") val lineNumber: Nothing,
69+
@KomapperColumn("ITEMID") val itemId: Nothing,
70+
@KomapperColumn("QUANTITY") val quantity: Nothing,
71+
@KomapperColumn("UNITPRICE") val unitPrice: Nothing,
72+
)
73+
74+
@KomapperEntityDef(Order::class)
75+
@KomapperTable("ORDERS")
76+
data class OrderDef(
77+
@KomapperId @KomapperColumn("ORDERID")
78+
@KomapperSequence("ORDERS_SEQ", startWith = 1001, incrementBy = 10)
79+
val orderId: Nothing,
80+
@KomapperColumn("USERID") val username: Nothing,
81+
@KomapperColumn("ORDERDATE") val orderDate: Nothing,
82+
@KomapperColumn("SHIPADDR1") val shipAddress1: Nothing,
83+
@KomapperColumn("SHIPADDR2") val shipAddress2: Nothing,
84+
@KomapperColumn("SHIPCITY") val shipCity: Nothing,
85+
@KomapperColumn("SHIPSTATE") val shipState: Nothing,
86+
@KomapperColumn("SHIPZIP") val shipZip: Nothing,
87+
@KomapperColumn("SHIPCOUNTRY") val shipCountry: Nothing,
88+
@KomapperColumn("BILLADDR1") val billAddress1: Nothing,
89+
@KomapperColumn("BILLADDR2") val billAddress2: Nothing,
90+
@KomapperColumn("BILLCITY") val billCity: Nothing,
91+
@KomapperColumn("BILLSTATE") val billState: Nothing,
92+
@KomapperColumn("BILLZIP") val billZip: Nothing,
93+
@KomapperColumn("BILLCOUNTRY") val billCountry: Nothing,
94+
@KomapperColumn("COURIER") val courier: Nothing,
95+
@KomapperColumn("TOTALPRICE") val totalPrice: Nothing,
96+
@KomapperColumn("BILLTOFIRSTNAME") val billToFirstName: Nothing,
97+
@KomapperColumn("BILLTOLASTNAME") val billToLastName: Nothing,
98+
@KomapperColumn("SHIPTOFIRSTNAME") val shipToFirstName: Nothing,
99+
@KomapperColumn("SHIPTOLASTNAME") val shipToLastName: Nothing,
100+
@KomapperColumn("CREDITCARD") val creditCard: Nothing,
101+
@KomapperColumn("EXPRDATE") val expiryDate: Nothing,
102+
@KomapperColumn("CARDTYPE") val cardType: Nothing,
103+
@KomapperColumn("LOCALE") val locale: Nothing,
104+
)
105+
106+
@KomapperEntityDef(OrderStatus::class)
107+
@KomapperTable("ORDERSTATUS")
108+
data class OrderStatusDef(
109+
@KomapperId @KomapperColumn("ORDERID") val orderId: Nothing,
110+
@KomapperId @KomapperColumn("LINENUM") val lineNumber: Nothing,
111+
@KomapperColumn("TIMESTAMP") val timestamp: Nothing,
112+
@KomapperColumn("STATUS") val status: Nothing,
113+
)
114+
115+
@KomapperEntityDef(Product::class)
116+
@KomapperTable("PRODUCT")
117+
data class ProductDef(
118+
@KomapperId @KomapperColumn("PRODUCTID") val productId: Nothing,
119+
@KomapperColumn("CATEGORY") val categoryId: Nothing,
120+
@KomapperColumn("NAME") val name: Nothing,
121+
@KomapperColumn("DESCN") val description: Nothing,
122+
)
123+
124+
@KomapperEntityDef(Profile::class)
125+
@KomapperTable("PROFILE")
126+
data class ProfileDef(
127+
@KomapperId @KomapperColumn("USERID") val username: Nothing,
128+
@KomapperColumn("LANGPREF") val languagePreference: Nothing,
129+
@KomapperColumn("FAVCATEGORY") val favouriteCategoryId: Nothing,
130+
@KomapperColumn("MYLISTOPT") val listOption: Nothing,
131+
@KomapperColumn("BANNEROPT") val bannerOption: Nothing,
132+
)
133+
134+
@KomapperEntityDef(SignOn::class)
135+
@KomapperTable("SIGNON")
136+
data class SignOnDef(
137+
@KomapperId @KomapperColumn("USERNAME") val username: Nothing,
138+
@KomapperColumn("PASSWORD", masking = true) val password: Nothing,
139+
)

0 commit comments

Comments
 (0)