동적으로 데이터베이스 테이블을 작성하는 MyBatis로 관련 작업에 대한

제가 문제에 대해 얘기하자 나는이 프로젝트에서 발생

해당 데이터베이스 테이블에 따라 데이터베이스에서 생성 된 형태의 동적 페이지 디자인 사용자의 필요 : 개발은 사용자 지정 양식 기능은 내가 필요로하는 유사한 문제가 발생하여 처음이다

다음과 같이 설계 페이지는 다음과 같습니다 (I 모두 빛 스프레이, 첫 페이지는 짜증 썼다)















우리는 다음과 같은 설계 섹션이에 열 이름과 유형을 사용자 정의 할 수 있습니다 알고

그런 다음 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 사용할 발견 = "문"도 제거 할 수 있습니다

나는 사전 테스트 블로그를 작성하는 다음 시간을 사용하는 것이 아니라 왜 statementType = "문"없이 모르지만 너무 불안 할 수 있지만 문제를 어디 테스트하는 동안

당신이있는 경우 친구 = "문"보십시오 같은 문제가 statementType을 추가 할 수 있습니다 체험

마지막으로, 아주 간단한 기능을하지만 많은 노력을 보냈다는주의 깊게 더 유사한 기능의 친구가 발생할 마음 축소 소원 밖으로 완료 단지




게시 16 개 원래 기사 · 원 찬양 21 ·은 30000 +를 볼

추천

출처blog.csdn.net/q690080900/article/details/76228208