@@ -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