http://www.dexcoder.com/selfly/article/430;jsessionid=959C371EA8AA790218E02E8683007D9C
这个比较简单,只是实现了根据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;
- }
- }