Skip to content

Commit 20517c7

Browse files
authored
Update README.md
1 parent c23ef75 commit 20517c7

File tree

1 file changed

+6
-303
lines changed

1 file changed

+6
-303
lines changed

README.md

Lines changed: 6 additions & 303 deletions
Original file line numberDiff line numberDiff line change
@@ -8,311 +8,14 @@ It generates Java, Kotlin, and SQL files from Database.
88
[![project chat](https://img.shields.io/badge/zulip-join_chat-green.svg)](https://domaframework.zulipchat.com)
99
[![Twitter](https://img.shields.io/badge/[email protected]?style=flat)](https://twitter.com/domaframework)
1010

11-
Check latest version
12-
--------------------
13-
14-
- [Gradle Plugin Portal](https://plugins.gradle.org/plugin/org.domaframework.doma.codegen).
15-
16-
How to use
17-
----------
18-
19-
The basic build.gradle example is as follows:
20-
21-
```groovy
22-
buildscript {
23-
repositories {
24-
mavenCentral()
25-
}
26-
dependencies {
27-
// specify your JDBC driver
28-
classpath 'com.h2database:h2:1.3.175'
29-
}
30-
}
31-
32-
plugins {
33-
id 'java'
34-
// specify the Doma CodeGen Plugin with correct version
35-
id 'org.domaframework.doma.codegen' version '2.x.x'
36-
}
37-
38-
domaCodeGen {
39-
// make an arbitrary named block
40-
dev {
41-
// JDBC url
42-
url = '...'
43-
// JDBC user
44-
user = '...'
45-
// JDBC password
46-
password = '...'
47-
// configuration for generated entity source files
48-
entity {
49-
packageName = 'org.example.entity'
50-
}
51-
// configuration for generated DAO source files
52-
dao {
53-
packageName = 'org.example.dao'
54-
}
55-
}
56-
}
57-
```
58-
59-
The above code is equivalent to the following build.gradle.kts:
60-
61-
```kotlin
62-
buildscript {
63-
repositories {
64-
mavenCentral()
65-
}
66-
dependencies {
67-
classpath("com.h2database:h2:1.3.175")
68-
}
69-
}
70-
71-
plugins {
72-
id("java")
73-
// specify the Doma CodeGen Plugin with correct version
74-
id("org.domaframework.doma.codegen") version "2.x.x"
75-
}
76-
77-
domaCodeGen {
78-
register("dev") {
79-
url.set("...")
80-
user.set("...")
81-
password.set("...")
82-
entity {
83-
packageName.set("org.example.entity")
84-
}
85-
dao {
86-
packageName.set("org.example.dao")
87-
}
88-
}
89-
}
90-
```
91-
92-
To generate all files, run `domaCodeGenDevAll` task:
93-
94-
```bash
95-
$ ./gradlew domaCodeGenDevAll
96-
```
97-
98-
Sample Project
99-
--------------
100-
101-
- [kotlin-sample](https://github.com/domaframework/kotlin-sample)
102-
103-
Gradle Tasks
104-
------------
105-
106-
The Doma CodeGen Plugin provides following tasks:
107-
108-
- domaCodeGen*Name*All - Generates all.
109-
- domaCodeGen*Name*Dao - Generates DAO source files.
110-
- domaCodeGen*Name*Dto - Reads resultSet metadata and generate a DTO source file.
111-
- domaCodeGen*Name*Entity - Generates entity source files.
112-
- domaCodeGen*Name*Sql - Generates SQL files.
113-
- domaCodeGen*Name*SqlTest - Generates SQL test source files.
114-
115-
Note that each *Name* part in the above task names is replaced with the block name defined under the `domaCodeGen` block.
116-
In the above usage example, the *Dev* part is corresponding to the `dev` block.
117-
118-
To check all defined task names, run the `tasks` task:
119-
120-
```bash
121-
$ ./gradlew tasks
122-
```
123-
124-
Config Options
125-
--------------
126-
127-
### named config
128-
129-
A named config must be under the `domaCodeGen` block.
130-
The name of the config is arbitrary.
131-
You can make multiple configs under the `domaCodeGen` block.
132-
133-
In the following example, we define two configs - `sales` and `account`:
134-
135-
```groovy
136-
domaCodeGen {
137-
sales {
138-
url = "jdbc:h2:mem:sales"
139-
}
140-
account {
141-
url = "jdbc:h2:mem:account"
142-
}
143-
}
144-
```
145-
146-
| Option | Description | Values | Default |
147-
| :--- | :--- | :--- | :--- |
148-
| url | JDBC url | | |
149-
| user | JDBC user | | |
150-
| password | JDBC password | | |
151-
| dataSource | database data source | | inferred by the url |
152-
| codeGenDialect | database dialect | | inferred by the url |
153-
| catalogName | database catalog name | | |
154-
| schemaName | database schema name | | |
155-
| tableNamePattern | database table pattern (Regex) | | ".*" |
156-
| ignoredTableNamePattern | database ignored table pattern (Regex) | | ".*\$.*" |
157-
| tableTypes | database table type | such as "TABLE", "VIEW", and so on | "TABLE" |
158-
| versionColumnNamePattern | database version column pattern (Regex) | | "VERSION([_]?NO)?" |
159-
| languageType | language of generation code | (*1) `LanguageType.JAVA`, `LanguageType.KOTLIN` | `LanguageType.JAVA` |
160-
| languageClassResolver | class resolver for language dedicated classes | | depends on `languageType` |
161-
| templateEncoding | encoding for freeMarker template files | | "UTF-8" |
162-
| templateDir | directory for user customized template files | | |
163-
| encoding | encoding for generated Java source files | | "UTF-8" |
164-
| sourceDir | directory for generated Java source files | | depends on `languageType` |
165-
| testSourceDir | directory for generated Java test source files | | depends on `languageType` |
166-
| resourceDir | directory for generated SQL files | | "src/main/resources" |
167-
| globalFactory | entry point to customize plugin behavior | | (*2) The instance of `GlobalFactory` |
168-
169-
- (*1) The FQN of `LanguageType` is `org.seasar.doma.gradle.codegen.desc.LanguageType`
170-
- (*2) The FQN of `GlobalFactory` is `org.seasar.doma.gradle.codegen.GlobalFactory`
171-
172-
### entity
173-
174-
An `entity` block must be under a named config:
175-
176-
```groovy
177-
domaCodeGen {
178-
sales {
179-
entity {
180-
useAccessor = false
181-
}
182-
}
183-
}
184-
```
185-
186-
| Option | Description | Values | Default |
187-
| :--- | :--- | :--- | :--- |
188-
| overwrite | where to overwrite generated entity files or not | | `true` |
189-
| overwriteListener | allow to overwrite listeners or not | | `false` |
190-
| superclassName | common superclass for generated entity classes | | |
191-
| listenerSuperclassName | common superclass for generated entity listener classes | | |
192-
| packageName | package name for generated entity class | | "example.entity" |
193-
| generationType | generation type for entity identities | (*1) enum value of `GenerationType` | |
194-
| namingType | naming convention | (*2) enum value of `NamingType` | |
195-
| initialValue | initial value for entity identities | | |
196-
| allocationSize | allocation size for entity identities | | |
197-
| showCatalogName | whether to show catalog names or not | | `false` |
198-
| showSchemaName | whether to show schema names or not | | `false` |
199-
| showTableName | whether to show table names or not | | `true` |
200-
| showColumnName | whether to show column names or not | | `true` |
201-
| showDbComment | whether to show database comments or not | | `true` |
202-
| useAccessor | whether to use accessors or not | | `true` |
203-
| useListener | whether to use listeners or not | | `true` |
204-
| useMetamodel | whether to use metamodels or not | | `true` |
205-
| useMappedSuperclass | whether to use mapped superclasses or not | | `true` |
206-
| originalStatesPropertyName | property to be annotated with `@OriginalStates` | | |
207-
| entityPropertyClassNamesFile | file used to resolve entity property classes | | |
208-
| prefix | prefix for entity classes | | |
209-
| suffix | suffix for entity classes | | |
210-
211-
- (*1) The FQN of `GenerationType` is `org.seasar.doma.gradle.codegen.desc.GenerationType`
212-
- (*2) The FQN of `NamingType` is `org.seasar.doma.gradle.codegen.NamingType`
213-
214-
### dao
215-
216-
A `dao` block must be under a named config:
217-
218-
```groovy
219-
domaCodeGen {
220-
sales {
221-
dao {
222-
packageName = 'org.example.sales.dao'
223-
}
224-
}
225-
}
226-
```
227-
228-
| Option | Description | Values | Default |
229-
| :--- | :--- | :--- | :--- |
230-
| overwrite | whether to overwrite generated DAO files or not | | `false` |
231-
| packageName | package name for generated DAO classes | | "example.dao" |
232-
| suffix | suffix for Dao classes | | "Dao" |
233-
| configClassName | `org.seasar.doma.jdbc.Config` implemented class name. Tha name is used at @Dao | | `false` |
234-
235-
### sql
236-
237-
A `sql` block must be under a named config:
238-
239-
```groovy
240-
domaCodeGen {
241-
sales {
242-
sql {
243-
overwrite = false
244-
}
245-
}
246-
}
247-
```
248-
249-
| Option | Description | Values | Default |
250-
| :--- | :--- | :--- | :--- |
251-
| overwrite | whether to overwrite generated sql files or not | | `true` |
252-
253-
254-
Customization
11+
Documentation
25512
-------------
25613

257-
### Generating Kotlin code
258-
259-
To generate Kotlin code, specify `LanguageType.KOTLIN` to the languageType option as follows:
260-
261-
```groovy
262-
import org.seasar.doma.gradle.codegen.desc.LanguageType
263-
264-
...
265-
266-
domaCodeGen {
267-
dev {
268-
url = '...'
269-
user = '...'
270-
password = '...'
271-
languageType = LanguageType.KOTLIN
272-
entity {
273-
packageName = 'org.example.entity'
274-
}
275-
dao {
276-
packageName = 'org.example.dao'
277-
}
278-
}
279-
}
280-
```
14+
- English: https://doma.readthedocs.io/en/latest/codegen/
15+
- Japanese: https://doma.readthedocs.io/ja/latest/codegen/
28116

17+
Check latest version
18+
--------------------
28219

283-
### Using custom template files
284-
285-
Default template files are located in the source code repository of the Doma CodeGen Plugin.
286-
They are listed as follows:
287-
288-
| Template File | Data Model Class | Generated Files |
289-
| :--- | :--- | :--- |
290-
| entity.ftl | org.seasar.doma.gradle.codege.desc.EntityDesc | entity source files|
291-
| entityListener.ftl | org.seasar.doma.gradle.codege.desc.EntityListenerDesc | entity listener source files |
292-
| dao.ftl | org.seasar.doma.gradle.codege.desc.DaoDesc | DAO source files |
293-
| sqlTest.ftl | org.seasar.doma.gradle.codege.desc.SqlTestDesc | test source files for SQL |
294-
| selectById.sql.ftl | org.seasar.doma.gradle.codege.desc.SqlDesc | SQL files |
295-
| selectByIdAndVersion.sql.ftl | org.seasar.doma.gradle.codege.desc.SqlDesc | SQL files |
296-
297-
To create custom template files, copy them and modify their contents without changing file names.
298-
Then put them in the directory which is specified to the `templateDir` option.
299-
300-
```groovy
301-
domaCodeGen {
302-
dev {
303-
url = '...'
304-
user = '...'
305-
password = '...'
306-
// specify the directory including your custom template files
307-
templateDir = file("$projectDir/template")
308-
entity {
309-
packageName = 'org.example.entity'
310-
}
311-
dao {
312-
packageName = 'org.example.dao'
313-
}
314-
}
315-
}
316-
```
20+
- [Gradle Plugin Portal](https://plugins.gradle.org/plugin/org.domaframework.doma.codegen)
31721

318-
The Doma CodeGen Plugin uses [Apache FreeMarker](https://freemarker.apache.org/) to process the template files.

0 commit comments

Comments
 (0)