├── .classpath ├── .project ├── .settings ├── org.eclipse.core.resources.prefs ├── org.eclipse.jdt.core.prefs ├── org.eclipse.m2e.core.prefs ├── org.eclipse.wst.common.component ├── org.eclipse.wst.common.project.facet.core.xml └── org.maven.ide.eclipse.prefs ├── README.md ├── pom.xml ├── src ├── main │ └── java │ │ └── com │ │ └── tangdi │ │ └── def │ │ └── toolkit │ │ └── mybatis │ │ ├── data │ │ ├── BaseDao.java │ │ └── NoId.java │ │ └── generator │ │ ├── AddPaginationElementGenerator.java │ │ ├── MapperGenerator.java │ │ ├── TdCommentGenerator.java │ │ ├── TdMapperPlugin.java │ │ └── TdPaginationPlugin.java └── test │ └── java │ └── com │ └── tangdi │ └── def │ └── toolkit │ └── mybatis │ └── AppTest.java └── 使用手册.txt /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | tddef-toolkit-mybatis 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.wst.common.project.facet.core.builder 10 | 11 | 12 | 13 | 14 | org.eclipse.jdt.core.javabuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.m2e.core.maven2Builder 20 | 21 | 22 | 23 | 24 | org.eclipse.wst.validation.validationbuilder 25 | 26 | 27 | 28 | 29 | org.maven.ide.eclipse.maven2Builder 30 | 31 | 32 | 33 | 34 | 35 | org.maven.ide.eclipse.maven2Nature 36 | org.eclipse.jem.workbench.JavaEMFNature 37 | org.eclipse.wst.common.modulecore.ModuleCoreNature 38 | org.eclipse.jdt.core.javanature 39 | org.eclipse.m2e.core.maven2Nature 40 | org.eclipse.wst.common.project.facet.core.nature 41 | 42 | 43 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/main/java=UTF-8 3 | encoding//src/test/java=UTF-8 4 | encoding/=UTF-8 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | #Tue Apr 19 09:26:40 CST 2016 2 | eclipse.preferences.version=1 3 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 6 | org.eclipse.jdt.core.compiler.compliance=1.7 7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 12 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 13 | org.eclipse.jdt.core.compiler.source=1.7 14 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.project.facet.core.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.settings/org.maven.ide.eclipse.prefs: -------------------------------------------------------------------------------- 1 | #Tue Apr 19 09:25:23 CST 2016 2 | activeProfiles= 3 | eclipse.preferences.version=1 4 | fullBuildGoals=process-test-resources 5 | resolveWorkspaceProjects=true 6 | resourceFilterGoals=process-resources resources\:testResources 7 | skipCompilerPlugin=true 8 | version=1 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tddef-toolkit-mybatis
2 | mybatis-generator插件,生成基础dao和常见crud方法,支持mysql和oracle分页,实体类带注释 3 | 具体generatorConfig.xml配置见使用手册.txt 4 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | com.tangdi.def 6 | tddef-toolkit-mybatis 7 | 0.6.4 8 | jar 9 | 10 | td-toolkit-mybatis 11 | http://www.tangdi.com.cn 12 | MyBatis插件 13 | 14 | 15 | UTF-8 16 | 17 | 18 | 19 | 20 | junit 21 | junit 22 | 3.8.1 23 | test 24 | 25 | 26 | org.mybatis.generator 27 | mybatis-generator-core 28 | 1.3.2 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/main/java/com/tangdi/def/toolkit/mybatis/data/BaseDao.java: -------------------------------------------------------------------------------- 1 | package com.tangdi.def.toolkit.mybatis.data; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | /** 8 | * Document BaseDao 9 | *

