Skip to content

Commit d3e2cda

Browse files
author
朱承超
committed
Merge branch 'feature/codegenerator' into 'feature/codegenerator'
Feature/codegenerator See merge request !8
2 parents c2358bc + 2a8d586 commit d3e2cda

6 files changed

Lines changed: 110 additions & 20 deletions

File tree

README.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
1、增加了获取sqlServer数据库字段注释的功能(官网给出的解释是JDBC不支持获取sqlServer字段注释)。
2+
2、扩展生成Bo,table里添加boObjectName属性,对应的XML配置如下:
3+
<javaBoGeneratortargetPackage="com.btjf.business.authentication.custcertification.Bo"
4+
targetProject="Java-generator-core/src/main/java">
5+
<propertyname="enableSubPackages" value="true" />
6+
<propertyname="trimStrings" value="true" />
7+
</javaBoGenerator>
8+
3、(1)table里增加了
9+
enableInsertSelective
10+
enableUpdateByExampleSelective属性,其默认值为true;
11+
(2)对应的enableUpdateByExample
12+
enableUpdateByPrimaryKey
13+
enableInsert默认改成了false ;
14+
(3)新增enableSelectAll
15+
enableSelectNotDele
16+
enableSelectNotDeleteByPrimaryKey属性,默认为false;
17+
对应的则在Mapper中添加了相应的方法。
18+
4、结合freemarker和XML生成了简单的Service和domain,对应的XML配置如下:
19+
<javaServiceGenerator targetPackage="com.btjf.business.authentication.custcertification.service"
20+
targetProject="java-generator-core/src/main/java">
21+
<propertyname="enableSubPackages" value="true" />
22+
</javaServiceGenerator>
23+
<javaDomainGenerator targetPackage="com.btjf.business.authentication.custcertification.domain"
24+
targetProject="java-generator-core/src/main/java">
25+
</javaDomainGenerator>
26+
5、 注意:javaBoGenerator、javaServiceGenerator均为可选不进行配置,javaDomainGenerator和javaServiceGenerator成对出现(要么都配置,要么都不配置)
27+
28+
6、附上整个的generatorConfig.xml,所有的均以t_member表为例的。
29+
[html] view plain copy
30+
<?xml version="1.0" encoding="UTF-8" ?>
31+
32+
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
33+
<generatorConfiguration>
34+
<classPathEntry location="F:/tools/libs/com/microsoft/sqlserver/sqljdbc4/6.0/sqljdbc4-6.0.jar" />
35+
<context id="beitaijinfu" targetRuntime="MyBatis3">
36+
<property name="javaFileEncoding" value="UTF-8"/>
37+
<property name="mergeable" value="true" />
38+
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
39+
<plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin"></plugin>
40+
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
41+
<commentGenerator type="org.mybatis.generator.internal.DefaultCommentGenerator">
42+
<property name="suppressDate" value="true" />
43+
<property name="addRemarkComments" value="true" />
44+
</commentGenerator>
45+
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver" connectionURL=""
46+
userId="" password="" />
47+
<javaTypeResolver>
48+
<property name="forceBigDecimals" value="false"/>
49+
</javaTypeResolver>
50+
51+
<!--<javaBoGenerator targetPackage="com.btjf.business.authentication.custcertification.Bo" targetProject="java-generator-core/src/main/java">-->
52+
<!--<property name="enableSubPackages" value="true" />-->
53+
<!--<property name="trimStrings" value="true" />-->
54+
<!--</javaBoGenerator>-->
55+
<javaModelGenerator targetPackage="com.btjf.business.authentication.custcertification.model" targetProject="java-generator-core/src/main/java">
56+
<property name="enableSubPackages" value="true" />
57+
<property name="trimStrings" value="true" />
58+
</javaModelGenerator>
59+
<sqlMapGenerator targetPackage="com.btjf.business.authentication.custcertification.mapper" targetProject="java-generator-core/src/main/java">
60+
<property name="enableSubPackages" value="true" />
61+
</sqlMapGenerator>
62+
<javaClientGenerator targetPackage="com.btjf.business.authentication.custcertification.mapper" targetProject="java-generator-core/src/main/java" type="XMLMAPPER">
63+
<property name="enableSubPackages" value="true" />
64+
</javaClientGenerator>
65+
<!--<javaServiceGenerator targetPackage="com.btjf.business.authentication.custcertification.service" targetProject="java-generator-core/src/main/java">-->
66+
<!--<property name="enableSubPackages" value="true" />-->
67+
<!--</javaServiceGenerator>-->
68+
<!--<javaDomainGenerator targetPackage="com.btjf.business.authentication.custcertification.domain"-->
69+
<!--targetProject="java-generator-core/src/main/java">-->
70+
<!--</javaDomainGenerator>-->
71+
72+
<table tableName="t_Member" domainObjectName="Member" boObjectName="MemberBo" enableInsert="false" enableUpdateByExample = "false" enableSelectAll="true" enableSelectNotDeleteAll="true"
73+
enableSelectNotDeleteByPrimaryKey = "true"
74+
>
75+
<property name="useActualColumnNames" value="true"/>
76+
<generatedKey column="FID" sqlStatement="SELECT @@IDENTITY" identity="true"/>
77+
<columnRenamingRule searchString="^F" replaceString=""/>
78+
</table>
79+
</context>
80+
81+
</generatorConfiguration>

READMENEW.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# java-generator
2+
mybatis-generator扩展:
3+
1、增加了获取sqlServer数据库字段注释的功能;
4+
2、扩展生成Bo;
5+
3、结合freemarker和XML生成了简单的Service和domain;
6+
4、增加了Mapper中的一些方法。

