MyBatis Generator生成程式碼的四種方式
專案目錄如下:dubbo是上一篇部落格裡寫的,程式碼就沒刪可以借鑑學習
由於MyBatis屬於一種半自動的ORM框架,所以主要的工作就是配置Mapping對映檔案,但是由於手寫對映檔案很容易出錯,所以可利用MyBatis生成器自動生成實體類、DAO介面和Mapper對映檔案。這樣可以省去一部分的功夫,下面將介紹四種生成方式
需要的jar包:
1. mybatis-3.2.7.jar
2. mysql-connector-java-5.1.25-bin.jar
3. mybatis-generator-core-1.3.2.jar
生成方式有以下幾種:
第一種: 命令列式建立
檔案存放目錄:
命令列首先進到資料夾下面
貼上執行命令:java -jar mybatis-generator-core-1.3.2.jar -configfilegeneratorConfig.xml -overwrite
在配置的路徑下可以看到生成的檔案
generatorConfig.xml配置檔案如下:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 資料庫驅動-->
<classPathEntry location="mysql-connector-java-5.1.25-bin.jar"/>
<context id="MyTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate"value="true"/>
<!-- 是否去除自動生成的註釋 true:是: false:否 -->
<property name="suppressAllComments"value="true"/>
</commentGenerator>
<!--資料庫連結URL,使用者名稱、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost/ome" userId="root"password="123">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals"value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<!-- <propertyname="trimStrings" value="true"/> -->
</javaModelGenerator>
<!-- 生成對映檔案的包名和位置-->
<sqlMapGenerator targetPackage="mapper"targetProject="src/main/java">
<property name="enableSubPackages"value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER"targetPackage="dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是資料庫中的表名或檢視名 domainObjectName是實體類名-->
<table tableName="user" domainObjectName="User"enableCountByExample="false" enableUpdateByExample="false"enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
第二種: IDEA 14中使用mybatis-generator-maven-plugin外掛自動生成MyBatis程式碼
1. 首先需要建立一個Maven專案
2. 修改pom.xml檔案
<build>
<finalName>generatorConfig.xml</finalName>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src\main\resources\conf\generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>GenerateMyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
3. 配置Runner>VMOptions 、JRE、Environment variables、Properties
-Dmaven.multiModuleProjectDirectory=$M2_HOME
M2_HOME D:\Tool\apache-maven-3.3.3
4. 在Intellij IDEA新增一個“Run執行”選項,使用maven執行mybatis-generator-maven-plugin外掛
之後彈出執行配置框,為當前配置配置一個名稱,這裡其名為"generator",然後在“Command line” 選項中輸入“mybatis-generator:generate -e”
加了“-e ”是為了讓該外掛輸出詳細資訊,這樣可以定位問題
在Run選項中會出現generator選項
5. 配置generatorConfig.xml
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPEgeneratorConfiguration
PUBLIC "-//mybatis.org//DTDMyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--匯入屬性配置 -->
<propertiesresource="\conf\generator.properties"></properties>
<!--指定特定資料庫的jdbc驅動jar包的位置 -->
<!--<classPathEntrylocation="C:\\Users\\wanghaiyang\\.m2\\mvn_repository\\mysql\\mysql-connector-java\\5.1.13\\mysql-connector-java-5.1.13.jar"/>-->
<classPathEntrylocation="${jdbc.driverLocation}"/>
<context id="default"targetRuntime="MyBatis3">
<!-- optional,旨在建立class時,對註釋進行控制-->
<commentGenerator>
<propertyname="suppressDate" value="true"/>
<!-- 是否去除自動生成的註釋true:是: false:否 -->
<propertyname="suppressAllComments" value="true"/>
</commentGenerator>
<!--jdbc的資料庫連線 -->
<jdbcConnectiondriverClass="${jdbc.driverClass}"connectionURL="${jdbc.connectionURL}"userId="${jdbc.userId}" password="${jdbc.password}">
</jdbcConnection>
<!-- <jdbcConnectiondriverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost/ome" userId="root"password="123"></jdbcConnection>-->
<!-- 非必需,型別處理器,在資料庫型別和java型別之間的轉換控制-->
<javaTypeResolver>
<propertyname="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- Model模型生成器,用來生成含有主鍵key的類,記錄類
targetPackage 指定生成的model生成所在的包名
targetProject 指定在該專案下所在的路徑
-->
<javaModelGeneratortargetPackage="com.dubbo.model"targetProject="src/main/java">
<!-- 是否對model新增 建構函式 -->
<propertyname="constructorBased" value="true"/>
<!-- 是否允許子包,即targetPackage.schemaName.tableName-->
<propertyname="enableSubPackages" value="false"/>
<!-- 建立的Model物件是否 不可改變 即生成的Model物件不會有 setter方法,只有構造方法-->
<propertyname="immutable" value="false"/>
<!-- 給Model新增一個父類 -->
<propertyname="rootClass" value="com.dubbo.model"/>
<!-- 是否對類CHAR型別的列的資料進行trim操作 -->
<property name="trimStrings"value="false"/>
</javaModelGenerator>
<!--Mapper對映檔案生成所在的目錄 為每一個數據庫的表生成對應的SqlMap檔案 -->
<sqlMapGeneratortargetPackage="com.dubbo.mapper"targetProject="src/main/java">
<propertyname="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 客戶端程式碼,生成易於使用的針對Model物件和XML配置檔案 的程式碼
type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper物件
type="MIXEDMAPPER",生成基於註解的JavaModel 和相應的Mapper物件
type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper介面
-->
<javaClientGeneratortargetPackage="com.dubbo.dao" targetProject="src/main/java"type="XMLMAPPER">
<propertyname="enableSubPackages" value=""/>
<!--
定義Maper.java 原始碼中的ByExample()方法的可視性,可選的值有:
public;
private;
protected;
default
注意:如果targetRuntime="MyBatis3",此引數被忽略
-->
<propertyname="exampleMethodVisibility" value=""/>
<!--方法名計數器Important note: this property is ignored if the target runtime isMyBatis3.-->
<propertyname="methodNameCalculator" value=""/>
<!--為生成的介面新增父介面-->
<property name="rootInterface"value=""/>
</javaClientGenerator>
<table tableName="user"domainObjectName="User" enableCountByExample="false"enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table>
<!-- <table tableName="user"schema="ome">
<!–optional , only for mybatis3 runtime
自動生成的鍵值(identity,或者序列值)
如果指定此元素,MBG將會生成<selectKey>元素,然後將此元素插入到SQLMap的<insert> 元素之中
sqlStatement 的語句將會返回新的值
如果是一個自增主鍵的話,你可以使用預定義的語句,或者新增自定義的SQL語句. 預定義的值如下:
Cloudscape This will translate to: VALUESIDENTITY_VAL_LOCAL()
DB2: VALUES IDENTITY_VAL_LOCAL()
DB2_MF: SELECT IDENTITY_VAL_LOCAL() FROMSYSIBM.SYSDUMMY1
Derby: VALUES IDENTITY_VAL_LOCAL()
HSQLDB: CALL IDENTITY()
Informix: select dbinfo('sqlca.sqlerrd1') fromsystables where tabid=1
MySql: SELECT LAST_INSERT_ID()
SqlServer: SELECT SCOPE_IDENTITY()
SYBASE: SELECT @@IDENTITY
JDBC: This will configure MBG to generate codefor MyBatis3 suport of JDBC standard generated keys. This is a databaseindependent method of obtaining the value from identity columns.
identity: 自增主鍵 If true, then the column is flagged as anidentity column and the generated <selectKey> element will be placedafter the insert (for an identity column). If false, then the generated <selectKey>will be placed before the insert (typically for a sequence).
–>
<generatedKeycolumn="" sqlStatement="" identity=""type=""/>
<!–optional.
列的命名規則:
MBG使用<columnRenamingRule> 元素在計算列名的對應名稱之前,先對列名進行重新命名,
作用:一般需要對BUSI_CLIENT_NO前的BUSI_進行過濾
支援正在表示式
searchString 表示要被換掉的字串
replaceString 則是要換成的字串,預設情況下為空字串,可選
–>
<columnRenamingRulesearchString="" replaceString=""/>
<!–optional.告訴 MBG 忽略某一列
column,需要忽略的列
delimitedColumnName:true ,匹配column的值和資料庫列的名稱大小寫完全匹配,false 忽略大小寫匹配
是否限定表的列名,即固定表列在Model中的名稱
–>
<ignoreColumncolumn="delete" delimitedColumnName="true" />
<!–optional.覆蓋MBG對Model 的生成規則
column: 資料庫的列名
javaType: 對應的Java資料型別的完全限定名
在必要的時候可以覆蓋由JavaTypeResolver計算得到的java資料型別. Forsome databases, this is necessary to handle "odd" database types(e.g. MySql's unsigned bigint type should be mapped to java.lang.Object).
jdbcType:該列的JDBC資料型別(INTEGER,DECIMAL, NUMERIC, VARCHAR, etc.),該列可以覆蓋由JavaTypeResolver計算得到的Jdbc型別,對某些資料庫而言,對於處理特定的JDBC 驅動癖好很有必要(e.g. DB2's LONGVARCHAR type should be mapped to VARCHAR foriBATIS).
typeHandler:
–>
<columnOverridecolumn="" javaType="" jdbcType="" typeHandler="" delimitedColumnName="" />
</table>-->
</context>
</generatorConfiguration>
6. 配置generator.properties
jdbc.driverLocation=C:\\Users\\wanghaiyang\\.m2\\mvn_repository\\mysql\\mysql-connector-java\\5.1.13\\mysql-connector-java-5.1.13.jar
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/ome
jdbc.userId=root
jdbc.password=123
7. 選擇generator執行
會在專案資料夾src>main>java下產生配置的資料夾model、mapper、dao
第三種方式 通過MybatisGenerator類和配置檔案生成
1. 配置檔案使用上面的generatorConfig.xml
2. 建立MybatisGeneratorUtil類
importorg.mybatis.generator.api.MyBatisGenerator;
importorg.mybatis.generator.config.Configuration;
importorg.mybatis.generator.config.xml.ConfigurationParser;
importorg.mybatis.generator.exception.InvalidConfigurationException;
importorg.mybatis.generator.exception.XMLParserException;
importorg.mybatis.generator.internal.DefaultShellCallback;
importjava.io.File;
importjava.io.IOException;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.List;
/**
* Created by why on 2015/11/29.
*/
publicclass MybatisGeneratorUtil {
public static void main(String[] args) {
try {
System.out.println("startgenerator ...");
List<String> warnings = newArrayList<String>();
boolean overwrite = true;
File configFile = new File(MybatisGeneratorUtil.class.getResource("/conf/generatorConfig.xml").getFile());
ConfigurationParser cp = newConfigurationParser(warnings);
Configuration config =cp.parseConfiguration(configFile);
DefaultShellCallback callback = newDefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator =new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
System.out.println("endgenerator!");
} catch (IOException e) {
e.printStackTrace();
} catch (XMLParserException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (InvalidConfigurationExceptione) {
e.printStackTrace();
}
}
}
第四種方式 通過GeneratorAntTask類和配置檔案生成
新增類
importorg.mybatis.generator.ant.GeneratorAntTask;
/**
* Created by why on 2015/11/29.
*/
publicclass AntGenerator {
public static void main(String[] args) {
try {
GeneratorAntTask task = newGeneratorAntTask();
task.setConfigfile("src/main/resources/conf/generatorConfig.xml"); //(配置檔案具體path)
task.execute();
} catch (Exception e) {
e.printStackTrace();
}
}
}
測試生成程式碼的可用性
1. 新增mybatis配置檔案
<?xmlversion="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<propertyname="driver" value="com.mysql.jdbc.Driver" />
<propertyname="url" value="jdbc:mysql://localhost:3306/ome" />
<propertyname="username" value="root" />
<propertyname="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml" ></mapper>
</mappers>
</configuration>
2. 新建測試類
packagecom.dubbo.testgenerator;
importcom.dubbo.client.UserMapper;
importcom.dubbo.model.User;
importorg.apache.ibatis.io.Resources;
importorg.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
importjava.io.IOException;
importjava.io.Reader;
/**
* Created by wanghaiyang on 2015/11/30.
*/
publicclass Test {
public static void main(String[] args) {
String resource ="conf/mybatis.xml";
Reader reader = null;
try {
reader =Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = newSqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlMapper.openSession();
try {
UserMapper mapper =sqlSession.getMapper(UserMapper.class);
User user =mapper.selectByPrimaryKey(1);
System.out.println(user.toString());
} finally {
sqlSession.close();
}
}
}
相關推薦
MyBatis Generator生成程式碼的四種方式
專案目錄如下:dubbo是上一篇部落格裡寫的,程式碼就沒刪可以借鑑學習 由於MyBatis屬於一種半自動的ORM框架,所以主要的工作就是配置Mapping對映檔案,但是由於手寫對映檔案很容易出錯,所以可利用MyBatis生成器自動生成實體類、DAO介面和Mapper對映
MyBatis Generator生成程式碼的幾種方式
由於MyBatis屬於一種半自動的ORM框架,所以主要的工作就是配置Mapping對映檔案,但是由於手寫對映檔案很容易出錯,所以可利用MyBatis生成器自動生成實體類、DAO介面和Mapper對映檔案。這樣可以省去一部分的功夫,下面將介紹幾種生成方式:MyBatis Gen
eclipse下maven外掛用mybatis-generator生成程式碼
眾所眾知,mybatis是半自動的ORM持久化框架,不像hibernate可以全自動根據庫表生產pojo實體類或根據pojo實體類反向生成庫表。 不過我們可以利用maven外掛的mybatis-generator功能生成mybatis的xml對映檔案和資料庫對應的實體類。 下面請看生成程
問題收集:使用mybatis generator生成程式碼報錯,StringIndexOutOfBoundsException異常
問題描述:在使用mybatis 生成程式碼時,報錯 報錯:java.lang.StringIndexOutOfBoundsException: String index out of range: -1 問題解決方案:請檢查 table 標籤下的 domainObj
Mybatis 自動生成程式碼工具(maven方式)
由於MyBatis屬於一種半自動的ORM框架,所以主要的工作將是書寫Mapping對映檔案,但是由於手寫對映檔案很容易出錯,mybatis-gennerator外掛幫我們自動生成mybatis所需要的dao、bean、mapper xml檔案。 1.建立測試工程 選擇maven
mybatis-generator生成逆向工程兩種方式
mybatis官方提供了一個逆向工程包,可以針對資料庫表自動生成mybatis執行所需要的Pojo、Mapper xml檔案、Mapper Interface介面檔案。 mybatis-generator有很多種用法:命令列、eclipse/IDEA、Maven外掛,
mybatis Generator生成代碼及使用方式
方法調用 table ima 方便 ack pan 刪除 語句 功能 本文原創,轉載請註明:http://www.cnblogs.com/fengzheng/p/5889312.html 為什麽要有mybatis mybatis 是一個 Java 的 ORM 框
mybatis自動生成程式碼generator
mybatis-generator-core-1.3.2.jar包 編寫genertor的xml檔案,名下:generator.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorCon
【MyBatis Generator】程式碼自動生成工具 generatorConfig.xml配置檔案詳解
MyBatis Generator官網地址:http://www.mybatis.org/generator/index.html MyBaris Generator中文地址:http://mbg.cndocs.ml/ 在MBG中,最主要也最重要的,就是generatorConfig.xml
Android studio程式碼實現打電話+點選事件四種方式
?Android系統架構(重點) 第一層:應用層Application 第二層:應用框架層Application Framework 第三層:Android底層類庫層 Libraries、Dalvik虛擬機器 第四層:linux核心層 linux kernel Android是執行在
實現斐波拉契數列的四種方式python程式碼
斐波那契數列 1. 斐波拉契數列簡介 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契
mybatis逆向工程用idea通過pom外掛generator生成程式碼指令
一。 F:/ideaProject/springboot-mybatis-demo mybatis-generator:generate -e 環境搭建: pom檔案: <?xml version="1.0" encoding="UTF
SpringBoot 2.x(三):整合Mybatis的四種方式
前言 目前的大環境下,使用Mybatis作為持久層框架還是佔了絕大多數的,下面我們來說一下使用Mybatis的幾種姿勢。 姿勢一:零配置註解開發 第一步:引入依賴 首先,我們需要在pom檔案中新增依賴: 第二步:配置檔案 這裡我們採用yml來進行編寫,與properties檔案相比,yml看
mybatis自動生成程式碼generator.xml的配置
這個我也是才會用,主要是學習了我們老大的【配置】: generator.xml配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//
mybatis generator生成帶有分頁的Mybatis程式碼
MyBatis開發,最讓人開心的就是可以隨意寫SQL,這樣有多好的效能的SQL都可以進行調優。 但是MyBatis的優點也是它的缺點,不論什麼專案都需要編寫SQL,令人頭疼的要命,一般業務(例如單表操作)的簡單查詢、修改、刪除、插入,都需要自己手工去編寫SQL。 還好有第
mybatis generator生成持久層程式碼
mybatis generator的獲取方式 mybatis generator jar包下載地址: http://repo1.maven.org/maven2/org/mybatis/generator/mybatis-generato
Mybatis 載入 Mapper配置的四種方式
前言 Mybatis 的Mapper 是指Mybatis 執行資料庫操作的介面類以及方法,在非註解模式下,還包含與類對應的 xml 配置檔案。 第一種依據 Mapper 類 具體路徑 配置 Mapper 這種情況下,如果是非註解模式的話xml配置檔案必須和這個類在同一級目錄
mybatis-generator生成model和dao層程式碼
1、建立資料夾myibatisGen 2、下載mybatis-generator-core-1.3.1.jar或者其它版本的jar包,到myibatisGen資料夾下 3、為生成程式碼建立配置檔案“generatorConfig.xml” 4、生成程式碼 ja
mybatis-generator-mysql程式碼自動生成工具
流程: 1、匯入MybatisGenerator專案,在build path中修改jar包位置(mybatis-generator-core-1.3.2和mysql-jdbc) 2、修改generator.xml檔案 a.修改資料庫連線資訊<!
Spring系列教程七: Spring 整合mybatis的四種方式
一、使用採用資料對映器(MapperFactoryBean)的方式註解實現整合mybatis 不用寫mybatis對映檔案,採