Spring+SpringMVC+MyBatis の詳細な学習と構築 - MyBatis リバース エンジニアリング

巴扎黑
リリース: 2017-06-26 09:34:55
オリジナル
2084 人が閲覧しました

転載する場合は出典を明記してください:

前述の通りSpring+SpringMVC+MyBatisの徹底学習と構築(9)-MyBatisとSpringの統合

マッパー自動生成ツールmybatis-generator-core-1.3.2を使用する公式ウェブサイトから po クラスとマッパー マッピング ファイルを生成します。

1. リバース エンジニアリングとは何ですか? Mybatis では、プログラマが自分で SQL ステートメントを作成する必要があります。これにより、mybatis の実行に必要なコード (mapper.java、mapper.xml、po...) を自動的に生成できます。単一のテーブル。

実際のエンタープライズ開発で一般的に使用されるリバース エンジニアリング手法:

データベース テーブルから Java コードを生成します。

2. リバースエンジニアリングをダウンロードします

3. 使用方法 (使用方法を知っている必要があります)

その後のデータベーステーブルの変更、拡張、変更要求などを防ぐために、自動生成された po とマッパーカバレッジが誤って更新されます。新しい特別に生成されたプロジェクトのgeneratorSqlmapCustomを作成し、必要に応じて自動生成されたpoやマッパーなどをプロジェクトにコピーします。

3.1 リバースエンジニアリングを実行する

開発ツールに依存せず、Java プログラム方式を使用することをお勧めします。

3.2 マッパー生成設定ファイル

generatorConfigでマッパー生成の詳細を設定します

(3) マッパーファイルが配置されているパッケージパス。

設定ファイルは次のとおりです:

<?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><!--数据库连接的信息:驱动类、连接地址、用户名、密码 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mybatisdemo" userId="root"password=""></jdbcConnection><!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
            userId="yycg"
            password="yycg">
        </jdbcConnection> --><!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
            NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- targetProject:生成PO类的位置 --><javaModelGenerator targetPackage="joanna.yan.po"targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /><!-- 从数据库返回的值被清理前后的空格 --><property name="trimStrings" value="true" /></javaModelGenerator><!-- targetProject:mapper映射文件生成的位置 --><sqlMapGenerator targetPackage="joanna.yan.mapper" 
            targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></sqlMapGenerator><!-- targetPackage:mapper接口生成的位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="joanna.yan.mapper" 
            targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><p    roperty name="enableSubPackages" value="false" /></javaClientGenerator><!-- 指定数据库表 --><table tableName="items"></table><table tableName="orders"></table><table tableName="orderdetail"></table><table tableName="user"></table><!-- <table schema="" tableName="sys_user"></table>
        <table schema="" tableName="sys_role"></table>
        <table schema="" tableName="sys_permission"></table>
        <table schema="" tableName="sys_user_role"></table>
        <table schema="" tableName="sys_role_permission"></table> --><!-- 有些表的字段需要指定java类型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> --></context></generatorConfiguration>
ログイン後にコピー

3.3 Javaクラスを使用してマッパーファイルを生成します

public class GeneratorSqlmap {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 {
            GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
ログイン後にコピー
生成されたコード:

3.4 生成されたマッパーファイルを、プロジェクト

3.4.1mapper.xml

Mapper.xml ファイルがマッパーディレクトリにコピーされます

3.4.2mapper.java

Mapper.xml ファイルがマッパーディレクトリにコピーされます

注: Mapper.xml ファイルと Mapper.java ファイルは同じディレクトリにあり、ファイル名も同じです。

3.4.3mapperインターフェーステスト

  = ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"=(ItemsMapper) applicationContext.getBean("itemsMapper" ="手机" =ItemsExample.Criteria criteria="笔记本3"List<Items> list= =itemsMapper.selectByPrimaryKey(1 Items items=itemsMapper.selectByPrimaryKey(1"水杯"
ログイン後にコピー

4. リバースエンジニアリングの注意事項

4.1Mapperファイルの内容は上書きされずに追加されます

XXXMapper.xmlファイルがすでに存在する場合、再生成されると、 Mapper.xml ファイルは上書きされ、内容が追加されたため、mybatis の解析が失敗しました。

解決策: 最初に生成されたmapper.xmlファイルを削除し、再度生成します。

MyBatis によって自動的に生成される po および mapper.java ファイルは、コンテンツが追加されるのではなく、この問題なく直接上書きされます。

4.2 テーブルスキーマの問題

以下は、Oracle データベーステーブルのコードを生成するためのスキーマ問題です。

スキーマは、Oracle の 1 つのユーザーがスキーマに対応することがわかります。同じテーブル名にアクセスできる Oracle データベース内に複数のスキーマがある場合、mybatis を使用してテーブルの mapper.xml を生成すると、マッパーのコンテンツが重複して、mybatis 解析エラーが発生します。

解決策: 次のようにテーブルにスキーマを入力します:

XXXX はスキーマの名前です。生成後、マッパーのスキーマ プレフィックスを削除します。 xml をバッチで削除しないと、Oracle ユーザーが SQL ステートメントを変更したときにクエリが失敗します。

ショートカット操作方法:mapper.xmlファイルの一括置換:「from XXXX」は空です。

Oracle クエリ オブジェクトのスキーマは、次のように dba_objects からクエリできます:

select * from dba_objects

以上がSpring+SpringMVC+MyBatis の詳細な学習と構築 - MyBatis リバース エンジニアリングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート