Mybatis-generator修改原始碼實現自定義方法,返回List物件(一)
Mybatis-generator修改原始碼實現自定義方法,返回Lsit物件——第一篇
本文結合網上的諸多教程,詳細介紹通過修改Mybatis-generator的原始碼, 在自動生成dao層和XML檔案時,新增一個返回List的方法,資料庫使用Mysql
- 1、獲取Mybatis-generator原始碼,並建立專案
- 2、組合原始碼中的示例,實現Dao(Mapper)層新增一個方法
- 3、實現XML檔案新增Dao(Mapper)層的實現
目的:
- 近期經常要搭建新專案,使用的SSM框架,而且經常要改資料庫結構,但是在用Mybatis-generator自動生成的時候,僅有幾個預設的方法,
-
感覺不夠用,例如我需要下面這樣的方法:
User user= new User();
List<User> list=userMapper.selectByObject(user);
設定實體類user物件的任何屬性,根據屬性查詢出所有的資料,屬性為null則SQL語句中不新增這個條件
不設定任何屬性,則預設返回所有資料
1、 獲取Mybatis-generator原始碼,並建立專案
網上有非常多的教程,比如一些修改格式、註釋的教程,大家也可以去看看,那麼我們這裡先講講怎麼獲取原始碼。
首先我建一個maven專案,我用的是Myeclipse10,建好以後,在pom.xml中新增這個3個依賴:
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2 .17</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.9.7</version>
</dependency>
junit 的依賴必須還存在,把這些包下載下來以後,開啟org.mybatis.generator裡頭的隨便一個CLASS檔案,
剛開始顯示找不到原始碼,過一會兒就會把原始碼下載下來,然後你去你的maven庫中找,比如這是我的路徑:H:\mavenjar\org\mybatis\generator\mybatis-generator-core\1.3.2
帶-sources的就是原始碼的jar,
把它解壓,就可以得到.java的檔案
開啟路勁可以看到這些資料夾,在專案中建立src/main/java目錄,然後建立 org.mybatis.generator 包,將截圖中的檔案全選複製到這個包下面,
然後在src/main/resources 資料夾下新增generatorConfig.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>
<classPathEntry
location="H:\generator\mysql-connector-java-5.1.6-bin.jar" />
<context id="mysqlTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/servermonitor"
userId="root" password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成model模型,對應的包,存放位置可以指定具體的路徑,如/ProjectName/src,也可以使用MAVEN來自動生成 -->
<javaModelGenerator targetPackage="com.servermonitor.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--對應的xml mapper檔案 -->
<sqlMapGenerator targetPackage="mybatis" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 對應的dao介面 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.servermonitor.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 這裡是資料庫的表名table_user 以及 POJO類的名字User -->
<table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
</context>
</generatorConfiguration>
我直接將Mysql的包放在 H:\generator\mysql-connector-java-5.1.6-bin.jar這裡,這個可以自己去改,
然後建立一個包,一個生成的類,
生成類的程式碼如下:
package org.mybatis.generator.extend;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import org.mybatis.generator.api.ShellRunner;
public class MyTestRun {
public static void main(String[] args) {
String config = MyTestRun.class.getClassLoader().getResource("generatorConfig.xml").getFile();
try {
config=URLDecoder.decode(config, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String[] arg = { "-configfile", config, "-overwrite" };
ShellRunner.main(arg);
}
}
我本身的工作空間資料夾名稱有空格,所以在獲取路徑的時候,會出現%20這種情況,所以需要轉碼,你們如果沒有這種的,是不需要decode的,就是try裡頭的程式碼;
把專案報錯的的地方改好,然後執行這個main方法,就會生成一系列的檔案,這裡就不介紹了,生成檔案的後,大家可以看到dao層的方法只有幾個預設的方法,前提是你已經連線好了資料庫,並且你的資料庫裡有個表
下一篇我們會找到生成它們的方法,並做修改