zoukankan      html  css  js  c++  java
  • mybatis表名反射实体

     1 package com.eshore.wbtimer.executor.service.impl;
     2 
     3 import com.baomidou.mybatisplus.mapper.EntityWrapper;
     4 import com.baomidou.mybatisplus.mapper.SqlHelper;
     5 import com.eshore.wbtimer.executor.service.CommonService;
     6 import com.eshore.wbtimer.executor.util.field.SpringContextUtil;
     7 import org.springframework.stereotype.Service;
     8 import org.springframework.util.ReflectionUtils;
     9 
    10 import java.lang.reflect.Method;
    11 
    12 /**
    13  * 此方法利用动态代理和反射实现通用插入,根据bean类获取相应mapper接口,利用代理注入mapper,再反射调用响应方法
    14  */
    15 @Service
    16 public class CommonServiceImpl implements CommonService {
    17 
    18     @Override
    19     public boolean commonMapperSave(Class<?> bean, Object dataBean) {
    20         String mapperPath = SqlHelper.table(bean).getCurrentNamespace();
    21         Class<?> dataMapperClass = null;
    22         try {
    23             dataMapperClass = Class.forName(mapperPath);
    24         } catch (ClassNotFoundException e) {
    25             e.printStackTrace();
    26             return false;
    27         }
    28         try {
    29             Object mapperServiceBean = SpringContextUtil.getBean(dataMapperClass);
    30             Method mapperServiceBeanMethod = ReflectionUtils.findMethod(mapperServiceBean.getClass(), "insert", Object.class);
    31             // 执行方法
    32             ReflectionUtils.invokeMethod(mapperServiceBeanMethod, mapperServiceBean, dataBean);
    33             return true;
    34         } catch (Exception e) {
    35             e.printStackTrace();
    36         }
    37         return false;
    38     }
    39 
    40     @Override
    41     public boolean commonMapperSelect(String className) {
    42         String mapperPath = "com.eshore.wbtimer.executor.mapper.bean."+className;
    43         Class<?> dataMapperClass = null;
    44         try {
    45             dataMapperClass = Class.forName(mapperPath);
    46         } catch (ClassNotFoundException e) {
    47             e.printStackTrace();
    48             return false;
    49         }
    50         String dataPath = SqlHelper.table(dataMapperClass).getCurrentNamespace();
    51         Class<?> mapperClass = null;
    52         try {
    53             mapperClass = Class.forName(dataPath);
    54         } catch (ClassNotFoundException e) {
    55             e.printStackTrace();
    56         }
    57         try {
    58             Object mapperServiceBean = SpringContextUtil.getBean(mapperClass);
    59             EntityWrapper ew = new EntityWrapper();
    60             ew.setEntity(mapperServiceBean);
    61             ew.where("UPLOAD_TIMESTAMP < DATA_TIMESTAMP").or("UPLOAD_TIMESTAMP is  null");
    62             if(className.startsWith("SJ")) {
    63                 ew.where(" and CITY='SYGNGD' ");
    64             }
    65             Method mapperServiceBeanMethod = ReflectionUtils.findMethod(mapperServiceBean.getClass(), "select", EntityWrapper.class);
    66             // 执行方法
    67             Object obj = ReflectionUtils.invokeMethod(mapperServiceBeanMethod, mapperServiceBean, ew);
    68             return true;
    69         } catch (Exception e) {
    70             e.printStackTrace();
    71         }
    72         return false;
    73     }
    74 }

    接口CommonService;

     1 package com.eshore.wbtimer.executor.service;
     2 
     3 /**
     4  * @author 
     5  * @Description:
     6  * @date 2019/3/21 14:48
     7  */
     8 public interface CommonService {
     9     public boolean commonMapperSave(Class<?> bean, Object dataBean);
    10 
    11     public boolean commonMapperSelect(String className);
    12 }
     
  • 相关阅读:
    [NOIp2009] $Hankson$ 的趣味题
    [洛谷P1730] 最小密度路径
    [NOIp2015] 运输计划
    [NOIp2012] 借教室
    [NOIp2012] 国王游戏
    [NOIp2016] 蚯蚓
    [洛谷P1272] 重建道路
    [洛谷P1273] 有线电视网
    [ZJOI2010] 数字计数
    ☆ [HDU2089] 不要62「数位DP」
  • 原文地址:https://www.cnblogs.com/lifuhei/p/10598821.html
Copyright © 2011-2022 走看看