您的位置:首页 > 运维架构

mybatis获取xml文件中property对应的column

2016-05-06 11:41 387 查看
mybatis根据property获取column

mybatis根据类的属性获取xml文件中对应的column

mybatis获取xml文件中property对应的column

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

蕃薯耀 2016年5月6日 11:40:00 星期五
http://blog.csdn.net/w995223851
xml解析采用Dom4j(Dom4j使用详情见:http://fanshuyao.iteye.com/blog/2279679)

可以在附件中下载:http://fanshuyao.iteye.com/blog/2294879

Java代码


package xxx.xxx.common.utils;

import java.util.Date;

import java.util.List;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

public class XmlUtils {

/**

* 根据类的属性名找表的列名(取一个的时候可以使用此方法)

* @param fileName 类对应的Mapper xml文件

* @param id 唯一的id

* <p>

* 如:resultMap id="BaseResultMap" type="com.chinagas.org.beans.User" 中的id

* </p>

* @param property 属性名(对应的Java对象属性名)

* @return

*/

public static String getMapperColumnByProperty(String fileName, String id, String property){

try {

SAXReader saxReader = new SAXReader();

Document document = saxReader.read(XmlUtils.class.getClassLoader().getResourceAsStream(fileName));

if(document != null){

Element root = document.getRootElement();

if(root != null){

@SuppressWarnings("unchecked")

List<Element> resultMaps = root.elements("resultMap");

for (Element resultMap : resultMaps) {

if(resultMap != null && resultMap.attributeValue("id").equals(id)){

@SuppressWarnings("unchecked")

List<Element> properties = resultMap.elements();

for (Element prop : properties) {

if(prop != null && prop.attributeValue("property").equals(property)){

return prop.attributeValue("column");

}

}

}

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* 返回ResultMap对应Element对象(取2次以上的时候,建议先把Element对象找到,再根据此Element对象再去找column,效率高很多)

* @param fileName 类对应的Mapper xml文件

* @param id 唯一的id

* <p>

* 如:resultMap id="BaseResultMap" type="com.chinagas.org.beans.User" 中的id

* </p>

* @return

*/

public static Element getResultMapElement(String fileName, String id){

try {

SAXReader saxReader = new SAXReader();

Document document = saxReader.read(XmlUtils.class.getClassLoader().getResourceAsStream(fileName));

if(document != null){

Element root = document.getRootElement();

if(root != null){

@SuppressWarnings("unchecked")

List<Element> resultMaps = root.elements("resultMap");

for (Element resultMap : resultMaps) {

if(resultMap != null && resultMap.attributeValue("id").equals(id)){

return resultMap;

}

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* 在Element根据property找表的列名(和方法getResultMapElement()结合使用,多次取Column时效率高出很多倍)

* @param resultMapElement Mapper xml文件解析后得到的Element对象(方法:getResultMapElement())

* @param property 属性名(对应的Java对象属性名)

* @return

*/

public static String getMapperColumnByElement(Element resultMapElement, String property){

try {

if(resultMapElement != null){

@SuppressWarnings("unchecked")

List<Element> properties = resultMapElement.elements();

for (Element prop : properties) {

if(prop != null && prop.attributeValue("property").equals(property)){

return prop.attributeValue("column");

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

public static void main(String[] args) {

long startTime = new Date().getTime();

/*System.out.println(getMapperColumnByProperty("UserMapper.xml","BaseResultMap", "userName"));

System.out.println(getMapperColumnByProperty("UserMapper.xml","BaseResultMap", "loginName"));

System.out.println(getMapperColumnByProperty("UserMapper.xml","BaseResultMap", "orgName"));

System.out.println(getMapperColumnByProperty("UserMapper.xml","BaseResultMap", "sex"));*/

Element e = getResultMapElement("UserMapper.xml","BaseResultMap");

System.out.println(getMapperColumnByElement(e, "userName"));

System.out.println(getMapperColumnByElement(e, "loginName"));

System.out.println(getMapperColumnByElement(e, "orgName"));

System.out.println(getMapperColumnByElement(e, "sex"));

long endTime = new Date().getTime();

System.out.println("所用的时间间隔是:"+ (endTime-startTime));

}

}

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

蕃薯耀 2016年5月6日 11:40:00 星期五
http://blog.csdn.net/w995223851
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: