Mybatis:从映射的bean属性中获取列的名称

时间:2011-12-30 10:01:37

标签: ibatis 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

,我有什么办法可以获得字符串 user_id

2 个答案:

答案 0 :(得分: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 :(得分:1)

Configuration configuration = sessionFactory.getConfiguration();
    ResultMap resultMap = configuration.getResultMap("User");
    for(ResultMapping resultMapping : resultMap.getResultMappings()) {
        System.out.println(resultMapping.getColumn() + "::"+resultMapping.getProperty());
    }

逐个获取列属性映射,然后可以获取属性的列名。