mybatis根据property获取column

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

蕃薯耀 2016年4月29日 15:44:59 星期五

http://fanshuyao.iteye.com/

 

xml解析采用Dom4j(Dom4j使用详情见:http://fanshuyao.iteye.com/blog/2279679)

 

可以在附件中下载

Java代码   mybatis根据property获取column
  1. package xxx.xxx.common.utils;  
  2.   
  3. import java.util.Date;  
  4. import java.util.List;  
  5.   
  6. import org.dom4j.Document;  
  7. import org.dom4j.Element;  
  8. import org.dom4j.io.SAXReader;  
  9.   
  10.   
  11.   
  12. public class XmlUtils {  
  13.       
  14.     /** 
  15.      * 根据类的属性名找表的列名(取一个的时候可以使用此方法) 
  16.      * @param fileName 类对应的Mapper xml文件 
  17.      * @param id  唯一的id 
  18.      * <p> 
  19.      * 如:resultMap id="BaseResultMap" type="com.chinagas.org.beans.User" 中的id 
  20.      * </p> 
  21.      * @param property 属性名(对应的Java对象属性名) 
  22.      * @return 
  23.      */  
  24.     public static String getMapperColumnByProperty(String fileName, String id, String property){  
  25.         try {  
  26.             SAXReader saxReader = new SAXReader();    
  27.             Document document = saxReader.read(XmlUtils.class.getClassLoader().getResourceAsStream(fileName));    
  28.             if(document != null){  
  29.                 Element root = document.getRootElement();  
  30.                 if(root != null){  
  31.                     @SuppressWarnings("unchecked")  
  32.                     List<Element> resultMaps = root.elements("resultMap");  
  33.                     for (Element resultMap : resultMaps) {  
  34.                         if(resultMap != null && resultMap.attributeValue("id").equals(id)){  
  35.                             @SuppressWarnings("unchecked")  
  36.                             List<Element> properties = resultMap.elements();  
  37.                             for (Element prop : properties) {  
  38.                                 if(prop != null && prop.attributeValue("property").equals(property)){  
  39.                                     return prop.attributeValue("column");  
  40.                                 }  
  41.                             }  
  42.                         }  
  43.                     }  
  44.                 }    
  45.             }  
  46.         } catch (Exception e) {  
  47.             e.printStackTrace();  
  48.         }  
  49.         return null;  
  50.     }  
  51.       
  52.     /** 
  53.      * 返回ResultMap对应Element对象(取2次以上的时候,建议先把Element对象找到,再根据此Element对象再去找column,效率高很多) 
  54.      * @param fileName 类对应的Mapper xml文件 
  55.      * @param id  唯一的id 
  56.      * <p> 
  57.      * 如:resultMap id="BaseResultMap" type="com.chinagas.org.beans.User" 中的id 
  58.      * </p> 
  59.      * @return 
  60.      */  
  61.     public static Element getResultMapElement(String fileName, String id){  
  62.         try {  
  63.             SAXReader saxReader = new SAXReader();    
  64.             Document document = saxReader.read(XmlUtils.class.getClassLoader().getResourceAsStream(fileName));    
  65.             if(document != null){  
  66.                 Element root = document.getRootElement();  
  67.                 if(root != null){  
  68.                     @SuppressWarnings("unchecked")  
  69.                     List<Element> resultMaps = root.elements("resultMap");  
  70.                     for (Element resultMap : resultMaps) {  
  71.                         if(resultMap != null && resultMap.attributeValue("id").equals(id)){  
  72.                             return resultMap;  
  73.                         }  
  74.                     }  
  75.                 }    
  76.             }  
  77.         } catch (Exception e) {  
  78.             e.printStackTrace();  
  79.         }  
  80.         return null;  
  81.     }  
  82.       
  83.     /** 
  84.      * 在Element根据property找表的列名(和方法getResultMapElement()结合使用,多次取Column时效率高出很多倍) 
  85.      * @param resultMapElement Mapper xml文件解析后得到的Element对象(方法:getResultMapElement()) 
  86.      * @param property 属性名(对应的Java对象属性名) 
  87.      * @return 
  88.      */  
  89.     public static String getMapperColumnByElement(Element resultMapElement, String property){  
  90.         try {  
  91.             if(resultMapElement != null){  
  92.                 @SuppressWarnings("unchecked")  
  93.                 List<Element> properties = resultMapElement.elements();  
  94.                 for (Element prop : properties) {  
  95.                     if(prop != null && prop.attributeValue("property").equals(property)){  
  96.                         return prop.attributeValue("column");  
  97.                     }  
  98.                 }  
  99.             }  
  100.         } catch (Exception e) {  
  101.             e.printStackTrace();  
  102.         }  
  103.         return null;  
  104.     }  
  105.       
  106.       
  107.     public static void main(String[] args) {  
  108.         long startTime = new Date().getTime();  
  109.           
  110.         /*System.out.println(getMapperColumnByProperty("UserMapper.xml","BaseResultMap", "userName")); 
  111.         System.out.println(getMapperColumnByProperty("UserMapper.xml","BaseResultMap", "loginName")); 
  112.         System.out.println(getMapperColumnByProperty("UserMapper.xml","BaseResultMap", "orgName")); 
  113.         System.out.println(getMapperColumnByProperty("UserMapper.xml","BaseResultMap", "sex"));*/  
  114.           
  115.         Element e = getResultMapElement("UserMapper.xml","BaseResultMap");  
  116.         System.out.println(getMapperColumnByElement(e, "userName"));  
  117.         System.out.println(getMapperColumnByElement(e, "loginName"));  
  118.         System.out.println(getMapperColumnByElement(e, "orgName"));  
  119.         System.out.println(getMapperColumnByElement(e, "sex"));  
  120.           
  121.         long endTime = new Date().getTime();  
  122.         System.out.println("所用的时间间隔是:"+ (endTime-startTime));  
  123.           
  124.     }  
  125.       
  126.       
  127. }  

 

 

 

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

蕃薯耀 2016年4月29日 15:44:59 星期五

http://fanshuyao.iteye.com/

上一篇:04_resultMap配置


下一篇:记录一个使用ResultMap使用collection的ofType封装集合映射的坑