├── MybatisGenerator.iml ├── README.md ├── out └── artifacts │ └── MybatisGenerator_war_exploded │ ├── WEB-INF │ ├── classes │ │ ├── GeneratorSqlmap.class │ │ ├── generatorConfig-base.xml │ │ ├── generatorConfig-business.xml │ │ ├── generatorConfig.xml │ │ └── log4j.properties │ ├── lib │ │ ├── log4j-1.2.16.jar │ │ ├── mybatis-3.2.3.jar │ │ ├── mybatis-generator-core-1.3.2.jar │ │ └── mysql-connector-java-5.1.28-bin.jar │ └── web.xml │ └── index.jsp ├── src ├── GeneratorSqlmap.java ├── generatorConfig-base.xml ├── generatorConfig-business.xml ├── generatorConfig.xml └── log4j.properties └── web ├── WEB-INF ├── classes │ ├── GeneratorSqlmap.class │ ├── generatorConfig-base.xml │ ├── generatorConfig-business.xml │ ├── generatorConfig.xml │ └── log4j.properties ├── lib │ ├── log4j-1.2.16.jar │ ├── mybatis-3.2.3.jar │ ├── mybatis-generator-core-1.3.2.jar │ └── mysql-connector-java-5.1.28-bin.jar └── web.xml └── index.jsp /MybatisGenerator.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 用IDEA开发MyBatis逆向工程 2 | 3 | 以往我们在开发时都需要通过数据库中的表然后自己在po包下建立相对应的pojo类,并要创建相应的mapper.xml写出对表的所有操作,而使用mybatis逆向工程就不用我们自己再编写pojo类与相应的mapper.java和mapper.xml文件,它可以自动对单表生成sql,包括:mapper.xml、mapper.java、表名.java(po类)。是不是很方便?接下来我将为你们介绍如何使用mybatis的逆向工程,只需三步便可以简单做到。 4 | 5 | 6 | 7 | 8 | [更多资料请点击这里进入我的博客](http://codingxiaxw.cn/2016/11/13/41-mybatis9%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B/) 9 | 10 | 首先我们需要在官网下载:[逆向工程开发文档](http://www.mybatis.org/generator/)以及jar包:mybatis-generator-core-bundle。用IDEA的好处就是可以使用Maven依赖,但是此篇文章中我们就新建一个普通工程。 11 | 12 | ## 1.逆向工程使用配置 13 | ### 1.1jar包的导入 14 | 这里我们需要导入四个包,1.mybatis3.xjar包。2.逆向工程核心包。3.数据库连接包。4.log4j.jar,用于输出日志。目录如下: 15 | 16 | 17 | 18 | 19 | ### 1.2配置逆向工程的配置文件 20 | 在src包下创建逆向工程配置文件generatorConfig.xml,内容如下,直接拷贝官网介绍的内容即可: 21 | ```xml 22 | 23 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 37 | 38 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | 51 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 61 | 62 | 63 | 64 | 65 | 68 | 69 | 70 | 71 | 72 |
73 |
74 |
75 | 80 | 81 | 85 |
86 |
87 | ``` 88 | 89 | 需要修改的地方: 90 | 91 | - javaModelGenerator,生成PO类的位置 92 | - sqlMapGenerator,mapper映射文件生成的位置 93 | - javaClientGenerator,mapper接口生成的位置 94 | - table,其tableName属性对应数据库中相应表 95 | 96 | ### 1.3执行生成代码 97 | 在src包下新建一个Generator.java文件,内容如下,也是拷贝的官网中介绍的代码: 98 | ```java 99 | import java.io.File; 100 | import java.util.ArrayList; 101 | import java.util.List; 102 | 103 | import org.mybatis.generator.api.MyBatisGenerator; 104 | import org.mybatis.generator.config.Configuration; 105 | import org.mybatis.generator.config.xml.ConfigurationParser; 106 | import org.mybatis.generator.internal.DefaultShellCallback; 107 | 108 | public class GeneratorSqlmap { 109 | 110 | public void generator() throws Exception{ 111 | 112 | List warnings = new ArrayList(); 113 | boolean overwrite = true; 114 | //指定 逆向工程配置文件 115 | File configFile = new File("src/generatorConfig.xml"); 116 | ConfigurationParser cp = new ConfigurationParser(warnings); 117 | Configuration config = cp.parseConfiguration(configFile); 118 | DefaultShellCallback callback = new DefaultShellCallback(overwrite); 119 | MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, 120 | callback, warnings); 121 | myBatisGenerator.generate(null); 122 | 123 | } 124 | public static void main(String[] args) throws Exception { 125 | try { 126 | GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); 127 | generatorSqlmap.generator(); 128 | } catch (Exception e) { 129 | e.printStackTrace(); 130 | } 131 | 132 | } 133 | 134 | } 135 | ``` 136 | 注意,这里new File中传入的参数只能是`src/generatorConfig.xml`而不能为`generatorConfig.xml`,否则会出现`java.io.FileNotFoundException: generatorConfig.xml (No such file or directory)`的报错信息,运行程序,在打印台看到输出日志信息为:![](http://od2xrf8gr.bkt.clouddn.com/111.png) 137 | 138 | 然后再点击文件目录上的刷新图标刷新文件目录,文件目录下出现我们通过单表映射出来的po类包以及mapper包下的mapper.xml和mapper.java,刚开始的工程目录如下: 139 | 140 | 141 | 142 | 运行程序后最后的工程目录结构如下: 143 | 144 | 145 | 146 | 这样我们便通过mybatis的逆向工程完成了通过单表直接创建出对应的mapper.java和mapper.xml的工作。 147 | 148 | ## 2.逆向工程的应用 149 | 逆向工程往往是单独的建立一个普通工程如A,通过运行逆向工程生成相应的mapper和po后然后再将这两个包拷贝到我们使用到ssm框架创建的web项目,而不是直接在web项目中使用逆向工程。 150 | 151 | 通过运行上述的程序,我们便通过数据库中的表快速的生成了相应的po类和mapper,而不用我们程序员自己再编写相应的po类和mapper,为我们带来了很大的方便,所以这个一定要学会,在后续开发中只要使用到mybatis的地方我们都会通过mybatis的逆向工程自动为我们生成mapper和po类。 152 | 153 | 154 | ## 3.联系 155 | 156 | If you have some questions after you see this article,you can tell your doubts in the comments area or you can find some info by clicking these links. 157 | 158 | 159 | - [Blog@codingXiaxw's blog](http://codingxiaxw.cn) 160 | 161 | - [Weibo@codingXiaxw](http://weibo.com/u/5023661572?from=hissimilar_home&refer_flag=1005050003_) 162 | 163 | - [Zhihu@codingXiaxw](http://www.zhihu.com/people/e9f78fa34b8002652811ac348da3f671) 164 | - [Github@codingXiaxw](https://github.com/codingXiaxw) 165 | 166 | 167 | ## 如何使用 168 | 1. git clone https://github.com/codingXiaxw/generator.git 169 | 2. 用IDEA open 即可。 -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/classes/GeneratorSqlmap.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/out/artifacts/MybatisGenerator_war_exploded/WEB-INF/classes/GeneratorSqlmap.class -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/classes/generatorConfig-base.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 55 | 56 | 57 | 58 | 59 |
60 |
61 | 62 |
63 | 64 |
65 |
66 | 67 |
68 | 69 |
70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/classes/generatorConfig-business.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 46 | 47 | 48 | 49 | 50 | 53 | 57 | 59 | 60 | 70 | 71 | 72 | 77 | 78 | 79 |
80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
97 | 98 |
99 |
100 | -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/classes/generatorConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 44 | 47 | 48 | 49 | 50 | 51 |
52 |
53 |
54 | 59 | 60 | 64 |
65 |
66 | -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/classes/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, Console 2 | #Console 3 | log4j.appender.Console=org.apache.log4j.ConsoleAppender 4 | log4j.appender.Console.layout=org.apache.log4j.PatternLayout 5 | log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n 6 | log4j.logger.java.sql.ResultSet=INFO 7 | log4j.logger.org.apache=INFO 8 | log4j.logger.java.sql.Connection=DEBUG 9 | log4j.logger.java.sql.Statement=DEBUG 10 | log4j.logger.java.sql.PreparedStatement=DEBUG -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/lib/log4j-1.2.16.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/out/artifacts/MybatisGenerator_war_exploded/WEB-INF/lib/log4j-1.2.16.jar -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/lib/mybatis-3.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/out/artifacts/MybatisGenerator_war_exploded/WEB-INF/lib/mybatis-3.2.3.jar -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/lib/mybatis-generator-core-1.3.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/out/artifacts/MybatisGenerator_war_exploded/WEB-INF/lib/mybatis-generator-core-1.3.2.jar -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/lib/mysql-connector-java-5.1.28-bin.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/out/artifacts/MybatisGenerator_war_exploded/WEB-INF/lib/mysql-connector-java-5.1.28-bin.jar -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /out/artifacts/MybatisGenerator_war_exploded/index.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: codingBoy 4 | Date: 16/11/13 5 | Time: 下午2:29 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | $Title$ 12 | 13 | 14 | $END$ 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/GeneratorSqlmap.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by codingBoy on 16/11/13. 3 | */ 4 | import java.io.File; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | import org.mybatis.generator.api.MyBatisGenerator; 9 | import org.mybatis.generator.config.Configuration; 10 | import org.mybatis.generator.config.xml.ConfigurationParser; 11 | import org.mybatis.generator.internal.DefaultShellCallback; 12 | 13 | public class GeneratorSqlmap { 14 | 15 | public void generator() throws Exception{ 16 | 17 | List warnings = new ArrayList(); 18 | boolean overwrite = true; 19 | //指定 逆向工程配置文件 20 | File configFile = new File("src/generatorConfig.xml"); 21 | ConfigurationParser cp = new ConfigurationParser(warnings); 22 | Configuration config = cp.parseConfiguration(configFile); 23 | DefaultShellCallback callback = new DefaultShellCallback(overwrite); 24 | MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, 25 | callback, warnings); 26 | myBatisGenerator.generate(null); 27 | 28 | } 29 | public static void main(String[] args) throws Exception { 30 | try { 31 | GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); 32 | generatorSqlmap.generator(); 33 | } catch (Exception e) { 34 | e.printStackTrace(); 35 | } 36 | 37 | } 38 | 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/generatorConfig-base.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 55 | 56 | 57 | 58 | 59 |
60 |
61 | 62 |
63 | 64 |
65 |
66 | 67 |
68 | 69 |
70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /src/generatorConfig-business.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 46 | 47 | 48 | 49 | 50 | 53 | 57 | 59 | 60 | 70 | 71 | 72 | 77 | 78 | 79 |
80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
97 | 98 |
99 |
100 | -------------------------------------------------------------------------------- /src/generatorConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 44 | 47 | 48 | 49 | 50 | 51 |
52 |
53 |
54 | 59 | 60 | 64 |
65 |
66 | -------------------------------------------------------------------------------- /src/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, Console 2 | #Console 3 | log4j.appender.Console=org.apache.log4j.ConsoleAppender 4 | log4j.appender.Console.layout=org.apache.log4j.PatternLayout 5 | log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n 6 | log4j.logger.java.sql.ResultSet=INFO 7 | log4j.logger.org.apache=INFO 8 | log4j.logger.java.sql.Connection=DEBUG 9 | log4j.logger.java.sql.Statement=DEBUG 10 | log4j.logger.java.sql.PreparedStatement=DEBUG -------------------------------------------------------------------------------- /web/WEB-INF/classes/GeneratorSqlmap.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/web/WEB-INF/classes/GeneratorSqlmap.class -------------------------------------------------------------------------------- /web/WEB-INF/classes/generatorConfig-base.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 55 | 56 | 57 | 58 | 59 |
60 |
61 | 62 |
63 | 64 |
65 |
66 | 67 |
68 | 69 |
70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /web/WEB-INF/classes/generatorConfig-business.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 46 | 47 | 48 | 49 | 50 | 53 | 57 | 59 | 60 | 70 | 71 | 72 | 77 | 78 | 79 |
80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
97 | 98 |
99 |
100 | -------------------------------------------------------------------------------- /web/WEB-INF/classes/generatorConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 44 | 47 | 48 | 49 | 50 | 51 |
52 |
53 |
54 | 59 | 60 | 64 |
65 |
66 | -------------------------------------------------------------------------------- /web/WEB-INF/classes/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, Console 2 | #Console 3 | log4j.appender.Console=org.apache.log4j.ConsoleAppender 4 | log4j.appender.Console.layout=org.apache.log4j.PatternLayout 5 | log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n 6 | log4j.logger.java.sql.ResultSet=INFO 7 | log4j.logger.org.apache=INFO 8 | log4j.logger.java.sql.Connection=DEBUG 9 | log4j.logger.java.sql.Statement=DEBUG 10 | log4j.logger.java.sql.PreparedStatement=DEBUG -------------------------------------------------------------------------------- /web/WEB-INF/lib/log4j-1.2.16.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/web/WEB-INF/lib/log4j-1.2.16.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/mybatis-3.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/web/WEB-INF/lib/mybatis-3.2.3.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/mybatis-generator-core-1.3.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/web/WEB-INF/lib/mybatis-generator-core-1.3.2.jar -------------------------------------------------------------------------------- /web/WEB-INF/lib/mysql-connector-java-5.1.28-bin.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingXiaxw/generator/36a29014100493fb94e191d223808e38b5e104f8/web/WEB-INF/lib/mysql-connector-java-5.1.28-bin.jar -------------------------------------------------------------------------------- /web/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /web/index.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: codingBoy 4 | Date: 16/11/13 5 | Time: 下午2:29 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | $Title$ 12 | 13 | 14 | $END$ 15 | 16 | 17 | --------------------------------------------------------------------------------