Spring JdbcTemplate實現通用的泛型dao二:實現自己的名稱轉換NameHandler
阿新 • • 發佈:2019-02-20
這個比較簡單,只是實現了根據Java實體屬性名轉換回資料庫表的列名而已,看下介面定義:
/** * 名稱處理介面 * * User: liyd * Date: 2/12/14 * Time: 4:51 PM */ public interface NameHandler { /** * 根據實體名獲取表名 * * @param entityName * @return */ public String getTableName(String entityName); /** * 根據表名獲取主鍵名 * * @param entityName * @return */ public String getPrimaryName(String entityName); /** * 根據屬性名獲取列名 * * @param fieldName * @return */ public String getColumnName(String fieldName); }
三個方法相信一看就明白了,實現也順便貼一下吧:
/** * 預設名稱處理handler * * User: liyd * Date: 2/12/14 * Time: 4:51 PM */ public class DefaultNameHandler implements NameHandler { /** 欄位字首 */ private static final String PREFIX = "_"; /** 主鍵字尾 */ private static final String PRI_SUFFIX = "_id"; /** * 根據實體名獲取表名 * * @param entityName * @return */ @Override public String getTableName(String entityName) { //Java屬性的駱駝命名法轉換回資料庫下劃線“_”分隔的格式 return NameUtils.getUnderlineName(entityName); } /** * 根據表名獲取主鍵名 * * @param entityName * @return */ @Override public String getPrimaryName(String entityName) { String underlineName = NameUtils.getUnderlineName(entityName); //正如前面說到的,資料庫列名統一以“_”開始,主鍵以表名加上“_id” 如user表主鍵即“_user_id” return PREFIX + underlineName + PRI_SUFFIX; } /** * 根據屬性名獲取列名 * * @param fieldName * @return */ @Override public String getColumnName(String fieldName) { String underlineName = NameUtils.getUnderlineName(fieldName); //資料庫列名統一以“_”開始 return PREFIX + underlineName; } }