mybatis 通用CRUD的替換方法

 

    http://git.oschina.net/alexgaoyh/MutiModule-parent     java

代碼這次變動較大,使用了mybatis-generator-maven-plugin 插件,把以前多模塊項目中的domain部分刪除,將這一部分代碼整合到persise部分,緣由是使用mybatis-generator-maven-plugin插件的時候,可以自動生成實體類,減小代碼移動相關的工做量。(數據庫逆向代碼生成工具) mysql


    前一段時間使用maven多模塊項目整合了spring mybatis部分,最近在處理通用CRUD方法的時候,遇到了一系列問題,特寫文章記錄一下: git

    網絡上有不少通用CRUD方法的解決方案,增長DAO接口部分,動態拼接sql……,本文並不對這些方法作過多的介紹。 spring

    以前用過一段hibernate(強類型的ORM),最近再轉入mybatis的時候,發現mybatis能夠理解爲半ORM,經過xml書寫sql來知足業務需求,若是想使用通用的CRUD方法的話,不少解決方案注入性太強了,因此找了很久,以爲使用 mybatis-generator-maven-plugin 可以很好地替代這種解決方案: sql

    1: 不改變mybatis的特色(接口,sql寫到xml內部),新手拿到項目以後,可以很快上手; 數據庫

    2: 簡單的單表CRUD也可以實現; 網絡

    3: 減小代碼量的書寫,及時是本身編寫了通用方法(泛型),也是須要本身編寫相關的代碼,繼承相關的接口才能實現的,使用generator的話,可以大批量的減小代碼書寫; mybatis


    因此,最終選擇了mybatis-generator-maven-plugin 來實現簡單的單表CRUD方法。 app

    實現的話,最主要的代碼分爲以下兩個部分: dom

    

<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.2</version>
				<configuration>
				    <verbose>true</verbose>
				    <overwrite>true</overwrite>
				</configuration>
			</plugin>



    

/src/main/resource 下建立 generatorConfig.xml文件:

注意修改一些數據庫方法的配置,這樣,在數據庫裏面生成相關的表結構以後,經過下面的配置,來映射相關的類文件/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="C:\Users\lenovo\.m2\repository\mysql\mysql-connector-java\5.1.21\mysql-connector-java-5.1.21.jar" />
    
	<context id="context1" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://127.0.0.1:3306/mybatisTest?useUnicode=true&amp;characterEncoding=UTF-8"
            userId="root" password="alexgaoyh" />
            
        <javaModelGenerator targetPackage="com.alexgaoyh.MutiModule.persist.demo" targetProject="F:\eclipseWorkspace\MutiModule-parent\MutiModule-persist\src\main\java" />
        
        <sqlMapGenerator targetPackage="com.alexgaoyh.MutiModule.persist.demo" targetProject="F:\eclipseWorkspace\MutiModule-parent\MutiModule-persist\src\main\resources" />
        
        <javaClientGenerator targetPackage="com.alexgaoyh.MutiModule.persist.demo" targetProject="F:\eclipseWorkspace\MutiModule-parent\MutiModule-persist\src\main\java" type="XMLMAPPER" />
        
        <table schema="" tableName="demo" />
        
    </context>
	    
</generatorConfiguration>
<!-- 每次修改的部分爲替換  targetPackage tableName 部分,對應數據庫不一樣的表結構,不一樣的包名,自動映射出來相關的類文件-->



1: 數據庫生成相關的表結構(表面demo)

2:Eclipse使用maven,項目右鍵,run as  執行 (mybatis-generator:generate) 以下圖:




執行完畢以後,刷新項目:

紅框標註的就是自動生成的相關文件: 其中這些文件可以很簡單的知足單表CRUD的需求,也不用學習新的代碼,簡單容易,易上手。


具體在使用過程當中,儘可能記錄下來每次修改xml部分的地方(如上圖的 DemoMapper.xml 部分),這樣,若是修改量少的話,表結構發生變動的話,直接從新生成相關的類文件/配置文件 便可。 避免mybatis這種,修改表結構以後(Demo.java DemoExample.java DemoMapper.xml ),不少文件都須要更改的狀況(ORM)。

相關文章
相關標籤/搜索