1. 程式人生 > 程式設計 >mybatis 逆向生成後遵循java駝峰法則的解決

mybatis 逆向生成後遵循java駝峰法則的解決

當時用逆向生成後,實體類中的下劃線都被去掉,這時只需要在sqlmap.xml中加以下程式碼即可。開啟mybatis駝峰法則。

 <settings>
  <!-- 列印查詢語句 -->
  <setting name="logImpl" value="STDOUT_LOGGING" />
   <!-- 是否開啟自動駝峰命名規則(camel case)對映,即從經典資料庫列名 A_COLUMN 到經典Java 屬性名 aColumn 的類似對映 -->
  <setting name="mapUnderscoreToCamelCase" value="true"/>
 </settings>

補充知識:【Java】Iterator介面方法及 獨立類迭代器實現

介面實現:

Iterator介面包含三個方法:hasNext、next、remove。

迭代器的位置不是在某一個元素上,而是在集合中第一個元素之前、兩個元素之間或最後一個元素之後。

public interface Iterator<T> {

 /**
  * Task:測定迭代器是否完成遍歷並越過資料集的最後一個元素
  * @return 迭代器若有下一個元素返回 true
  */
 public boolean hasNext();

 /**
  * Task:提取集合中當前(下一個)元素 並迭代前進下一個位置
  * @return 迭代當前元素的引用
  * @throws java.util.NoSuchElementException 若迭代已經到頭,則 hasNext()為false
  */
 public T next();

 /**
  * Task:從迭代器刪除next()返回的下一個元素
  *  此後呼叫next()的行為將與刪除前一樣
  * Precondition:next()已被呼叫,remove()尚未被呼叫
  *  資料集在迭代期間 除呼叫本方法外未被修改
  * @throws IllegalStateException 若next()未被呼叫
  * @throws UnsupportedOperationException 若迭代器不允許刪除
  */
 public void remove();
}

獨立類迭代器實現:

import java.util.ArrayList;
import java.util.NoSuchElementException;

/**
 * 獨立類迭代器
 * @param <T>
 */
public class SeparateIterator<T> implements Iterator<T> {
 private ArrayList<T> list;
 private int nextPosition; //next()返回最近元素的位置
 private boolean wasNextCalled; //需要刪除的

 public SeparateIterator(ArrayList<T> arrayList) {
  list=arrayList;
  nextPosition=0;   //用於跟蹤迭代到何處
  wasNextCalled=false;  //用於檢出是否首先呼叫了next()
 }

 @Override
 public boolean hasNext() {
  return nextPosition<list.size();
 }

 @Override
 public T next() {
  if(hasNext()) {
   wasNextCalled = true;  //設定為true,remove()方法可以呼叫next()
   nextPosition++;
   return list.get(nextPosition-1); //由於先前移,故減一

  }
  else
   throw new NoSuchElementException("Illegal call to next();"+"iterator is after end of list!");
 }

 @Override
 public void remove() {
  if(wasNextCalled){
   list.remove(nextPosition);
   nextPosition--;
   wasNextCalled=false;
  }
  else
   throw new IllegalStateException("Illegal call to remove();"+"next() was not called!");
 }
}

測試:

注意呼叫SeparateIterator的建構函式將迭代器nameofGQT與線性表nameList連線起來。

import java.util.ArrayList;

public class Test {
 public static void main(String[] args){
  ArrayList<String> arrayList=new ArrayList<String>();
  arrayList.add("Ned");
  arrayList.add("John");
  arrayList.add("Robb");
  arrayList.add("Sansa");
  arrayList.add("Arya");
  arrayList.add("Bran");

  for (String s:arrayList) { //輸出
   System.out.println(s);
  }
  System.out.println();

  Iterator<String> nameofGQT=new SeparateIterator<String>(arrayList);  //呼叫SeparateIterator的建構函式把迭代器namwodGQT與arrayList連線在一起
//  while (nameofGQT.hasNext())
//   System.out.print(nameofGQT.next()+" "); //用於測試,否則會丟擲NoSuchElementException異常
//  System.out.println();
  nameofGQT.next();   //The old wolf is gone! Poor Ned!
//  while (nameofGQT.hasNext())
//   System.out.print(nameofGQT.next()+" "); //用於測試,否則會報出NoSuchElementException異常
//  System.out.println();
  nameofGQT.next();
  nameofGQT.remove();  //The Young Wolf is dead!
  //nameofGQT.remove(); //出錯,未先使用next(),報出IllegalStateException異常
  while (nameofGQT.hasNext())
   System.out.print(nameofGQT.next()+" ");

 }
}

以上這篇mybatis 逆向生成後遵循java駝峰法則的解決就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。