2011-12-30 78 views
2

有沒有什麼辦法可以從bean屬性中檢索列名?Mybatis:從映射bean屬性獲取列的名稱

比如我有一個用戶表

user(user_id,user_name) 

和一類

class User{ 
private Integer userId; 
private String userName; 
//getter setter 
} 

我有一個resultMap在我的配置文件

<resultMap id="userMap" type="User"> 
    <id property="userId" column="user_id" javaType="Integer" jdbcType="INTEGER" /> 
    <result property="userName" column="user_name" javaType="String" jdbcType="VARCHAR" /> 
</resultMap> 

有什麼辦法,我可以得到如果我有字符串userId

+0

我很好奇,你爲什麼需要它? – Andy 2011-12-30 16:58:33

+0

我需要它動態生成一個SQL – 2012-01-03 04:05:15

+0

我想知道同樣的事情,但從目前爲止我所看到的,你必須手動編寫它。但不知道。讓這個想法更一般化,並請求一個功能,我會支持它。 http://code.google.com/p/mybatis/issues/entry – 2012-07-16 00:50:38

回答

1

以下代碼段是否滿足您的要求?

String propertyName = "userId"; 
Pattern p = Pattern.compile("([a-z0-9])([A-Z])"); 
Matcher m = p.matcher(propertyName); 
StringBuffer sb = new StringBuffer(); 
while (m.find()) { 
    m.appendReplacement(sb, m.group(1) + "_" + m.group(2).toLowerCase()); 
} 
m.appendTail(sb); 
1
Configuration configuration = sessionFactory.getConfiguration(); 
    ResultMap resultMap = configuration.getResultMap("User"); 
    for(ResultMapping resultMapping : resultMap.getResultMappings()) { 
     System.out.println(resultMapping.getColumn() + "::"+resultMapping.getProperty()); 
    } 

由一贈列屬性映射之一,然後可以得到你的財產的列名。