Eclipse maven项目中使用mybatis逆向工程
学习ssm项目整合的童鞋,推荐一个尚硅谷的视频教程,整的很不错。以下是个人在学习mybatis逆向工程时的记录。
使用mybatis时需要,
1.对应数据库表字段的java实体类(也叫作bean?或者是pojo?)
2.dao层的接口,有多少张表就有多少个接口,每个接口对应一张数据表的操作,比如增删改查;一般,dao层只是写接口,不写具体的实现,具体的操作实现要么写与之对应的接口实现类,要么在mapper配置文件中实现。
3.mapper配置文件,在mybatis中使用的是xml文件来实现接口定义的数据库的操作;其他的也有手写接口实现类的。
三个层次结构大致如下:(当然,这是已经使用mybatis generator自动生成后的目录了)
MyBatis Generator官方文档
因为是在maven项目中,所以先在pom.xml文件中引入相关的依赖,下面的配置文件中有一些多余的部分。
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>com.example.mbgs</groupId>
6 <artifactId>mbgenerator</artifactId>
7 <packaging>war</packaging>
8 <version>0.0.1-SNAPSHOT</version>
9 <name>mbgenerator Maven Webapp</name>
10 <url>http://maven.apache.org</url>
11
12
13 <dependencies>
14 <dependency>
15 <groupId>junit</groupId>
16 <artifactId>junit</artifactId>
17 <version>3.8.1</version>
18 <scope>test</scope>
19 </dependency>
20
21 <!-- Mybatis -->
22 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
23 <dependency>
24 <groupId>org.mybatis</groupId>
25 <artifactId>mybatis</artifactId>
26 <version>3.4.2</version>
27 </dependency>
28
29 <!-- 数据库连接池以及驱动 -->
30 <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
31 <dependency>
32 <groupId>com.mchange</groupId>
33 <artifactId>c3p0</artifactId>
34 <version>0.9.5.2</version>
35 </dependency>
36
37 <!-- MySql Connector -->
38 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
39 <dependency>
40 <groupId>mysql</groupId>
41 <artifactId>mysql-connector-java</artifactId>
42 <version>8.0.13</version>
43 </dependency>
44
45 <!-- JSTL 等 -->
46 <!-- https://mvnrepository.com/artifact/jstl/jstl -->
47 <dependency>
48 <groupId>jstl</groupId>
49 <artifactId>jstl</artifactId>
50 <version>1.2</version>
51 </dependency>
52
53 <!-- MBG -->
54 <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
55 <dependency>
56 <groupId>org.mybatis.generator</groupId>
57 <artifactId>mybatis-generator-core</artifactId>
58 <version>1.3.5</version>
59 </dependency>
60
61 </dependencies>
62
63
64 <build>
65 <!-- java编译插件 -->
66 <!-- eclipse默认使用的jdk是1.5的 -->
67 <plugins>
68 <plugin>
69 <groupId>org.apache.maven.plugins</groupId>
70 <artifactId>maven-compiler-plugin</artifactId>
71 <version>3.2</version>
72 <configuration>
73 <source>1.8</source>
74 <target>1.8</target>
75 <encoding>UTF-8</encoding>
76 </configuration>
77 </plugin>
78 </plugins>
79 </build>
80 </project>
接着就是要写Mybatis Generator的配置文件了,在项目的直接目录下新建一个xml文件,命名无所谓,之后参考官方给出的xml配置实例来写
相关配置标签及其左右都可以在文档左侧查找,或者点击这里
具体的配置如下(只是部分配置,备注有相关的说明)
mbg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 配置生成的实体类的注释问题,设置为true不生成 ,如果不设置的话会默认生成很多的注释-->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 配置连接数据库,注意下面的driverClass,不同版本的数据库驱动不同的 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/ssm_curd" userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 指定javabean的生成位置 -->
<javaModelGenerator
targetPackage="com.example.curd.bean" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 指定sql映射文件的生成位置 -->
<sqlMapGenerator targetPackage="mapper"
targetProject=".\src\main\resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 指定dao接口生成的位置,mapper接口,targetPackage是预生成的包,targetProject是目录 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.curd.dao" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- table指定每个表的生成策略 ,后面的domainObjectName是前面的tableName表要生成的javaBean的名字-->
<table tableName="tbl_emp" domainObjectName="Employee">
</table>
<table tableName="tbl_dept" domainObjectName="Department">
</table>
</context>
</generatorConfiguration>
大概的配置已经差不多了,那么要怎样运行生成呢?官方给出的有几种方法:Running MyBatis Generator ,
此处使用的是java program 和xml的方法
新建一个java类,内容如下:
package com.example.curd.test;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class MBGTest {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("mbg.xml"); //你的mybatis generator 配置文件名
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
}
写完后run as java application就可以了,如果成功的话,控制台是看不到输出信息的,接着刷新一下项目,就可以看到自动生成的内容了。
至于生成的各个文件及其作用请看:MyBatis的Mapper接口以及Example的实例函数及详解