10 | * 11 | * @version 1.0.0,2015-11-6 12 | * @author li.sy 13 | * @since 1.0.0 14 | */ 15 | 16 | public interface BaseDao { 17 | int deleteByPrimaryKey(ID id); 18 | 19 | int insert(T record) ; 20 | 21 | int insertSelective(T record) ; 22 | 23 | T selectByPrimaryKey(ID id) ; 24 | 25 | int updateByPrimaryKeySelective(T record) ; 26 | 27 | int updateByPrimaryKey(T record) ; 28 | 29 | List selectAll() ; 30 | 31 | List selectByPager(Map param) ; 32 | 33 | List selectByCondition(Map param) ; 34 | 35 | int countByCondition(Map param); 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/tangdi/def/toolkit/mybatis/data/NoId.java: -------------------------------------------------------------------------------- 1 | /*@(#)NoId.java 2015-11-6 2 | * Copy Right 2015 Bank of Communications Co.Ltd. 3 | * All Copyright Reserved 4 | */ 5 | 6 | package com.tangdi.def.toolkit.mybatis.data; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * TODO Document NoId 12 | *

13 | * @version 1.0.0,2015-11-6 14 | * @author li.sy 15 | * @since 1.0.0 16 | */ 17 | public class NoId 18 | implements Serializable 19 | { 20 | 21 | private static final long serialVersionUID = -5765735620723314936L; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/tangdi/def/toolkit/mybatis/generator/AddPaginationElementGenerator.java: -------------------------------------------------------------------------------- 1 | package com.tangdi.def.toolkit.mybatis.generator; 2 | 3 | import java.util.Iterator; 4 | import java.util.List; 5 | import org.mybatis.generator.api.CommentGenerator; 6 | import org.mybatis.generator.api.IntrospectedColumn; 7 | import org.mybatis.generator.api.IntrospectedTable; 8 | import org.mybatis.generator.api.dom.xml.Attribute; 9 | import org.mybatis.generator.api.dom.xml.TextElement; 10 | import org.mybatis.generator.api.dom.xml.XmlElement; 11 | import org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities; 12 | import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.AbstractXmlElementGenerator; 13 | import org.mybatis.generator.config.Context; 14 | 15 | /*** 16 | * add pageation sql in mapper.xml,only support mysql and oracle db 17 | * @author li.sy 18 | * 2016-04-22 14:04:21 19 | */ 20 | public class AddPaginationElementGenerator extends AbstractXmlElementGenerator 21 | { 22 | public void addElements(XmlElement parentElement) 23 | { 24 | //add base_column_list when columns = primarykeycolumns 25 | if(this.introspectedTable.getAllColumns().size() == this.introspectedTable.getPrimaryKeyColumns().size() || this.introspectedTable.getPrimaryKeyColumns().size() ==0){ 26 | XmlElement answer = new XmlElement("sql"); 27 | answer.addAttribute(new Attribute("id", introspectedTable.getBaseColumnListId())); 28 | context.getCommentGenerator().addComment(answer); 29 | StringBuilder sb = new StringBuilder(); 30 | Iterator iter = introspectedTable.getNonBLOBColumns().iterator(); 31 | do 32 | { 33 | if(!iter.hasNext()) 34 | break; 35 | sb.append(MyBatis3FormattingUtilities.getSelectListPhrase((IntrospectedColumn)iter.next())); 36 | if(iter.hasNext()) 37 | sb.append(", "); 38 | if(sb.length() > 80) 39 | { 40 | answer.addElement(new TextElement(sb.toString())); 41 | sb.setLength(0); 42 | } 43 | } while(true); 44 | if(sb.length() > 0) 45 | answer.addElement(new TextElement(sb.toString())); 46 | if(context.getPlugins().sqlMapBaseColumnListElementGenerated(answer, introspectedTable)) 47 | parentElement.addElement(answer); 48 | } 49 | //add header sql 50 | XmlElement sqlHeader = new XmlElement("sql"); 51 | sqlHeader.addAttribute(new Attribute("id", "pageHeader")); 52 | this.context.getCommentGenerator().addComment(sqlHeader); 53 | 54 | XmlElement chooseElement = new XmlElement("choose"); 55 | XmlElement whenElement = new XmlElement("when"); 56 | whenElement.addAttribute(new Attribute("test", "_databaseId == 'mysql'")); 57 | chooseElement.addElement(whenElement); 58 | 59 | XmlElement otherElement = new XmlElement("otherwise"); 60 | XmlElement ifElement = new XmlElement("if"); 61 | ifElement.addAttribute(new Attribute("test", "start != null and end != null")); 62 | ifElement.addElement(new TextElement("select * from (select a.*, rownum rn from (")); 63 | otherElement.addElement(ifElement); 64 | 65 | chooseElement.addElement(otherElement); 66 | sqlHeader.addElement(chooseElement); 67 | parentElement.addElement(sqlHeader); 68 | 69 | //add footer sql 70 | XmlElement sqlFooter = new XmlElement("sql"); 71 | sqlFooter.addAttribute(new Attribute("id", "pageFooter")); 72 | this.context.getCommentGenerator().addComment(sqlFooter); 73 | 74 | XmlElement chooseElement2 = new XmlElement("choose"); 75 | 76 | XmlElement whenElement2 = new XmlElement("when"); 77 | whenElement2.addAttribute(new Attribute("test", "_databaseId == 'mysql'")); 78 | XmlElement ifElementMySql = new XmlElement("if"); 79 | ifElementMySql.addAttribute(new Attribute("test", "start != null and limit != null")); 80 | ifElementMySql.addElement(new TextElement("limit ${start}, ${limit}")); 81 | whenElement2.addElement(ifElementMySql); 82 | chooseElement2.addElement(whenElement2); 83 | 84 | XmlElement otherElement2 = new XmlElement("otherwise"); 85 | XmlElement ifElement2 = new XmlElement("if"); 86 | ifElement2.addAttribute(new Attribute("test", "start != null and end != null")); 87 | ifElement2.addElement(new TextElement(") a where rownum <= #{end}) where rn >= #{start}")); 88 | otherElement2.addElement(ifElement2); 89 | 90 | chooseElement2.addElement(otherElement2); 91 | sqlFooter.addElement(chooseElement2); 92 | parentElement.addElement(sqlFooter); 93 | 94 | //selectAllByPager 95 | XmlElement pageElement = new XmlElement("select"); 96 | 97 | pageElement.addAttribute(new Attribute("id", "selectByPager")); 98 | pageElement.addAttribute( 99 | new Attribute("resultMap", 100 | this.introspectedTable.getBaseResultMapId())); 101 | pageElement.addAttribute(new Attribute("parameterType", "map")); 102 | this.context.getCommentGenerator().addComment(pageElement); 103 | 104 | XmlElement includeHeadElement = new XmlElement("include"); 105 | includeHeadElement.addAttribute(new Attribute("refid", "pageHeader")); 106 | pageElement.addElement(includeHeadElement); 107 | pageElement.addElement(new TextElement("select")); 108 | XmlElement basicMapElement = new XmlElement("include"); 109 | basicMapElement.addAttribute(new Attribute("refid", "Base_Column_List")); 110 | pageElement.addElement(basicMapElement); 111 | StringBuilder sb = new StringBuilder(); 112 | sb.setLength(0); 113 | sb.append(" from "); 114 | sb.append(this.introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime()); 115 | pageElement.addElement(new TextElement(sb.toString())); 116 | 117 | XmlElement whereElement = new XmlElement("trim"); 118 | whereElement.addAttribute(new Attribute("prefix", "WHERE")); 119 | whereElement.addAttribute(new Attribute("prefixOverrides", "AND")); 120 | pageElement.addElement(whereElement); 121 | 122 | List columns = this.introspectedTable.getAllColumns(); 123 | for(int i = 0 ; i < columns.size() ; i++ ){ 124 | IntrospectedColumn column = (IntrospectedColumn)columns.get(i); 125 | String columnName = column.getActualColumnName(); 126 | String colJavaName = column.getJavaProperty(); 127 | XmlElement ifExistElement = new XmlElement("if"); 128 | ifExistElement.addAttribute(new Attribute("test ", colJavaName + " !=null")); 129 | sb.setLength(0); 130 | sb.append(" and "). 131 | append(columnName). 132 | append(" = #{"). 133 | append(colJavaName). 134 | append(",jdbcType="). 135 | append(column.getJdbcTypeName()). 136 | append("}"); 137 | ifExistElement.addElement(new TextElement(sb.toString())); 138 | whereElement.addElement(ifExistElement); 139 | } 140 | XmlElement includeFooterElement = new XmlElement("include"); 141 | includeFooterElement.addAttribute(new Attribute("refid", "pageFooter")); 142 | pageElement.addElement(includeFooterElement); 143 | parentElement.addElement(pageElement); 144 | 145 | addCondition(parentElement); 146 | addCountCondition(parentElement); 147 | } 148 | /*** 149 | * 添加条件查询 150 | * @param parentElement 151 | */ 152 | public void addCondition(XmlElement parentElement){ 153 | //selectAllByPager 154 | XmlElement pageElement = new XmlElement("select"); 155 | 156 | pageElement.addAttribute(new Attribute("id", "selectByCondition")); 157 | pageElement.addAttribute( 158 | new Attribute("resultMap", 159 | this.introspectedTable.getBaseResultMapId())); 160 | pageElement.addAttribute(new Attribute("parameterType", "map")); 161 | this.context.getCommentGenerator().addComment(pageElement); 162 | 163 | 164 | pageElement.addElement(new TextElement("select")); 165 | XmlElement basicMapElement = new XmlElement("include"); 166 | basicMapElement.addAttribute(new Attribute("refid", "Base_Column_List")); 167 | pageElement.addElement(basicMapElement); 168 | StringBuilder sb = new StringBuilder(); 169 | sb.setLength(0); 170 | sb.append(" from "); 171 | sb.append(this.introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime()); 172 | pageElement.addElement(new TextElement(sb.toString())); 173 | 174 | XmlElement whereElement = new XmlElement("trim"); 175 | whereElement.addAttribute(new Attribute("prefix", "WHERE")); 176 | whereElement.addAttribute(new Attribute("prefixOverrides", "AND")); 177 | pageElement.addElement(whereElement); 178 | 179 | List columns = this.introspectedTable.getAllColumns(); 180 | for(int i = 0 ; i < columns.size() ; i++ ){ 181 | IntrospectedColumn column = (IntrospectedColumn)columns.get(i); 182 | String columnName = column.getActualColumnName(); 183 | String colJavaName = column.getJavaProperty(); 184 | XmlElement ifExistElement = new XmlElement("if"); 185 | ifExistElement.addAttribute(new Attribute("test ", colJavaName + " !=null")); 186 | sb.setLength(0); 187 | sb.append(" and "). 188 | append(columnName). 189 | append(" = #{"). 190 | append(colJavaName). 191 | append(",jdbcType="). 192 | append(column.getJdbcTypeName()). 193 | append("}"); 194 | ifExistElement.addElement(new TextElement(sb.toString())); 195 | whereElement.addElement(ifExistElement); 196 | } 197 | parentElement.addElement(pageElement); 198 | } 199 | /*** 200 | * 添加条件查询记录总数 201 | * @param parentElement 202 | */ 203 | public void addCountCondition(XmlElement parentElement){ 204 | //selectAllByPager 205 | XmlElement pageElement = new XmlElement("select"); 206 | 207 | pageElement.addAttribute(new Attribute("id", "countByCondition")); 208 | pageElement.addAttribute( 209 | new Attribute("resultType", 210 | "java.lang.Integer")); 211 | pageElement.addAttribute(new Attribute("parameterType", "map")); 212 | this.context.getCommentGenerator().addComment(pageElement); 213 | 214 | 215 | pageElement.addElement(new TextElement("select count(1)")); 216 | StringBuilder sb = new StringBuilder(); 217 | sb.setLength(0); 218 | sb.append(" from "); 219 | sb.append(this.introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime()); 220 | pageElement.addElement(new TextElement(sb.toString())); 221 | 222 | XmlElement whereElement = new XmlElement("trim"); 223 | whereElement.addAttribute(new Attribute("prefix", "WHERE")); 224 | whereElement.addAttribute(new Attribute("prefixOverrides", "AND")); 225 | pageElement.addElement(whereElement); 226 | 227 | List columns = this.introspectedTable.getAllColumns(); 228 | for(int i = 0 ; i < columns.size() ; i++ ){ 229 | IntrospectedColumn column = (IntrospectedColumn)columns.get(i); 230 | String columnName = column.getActualColumnName(); 231 | String colJavaName = column.getJavaProperty(); 232 | XmlElement ifExistElement = new XmlElement("if"); 233 | ifExistElement.addAttribute(new Attribute("test ", colJavaName + " !=null")); 234 | sb.setLength(0); 235 | sb.append(" and "). 236 | append(columnName). 237 | append(" = #{"). 238 | append(colJavaName). 239 | append(",jdbcType="). 240 | append(column.getJdbcTypeName()). 241 | append("}"); 242 | ifExistElement.addElement(new TextElement(sb.toString())); 243 | whereElement.addElement(ifExistElement); 244 | } 245 | parentElement.addElement(pageElement); 246 | } 247 | } 248 | -------------------------------------------------------------------------------- /src/main/java/com/tangdi/def/toolkit/mybatis/generator/MapperGenerator.java: -------------------------------------------------------------------------------- 1 | /*@(#)MapperGenerator.java 2015-11-6 2 | * Copy Right 2015 Bank of Communications Co.Ltd. 3 | * All Copyright Reserved 4 | */ 5 | 6 | package com.tangdi.def.toolkit.mybatis.generator; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | import org.mybatis.generator.api.IntrospectedColumn; 12 | import org.mybatis.generator.api.dom.java.CompilationUnit; 13 | import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType; 14 | import org.mybatis.generator.api.dom.java.Interface; 15 | import org.mybatis.generator.api.dom.java.JavaVisibility; 16 | import org.mybatis.generator.codegen.AbstractJavaGenerator; 17 | 18 | /** 19 | * TODO Document MapperGenerator 20 | *

21 | * @version 1.0.0,2015-11-6 22 | * @author li.sy 23 | * @since 1.0.0 24 | */ 25 | public class MapperGenerator extends AbstractJavaGenerator{ 26 | public List getCompilationUnits() 27 | { 28 | String pack = this.context.getProperty("mapperTargetPackage"); 29 | System.out.println(pack); 30 | FullyQualifiedJavaType type = new FullyQualifiedJavaType(pack + "." + this.introspectedTable.getFullyQualifiedTable().getDomainObjectName() + "Dao"); 31 | 32 | int size = this.introspectedTable.getPrimaryKeyColumns().size(); 33 | String primaryKeyType = "com.tangdi.def.toolkit.mybatis.data.NoId"; 34 | if (size != 0) { 35 | primaryKeyType = (size > 1) ? this.introspectedTable.getPrimaryKeyType() : ((IntrospectedColumn)this.introspectedTable.getPrimaryKeyColumns().get(0)).getFullyQualifiedJavaType().toString(); 36 | } 37 | Interface interfaze = new Interface(type); 38 | interfaze.setVisibility(JavaVisibility.PUBLIC); 39 | interfaze.addImportedType(new FullyQualifiedJavaType("com.tangdi.def.toolkit.mybatis.data.BaseDao")); 40 | if(this.introspectedTable.getAllColumns().size() > size){ 41 | interfaze.addImportedType(new FullyQualifiedJavaType(this.introspectedTable.getBaseRecordType())); 42 | } 43 | if (size == 0) { 44 | interfaze.addImportedType(new FullyQualifiedJavaType("com.tangdi.def.toolkit.mybatis.data.NoId")); 45 | } 46 | else if (size > 1) { 47 | interfaze.addImportedType(new FullyQualifiedJavaType(this.introspectedTable.getPrimaryKeyType())); 48 | } 49 | 50 | if(this.introspectedTable.getAllColumns().size() == size){ 51 | interfaze.addSuperInterface(new FullyQualifiedJavaType("com.tangdi.def.toolkit.mybatis.data.BaseDao<" + primaryKeyType + "," + primaryKeyType + ">")); 52 | }else{ 53 | interfaze.addSuperInterface(new FullyQualifiedJavaType("com.tangdi.def.toolkit.mybatis.data.BaseDao<" + this.introspectedTable.getBaseRecordType() + "," + primaryKeyType + ">")); 54 | } 55 | List answer = new ArrayList(); 56 | answer.add(interfaze); 57 | return answer; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/tangdi/def/toolkit/mybatis/generator/TdCommentGenerator.java: -------------------------------------------------------------------------------- 1 | package com.tangdi.def.toolkit.mybatis.generator; 2 | 3 | import java.util.Properties; 4 | 5 | import org.mybatis.generator.api.CommentGenerator; 6 | import org.mybatis.generator.api.IntrospectedColumn; 7 | import org.mybatis.generator.api.IntrospectedTable; 8 | import org.mybatis.generator.api.dom.java.*; 9 | import org.mybatis.generator.api.dom.xml.TextElement; 10 | import org.mybatis.generator.api.dom.xml.XmlElement; 11 | import org.mybatis.generator.config.MergeConstants; 12 | import org.mybatis.generator.internal.DefaultCommentGenerator; 13 | import org.mybatis.generator.internal.util.StringUtility; 14 | 15 | /*** 16 | * 生成实体bean的注释 17 | * @author li.sy 18 | * 2016-04-23 15:17:23 19 | */ 20 | public class TdCommentGenerator implements CommentGenerator{ 21 | 22 | /** 23 | * 给字段添加数据库备注 24 | * 25 | * @param field 26 | * @param introspectedTable 27 | * @param introspectedColumn 28 | */ 29 | public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { 30 | if (StringUtility.stringHasValue(introspectedColumn.getRemarks())) { 31 | field.addJavaDocLine("/**"); 32 | StringBuilder sb = new StringBuilder(); 33 | sb.append(" * "); 34 | sb.append(introspectedColumn.getRemarks()); 35 | field.addJavaDocLine(sb.toString()); 36 | field.addJavaDocLine(" */"); 37 | } 38 | } 39 | 40 | @Override 41 | public void addClassComment(InnerClass arg0, IntrospectedTable arg1) { 42 | // TODO Auto-generated method stub 43 | 44 | } 45 | 46 | @Override 47 | public void addClassComment(InnerClass arg0, IntrospectedTable arg1, 48 | boolean arg2) { 49 | // TODO Auto-generated method stub 50 | 51 | } 52 | 53 | @Override 54 | public void addComment(XmlElement arg0) { 55 | // TODO Auto-generated method stub 56 | 57 | } 58 | 59 | @Override 60 | public void addConfigurationProperties(Properties arg0) { 61 | // TODO Auto-generated method stub 62 | 63 | } 64 | 65 | @Override 66 | public void addEnumComment(InnerEnum arg0, IntrospectedTable arg1) { 67 | // TODO Auto-generated method stub 68 | 69 | } 70 | 71 | @Override 72 | public void addFieldComment(Field arg0, IntrospectedTable arg1) { 73 | // TODO Auto-generated method stub 74 | 75 | } 76 | 77 | @Override 78 | public void addGeneralMethodComment(Method arg0, IntrospectedTable arg1) { 79 | // TODO Auto-generated method stub 80 | 81 | } 82 | 83 | @Override 84 | public void addGetterComment(Method arg0, IntrospectedTable arg1, 85 | IntrospectedColumn arg2) { 86 | // TODO Auto-generated method stub 87 | 88 | } 89 | 90 | @Override 91 | public void addJavaFileComment(CompilationUnit arg0) { 92 | // TODO Auto-generated method stub 93 | 94 | } 95 | 96 | @Override 97 | public void addRootComment(XmlElement arg0) { 98 | // TODO Auto-generated method stub 99 | 100 | } 101 | 102 | @Override 103 | public void addSetterComment(Method arg0, IntrospectedTable arg1, 104 | IntrospectedColumn arg2) { 105 | // TODO Auto-generated method stub 106 | 107 | } 108 | 109 | } 110 | -------------------------------------------------------------------------------- /src/main/java/com/tangdi/def/toolkit/mybatis/generator/TdMapperPlugin.java: -------------------------------------------------------------------------------- 1 | /*@(#)TdMapperPlugin.java 2015-11-6 2 | * Copy Right 2015 Bank of Communications Co.Ltd. 3 | * All Copyright Reserved 4 | */ 5 | 6 | package com.tangdi.def.toolkit.mybatis.generator; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | import org.mybatis.generator.api.GeneratedJavaFile; 12 | import org.mybatis.generator.api.IntrospectedTable; 13 | import org.mybatis.generator.api.PluginAdapter; 14 | import org.mybatis.generator.api.dom.java.CompilationUnit; 15 | import org.mybatis.generator.api.dom.xml.Attribute; 16 | import org.mybatis.generator.api.dom.xml.Document; 17 | import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.SimpleSelectAllElementGenerator; 18 | 19 | /** 20 | * TODO Document TdMapperPlugin 21 | *

22 | * @version 1.0.0,2015-11-6 23 | * @author li.sy 24 | * @since 1.0.0 25 | */ 26 | public class TdMapperPlugin extends PluginAdapter{ 27 | 28 | public boolean validate(List warnings){ 29 | return true; 30 | } 31 | public List contextGenerateAdditionalJavaFiles(IntrospectedTable introspectedTable){ 32 | MapperGenerator generator = new MapperGenerator(); 33 | generator.setContext(this.context); 34 | generator.setIntrospectedTable(introspectedTable); 35 | List units = generator.getCompilationUnits(); 36 | List generatedFile = new ArrayList(); 37 | for (CompilationUnit unit : units) { 38 | GeneratedJavaFile gjf = new GeneratedJavaFile(unit, this.context.getJavaModelGeneratorConfiguration().getTargetProject(), 39 | this.context.getProperty("javaFileEncoding"), this.context.getJavaFormatter()); 40 | generatedFile.add(gjf); 41 | } 42 | return generatedFile; 43 | } 44 | public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable){ 45 | String pack = this.context.getProperty("mapperTargetPackage"); 46 | document.getRootElement().getAttributes().clear(); 47 | document.getRootElement().addAttribute(new Attribute("namespace", pack + "." +introspectedTable.getFullyQualifiedTable().getDomainObjectName()+"Dao")); 48 | SimpleSelectAllElementGenerator generator = new SimpleSelectAllElementGenerator(); 49 | generator.setContext(this.context); 50 | generator.setIntrospectedTable(introspectedTable); 51 | generator.addElements(document.getRootElement()); 52 | return true; 53 | } 54 | } -------------------------------------------------------------------------------- /src/main/java/com/tangdi/def/toolkit/mybatis/generator/TdPaginationPlugin.java: -------------------------------------------------------------------------------- 1 | /*@(#)TdMapperPlugin.java 2015-11-6 2 | * Copy Right 2015 Bank of Communications Co.Ltd. 3 | * All Copyright Reserved 4 | */ 5 | 6 | package com.tangdi.def.toolkit.mybatis.generator; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | import org.mybatis.generator.api.GeneratedJavaFile; 12 | import org.mybatis.generator.api.IntrospectedTable; 13 | import org.mybatis.generator.api.PluginAdapter; 14 | import org.mybatis.generator.api.dom.java.CompilationUnit; 15 | import org.mybatis.generator.api.dom.xml.Attribute; 16 | import org.mybatis.generator.api.dom.xml.Document; 17 | import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.SimpleSelectAllElementGenerator; 18 | 19 | /** 20 | * TODO Document TdMapperPlugin 21 | *

22 | * @version 1.0.0,2015-11-6 23 | * @author li.sy 24 | * @since 1.0.0 25 | */ 26 | public class TdPaginationPlugin extends PluginAdapter{ 27 | 28 | public boolean validate(List warnings){ 29 | return true; 30 | } 31 | public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable){ 32 | AddPaginationElementGenerator generator = new AddPaginationElementGenerator(); 33 | generator.setContext(this.context); 34 | generator.setIntrospectedTable(introspectedTable); 35 | generator.addElements(document.getRootElement()); 36 | return true; 37 | } 38 | } -------------------------------------------------------------------------------- /src/test/java/com/tangdi/def/toolkit/mybatis/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.tangdi.def.toolkit.mybatis; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /使用手册.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longhuasishen/tddef-toolkit-mybatis/a2790d8351de55a733c4136c80887cd3756ab607/使用手册.txt --------------------------------------------------------------------------------