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 }
     
  • 相关阅读:
    第五课:数字门构造
    出一道题 : 证明 牛顿迭代法
    网友 水登江河 说
    出现 杨辉三角 的 一些 场合
    泰勒级数 无敌 逼近法
    出一道题 : 证明 ln | sec x + tan x | =
    从 角动量守恒 推导出 椭圆轨道
    三角函数 版 的 霍奇猜想
    傅里叶级数 和 高次多项式函数
    实际上, 物空必能 先生 的 一些 观点 可能 是 正确 的
  • 原文地址:https://www.cnblogs.com/lifuhei/p/10598821.html
Copyright © 2011-2022 走看看