動的にデータベーステーブルを作成するために、MyBatisの関連操作について

私はこのプロジェクトの問題点についてお話しましょう

対応するデータベース表に基づいてデータベース内に作成したフォームで動的なページデザインのユーザーの必要性:開発は、カスタムフォーム機能は、私が必要としている同様の問題に遭遇した最初の時間です

次のようにデザインページは次のとおりです。(私は、フロントページには、誰も光スプレーを吸入書きました)















私たちは、以下の設計セクションがそれにカラム名とタイプをカスタマイズすることができます知っています

そして、MyBatisの持つ背景フレームは、この要求が満たされない場合、私は本当にMyBatisのは、表関数の建設に関連していない見つかりませんでした

そして、派手なエラーのすべての種類の開発に非常に懸命に受け入れること 

そして、見つけるために、一連のテストを通じて直接書き込み、完全なSQLステートメントが正常に実行できるかどうか

このテーブルは構築されています

そして、それだけで、削除のSQLを挿入選択!!通常の操作でラベルを更新することができ、最終的に理由を確認するには、このソースコードを勉強することはできません


しかし、これはちょうど死んだテーブルは、我々は、私はこれを試し、その後望むものではありません作成することです。

  <update   id="createDemo">
  		CREATE TABLE ${tableName} (
    		id int primary key auto_increment,
    		applicant varchar(10) not null,
    		createTime timestamp ,
       		isdel tinyint not null
      )character set utf8 collate utf8_bin;
  </update>

テスト結果は、可能性のある説明テーブルを動的に私は、SQLにこれを入れない、フィールド名とフィールドタイプを挿入することができます

  <update   id="createDemo">
  		CREATE TABLE ${tableName} (
    		
    		${filedName} varchar(10) not null
    		
      )character set utf8 collate utf8_bin;
  </update>

テスト結果は可能であり、


私がしなければタイプと結合していること?

<update   id="createDemo">
  		CREATE TABLE ${tableName} (
    		
    		${filedName} ${type}(10) not null
    		
      )character set utf8 collate utf8_bin;
  </update>

テスト結果もで作ることができません


いくつかの時間後、私はこのようなSQLの最初のバージョンをテスト

  <update id="createTable" statementType="STATEMENT" parameterType="map">  
    CREATE TABLE ${tableName}  (
    		id int primary key auto_increment,
    		applicant varchar(10) not null,
    		createTime timestamp ,
       		isdel tinyint not null,
       <foreach collection="list" item="flowtable" separator="," >
       
       	<choose>
       		<when test="flowtable.mycolumn != null and flowtable.mycolumn !=''">${flowtable.mycolumn}</when>
       		<otherwise>${flowtable.id}</otherwise>
       	</choose>
       		 ${flowtable.texttype}<if test="flowtable.max != null">(${flowtable.max})</if>  <!-- <if test="flowtable.isnull != 0">not null</if> -->
       </foreach>
      )character set utf8 collate utf8_bin;
  </update>

後でするStatementTypeに利用できる発見された=「STATEMENT」も除去することができます

私はテスト前はブログを書くために、時間を使用していないが、それはなぜするStatementType =「STATEMENT」なし知らないが、それはあまりにも心配するかもしれないが、問題はそれをどこのテスト中

あなたは友人を持っている場合は、同じ問題を体験するStatementType =「STATEMENT」トライを追加することができます

最後に、非常に単純な関数が、私は多くの労力を費やしたが、慎重に、より類似した機能の友人に遭遇する心の崩壊の願いを出し終えたばかり




公開された16元の記事 ウォン称賛21 ビュー30000 +

おすすめ

転載: blog.csdn.net/q690080900/article/details/76228208