Mybatis: получить имя столбца из свойства сопоставленного бина - PullRequest
2 голосов
/ 30 декабря 2011

Можно ли как-нибудь получить имя столбца из свойства бина?

Например, у меня есть пользовательская таблица

user(user_id,user_name)

и класс

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

У меня есть файл результата в моем файле конфигурации

 <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>

Есть ли способ получить строку user_id , если у меня есть строка userId

Ответы [ 2 ]

1 голос
/ 17 мая 2016
Configuration configuration = sessionFactory.getConfiguration();
    ResultMap resultMap = configuration.getResultMap("User");
    for(ResultMapping resultMapping : resultMap.getResultMappings()) {
        System.out.println(resultMapping.getColumn() + "::"+resultMapping.getProperty());
    }

получить сопоставление свойства столбца одно за другим, а затем получить имя столбца вашего свойства.

1 голос
/ 06 января 2012

Соответствует ли следующий фрагмент кода вашим требованиям?

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);
...