java-generator-core/src/main/java/org/mybatis/generator/api/IntrospectedTable.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1417,13 +1417,6 @@ protected void calculateBoAttributes() {
14171417
sb.append(fullyQualifiedTable.getBoObjectName());
14181418
setBaseRecordType(sb.toString());
14191419

1420-
sb.setLength(0);
1421-
sb.append(pakkage);
1422-
sb.append('.');
1423-
sb.append(fullyQualifiedTable.getBoObjectName());
1424-
sb.append("WithBLOBs"); //$NON-NLS-1$
1425-
setRecordWithBLOBsType(sb.toString());
1426-
14271420
}
14281421
/**
14291422
* Calculate java model package.

java-generator-core/src/main/java/org/mybatis/generator/api/MyBatisGenerator.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,13 @@ public void generate(ProgressCallback callback, Set<String> contextIds,
223223
/**
224224
* 如果JavaServiceGeneratorConfiguration存在则调用相关方法
225225
*/
226-
if (configuration.getContexts().get(0).getJavaServiceGeneratorConfiguration()!=null)
227-
JavaServiceGenerator.addJavaServiceGenerator(assignmentServiceTemplateEntity());
226+
for (Context c:configuration.getContexts()) {
227+
if (c.getJavaServiceGeneratorConfiguration() != null)
228+
JavaServiceGenerator.addJavaServiceGenerator(assignmentServiceTemplateEntity());
228229

229-
if (configuration.getContexts().get(0).getJavaDomainGeneratorConfiguration()!=null)
230-
JavaDomainGenerator.addJavaDomainGenerator(assignmentDomainTemplateEntity());
230+
if (c.getJavaDomainGeneratorConfiguration() != null)
231+
JavaDomainGenerator.addJavaDomainGenerator(assignmentDomainTemplateEntity());
232+
}
231233

232234
generatedJavaFiles.clear();
233235
generatedXmlFiles.clear();
@@ -319,11 +321,6 @@ private void writeGeneratedJavaFile(GeneratedJavaFile gjf, ProgressCallback call
319321
gjf.getFileEncoding());
320322

321323
} else if (shellCallback.isOverwriteEnabled()) {
322-
JavaFileMergerJaxp.mergeJavaFile(gjf
323-
.getFormattedContent(), targetFile
324-
.getAbsolutePath(),
325-
MergeConstants.OLD_ELEMENT_TAGS,
326-
gjf.getFileEncoding());
327324
source = gjf.getFormattedContent();
328325
warnings.add(getString("Warning.11", //$NON-NLS-1$
329326
targetFile.getAbsolutePath()));

java-generator-core/src/main/java/org/mybatis/generator/codegen/freemarker/JavaDomainGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ public static void addJavaDomainGenerator(List<DomainTemplateEntity> domainTempl
2222
for (DomainTemplateEntity d:domainTemplateEntities) {
2323
DomainTemplateEntity.DomainTemplate domainTemplate = d.getDomainTemplate();
2424
DomainTemplateEntity.NativeDomainTemplate nativeDomainTemplate = d.getNativeDomainTemplate();
25-
cfg.setClassForTemplateLoading(JavaServiceGenerator.class, "/template"); //指定模板所在的classpath目录
25+
cfg.setClassForTemplateLoading(JavaDomainGenerator.class, "/template"); //指定模板所在的classpath目录
2626
Template t = cfg.getTemplate("DomainTemplate"); //指定模板
2727
File f = new File(System.getProperty("user.dir") +"/"+ domainTemplate.getProjectTargetPackage());
2828
f.mkdirs();
2929
FileOutputStream fos = new FileOutputStream(new File(System.getProperty("user.dir") +"/"+ domainTemplate.getProjectTargetPackage() + domainTemplate.getDomainInterface()+".java")); //java文件的生成目录
3030
t.process(domainTemplate, new OutputStreamWriter(fos, "utf-8")); //
3131
Configuration cfg1 = new Configuration();
32-
cfg1.setClassForTemplateLoading(JavaServiceGenerator.class, "/template"); //指定模板所在的classpath目录
32+
cfg1.setClassForTemplateLoading(JavaDomainGenerator.class, "/template"); //指定模板所在的classpath目录
3333
Template t1 = cfg1.getTemplate("NativeDomainTemplate"); //指定模板
3434
FileOutputStream fos1 = new FileOutputStream(new File(System.getProperty("user.dir") +"/"+ nativeDomainTemplate.getProjectTargetPackage() + nativeDomainTemplate.getNativeDomainClazz()+".java")); //java文件的生成目录
3535
t1.process(nativeDomainTemplate, new OutputStreamWriter(fos1, "utf-8")); //

java-generator-core/src/main/java/org/mybatis/generator/internal/JavaFileMergerJaxp.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import javax.xml.parsers.DocumentBuilderFactory;
1313
import java.io.*;
1414

15+
import static org.springframework.util.FileCopyUtils.copy;
1516

1617

1718
/**
@@ -21,8 +22,20 @@ public class JavaFileMergerJaxp {
2122
public static String mergeJavaFile(String newFileSource,
2223
String existingFileFullPath, String[] javadocTags, String fileEncoding)
2324
throws ShellException {
24-
System.out.println(existingFileFullPath);
25-
// System.out.println(newFileSource);
25+
// System.out.println(existingFileFullPath);
26+
27+
StringWriter out = new StringWriter();
28+
try {
29+
Reader in = new FileReader(existingFileFullPath);
30+
copy(in,out);
31+
String regerx = "\\/\\*\\*[\\s\\S]*(@mbg.generated)[\\s\\S]*\\}";
32+
// String str = out.toString().replaceAll(regerx,"");
33+
// System.out.println(str);
34+
} catch (IOException e) {
35+
e.printStackTrace();
36+
}
37+
38+
2639
return null;
2740
}
2841

0 commit comments

Comments
 (0)