步驟1:簡介
步驟2:先運行,看到效果,再學習
步驟3:模仿和排錯
步驟4:基於前面的知識點
步驟5:jar
步驟6:配置文件
步驟7:TestMybatisGenerator
步驟8:TestMybatis
步驟9:侷限性 html
步驟 1 : 簡介java
Mybatis Generator是一個用於Mybatis逆向工程的工具。
前面學習的方式都是先有pojo, mapper, xml, 而後再建立表。 mysql
用逆向工程的方式,首先保證數據庫裏有表,而後經過Mybatis Generator生成pojo, mapper和xml。 sql
能夠節約你們的時間,提升開發效率,下降出錯概率數據庫
步驟 2 : 先運行,看到效果,再學習apache
老規矩,先下載下載區(點擊進入)的可運行項目,配置運行起來,確承認用以後,再學習作了哪些步驟以達到這樣的效果。 api
運行 TestMybatisGenerator類,就能夠觀察到pojo,mapper和xml都生成了,而後再運行 TestMybatis 進行查詢測試。 session
如圖所示,運行TestMybatisGenerator以後,刷新項目能夠看到自動生成的相關文件 mybatis
注: CategoryExample 這個是用於多條件查詢的,在TestMybatis中有演示app
步驟 3 : 模仿和排錯
在確保可運行項目可以正確無誤地運行以後,再嚴格照着教程的步驟,對代碼模仿一遍。
模仿過程不免代碼有出入,致使沒法獲得指望的運行結果,此時此刻經過比較正確答案 ( 可運行項目 ) 和本身的代碼,來定位問題所在。
採用這種方式,學習有效果,排錯有效率,能夠較爲明顯地提高學習速度,跨過學習路上的各個檻。
推薦使用diffmerge軟件,進行文件夾比較。把你本身作的項目文件夾,和個人可運行項目文件夾進行比較。
這個軟件很牛逼的,能夠知道文件夾裏哪兩個文件不對,而且很明顯地標記出來
這裏提供了綠色安裝和使用教程:diffmerge 下載和使用教程
步驟 4 : 基於前面的知識點
基於Mybatis 入門 這個知識點進行
步驟 5 : jar
須要額外的Mybatis Generator jar包(mybatis-generator-core-1.3.5.jar),在下載區(點擊進入)下載,下載後放在lib目錄下,並導入項目
導包辦法:右鍵 project->properties->java build path->libaries->add external jars
步驟 6 : 配置文件
在src目錄下建立generatorConfig.xml
這個配置文件有以下做用
1. 指定 mysql jdbcjar 包的位置,這裏用的位置是 e:/project/mybatis/lib/mysql-connector-java-5.0.8-bin.jar
2. 設置數據庫連接帳號密碼
3. 指定pojo,mapper,xml分別生成的包名
4. 指定表名以及表名對應的類名
4.1 使用自增加鍵:
<property name="my.isgen.usekeys" value="true"/> <generatedKey column="id" sqlStatement="JDBC"/>
注1:若是IDE(eclipse或者idea) 項目裏導入了jar包,那就不須要麼第一步那樣配置jar包的絕對路徑了
<?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> <!--數據庫驅動--> <!-- 若是IDE(eclipse或者idea) 項目裏導入了jar包,那麼就不須要配置了jar包的絕對路徑了 <classPathEntry location="e:/project/mybatis/lib/mysql-connector-java-5.0.8-bin.jar"/> --> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <property name="suppressAllComments" value="false"/> </commentGenerator> <!--數據庫連接地址帳號密碼--> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/how2java" userId="root" password="admin"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--生成Model類存放位置--> <javaModelGenerator targetPackage="com.how2java.pojo" targetProject="src"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!--生成映射文件存放位置--> <sqlMapGenerator targetPackage="com.how2java.pojo" targetProject="src"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!--生成Dao類存放位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.how2java.mapper" targetProject="src"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!--生成對應表及類名--> <table tableName="category_" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="true" selectByExampleQueryId="false"> <property name="my.isgen.usekeys" value="true"/> <generatedKey column="id" sqlStatement="JDBC"/> </table> <!-- <table tableName="product_" domainObjectName="Product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> --> </context> </generatorConfiguration>
步驟 7 : TestMybatisGenerator
運行成功以後,就會在對應位置生成pojo,xml,和mapper
package com.how2java; import java.io.File; import java.io.InputStream; 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 TestMybatisGenerator { public static void main(String[] args) throws Exception { List<String> warnings = new ArrayList<String>(); boolean overwrite = true; InputStream is= TestMybatisGenerator.class.getClassLoader().getResource("generatorConfig.xml").openStream(); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(is); is.close(); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); System.out.println("生成代碼成功,刷新項目,查看文件,而後執行TestMybatis.java"); } }
步驟 8 : TestMybatis
運行TestMybatis,執行自動生成的mapper,藉助CategoryExample 進行模糊查詢名稱裏出現了9的分類
package com.how2java; import java.io.InputStream; import java.util.List; //import com.how2java.mapper.CategoryMapper; //import com.how2java.pojo.Category; //import com.how2java.pojo.CategoryExample; //import com.how2java.mapper.CategoryMapper; //import com.how2java.pojo.CategoryExample; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.how2java.mapper.CategoryMapper; import com.how2java.pojo.Category; import com.how2java.pojo.CategoryExample; public class TestMybatis { public static void main(String args[]) throws Exception { System.out.println("先運行TestMybatisGenerator建立mapper,pojo,xml 等文件,而後取消import裏被註釋的,以及接下來的註釋,並執行代碼"); String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session=sqlSessionFactory.openSession(); CategoryExample example = new CategoryExample(); example.createCriteria().andNameLike("%9%"); CategoryMapper mapper = session.getMapper(CategoryMapper.class); List<Category> cs= mapper.selectByExample(example); for (Category c : cs) { System.out.println(c.getName()); } } }
步驟 9 : 侷限性
多對一,一對多須要本身手寫,這個工具目前(20170828版本1.3.5)不提供
更多內容,點擊瞭解: https://how2j.cn/k/mybatis/mybatis-generator/1376.html