我本身總結的Java學習的系統知識點以及面試問題,目前已經開源,會一直完善下去,歡迎建議和指導歡迎Star: https://github.com/Snailclimb/Java-Guidehtml
最近作的項目(SSM+Shiro
)的數據庫表已經建立完成,一共有15張表,若是咱們一個個去寫pojo/bean
的代碼以及各類sql語句的話未免太過麻煩並且很容易出錯,這個時候咱們就須要MyBatis
逆向工程去爲咱們生成這些基本的東西。java
先來簡單的瞭解一下什麼是逆向工程。
官網解釋濃縮版:mysql
MyBatis
逆向工程須要用到的就是MyBatis官方提供的MyBatis Generator(MBG)
。MBG
是MyBatis
和iBATIS
的代碼生成器,它將爲全部版本的MyBati
s以及版本2.2.0以後的iBATIS
版本生成代碼。MBG
對簡單CRUD(增刪改查
)的大部分數據庫操做產生重大影響。可是您仍然須要爲鏈接查詢或存儲過程手動編寫SQL和對象代碼。git
簡要歸納版:程序員
建立好數據庫表以後,MBG
能夠根據數據庫表自動爲您生成pojo類
、example類(用於添加條件,至關where語句後面的部分 )
、mapper文件
。github
關於Mapper接口以及Example的實例的講解能夠查看這一篇文章:《Mapper接口以及Example的實例》
http://www.javashuo.com/article/p-krtilrnk-mm.html面試
介紹完逆向工程是個什麼東西后,接下來咱們就要開始學習如何使用它了?
考慮到你們的基礎可能不一樣,因此我儘量詳細一點。sql
1.新建Maven項目(普通的Java項目):數據庫
2.添加相關依賴(pom.xml):apache
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mybatis-generator</groupId> <artifactId>sql-mapper</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>sql-mapper</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!--log4j --> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--MyBatis Generator --> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> <!--mysql-connector-java --> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!--mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.1</version> </dependency> </dependencies> </project>
核心代碼官網已經給出,地址爲:http://www.mybatis.org/generator/running/runningWithJava.html
核心代碼示例(推薦讀取xml配置文件的形式,還有一種基於Java的配置這裏就不作演示):
List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //讀取xml配置文件,推薦使用這種方式 File configFile = new File("generatorConfig.xml"); 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);
本項目中使用代碼MyBatisGeneratorApp.java:
public class MyBatisGeneratorApp { public void generator() throws Exception{ List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //指定 逆向工程配置文件 File configFile = new File("generatorConfig.xml"); 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); } public static void main(String[] args) throws Exception { try { MyBatisGeneratorApp generatorSqlmap = new MyBatisGeneratorApp(); generatorSqlmap.generator(); } catch (Exception e) { e.printStackTrace(); } } }
MyBatis GeneratorXML參考配置文件官網已經給出,地址爲:http://www.mybatis.org/generator/configreference/xmlconfig.html
MyBatis逆向工程配置文件以下(註釋已經解釋的很詳細了,我這裏就很少作解釋了):
<?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="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自動生成的註釋 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--數據庫鏈接的信息:驅動類、鏈接地址、用戶名、密碼 ,加上「useSSL=false」是由於我SSL鏈接數據庫出現了錯誤 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/kpi_project?useSSL=false" userId="root" password="xxx"> </jdbcConnection> <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer,爲 true時把JDBC DECIMAL 和 NUMERIC 類型解析爲java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- targetProject:生成pojo類的位置 --> <javaModelGenerator targetPackage="pojo" targetProject=".\src\main\java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> <!-- 從數據庫返回的值被清理先後的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 --> <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="mapper" targetProject=".\src\main\java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定數據庫表 --> <table schema="" tableName="com_role"></table> <table schema="" tableName="com_rule"></table> <table schema="" tableName="kpi_assess"></table> <table schema="" tableName="kpi_assign"></table> <table schema="" tableName="kpi_complain"></table> <table schema="" tableName="kpi_index"></table> <table schema="" tableName="kpi_institute"></table> <table schema="" tableName="kpi_peformance"></table> <table schema="" tableName="kpi_result"></table> <table schema="" tableName="kpi_score"></table> <table schema="" tableName="sys_permission"></table> <table schema="" tableName="sys_role"></table> <table schema="" tableName="sys_role_perm"></table> <table schema="" tableName="sys_user"></table> <table schema="" tableName="sys_user_role"></table> </context> </generatorConfiguration>
個人log4j的配置文件以下:
log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
pojo及example類:
mapper接口及mapper.xml:
咱們已經介紹了MyBatis逆向工程以及它的使用,下面咱們簡單的總結與補充一下所學的知識。
MBG能夠根據數據庫表自動爲您生成
pojo類、
example類(用於添加條件,至關where語句後面的部分 )、
mapper文件`。
pom文件(添加相關jar包)->逆向工程核心代碼編寫->建立generatorConfig.xml配置文件(能夠加上log4j日誌打印配置文件)
若是你以爲個人文章對你有幫助話,歡迎關注個人微信公衆號:" Java面試通關手冊"(一個有溫度的微信公衆號,無廣告,單純技術分享,期待與你共同進步~~~堅持原創,分享美文,分享各類Java學習資源。)