├── 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)`的报错信息,运行程序,在打印台看到输出日志信息为:
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 |
--------------------------------------------------------------------------------