mybatis表名反射实体
package com.eshore.wbtimer.executor.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.SqlHelper;
import com.eshore.wbtimer.executor.service.CommonService;
import com.eshore.wbtimer.executor.util.field.SpringContextUtil;
import org.springframework.stereotype.Service;
import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; /**
* 此方法利用动态代理和反射实现通用插入,根据bean类获取相应mapper接口,利用代理注入mapper,再反射调用响应方法
*/
@Service
public class CommonServiceImpl implements CommonService { @Override
public boolean commonMapperSave(Class<?> bean, Object dataBean) {
String mapperPath = SqlHelper.table(bean).getCurrentNamespace();
Class<?> dataMapperClass = null;
try {
dataMapperClass = Class.forName(mapperPath);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
}
try {
Object mapperServiceBean = SpringContextUtil.getBean(dataMapperClass);
Method mapperServiceBeanMethod = ReflectionUtils.findMethod(mapperServiceBean.getClass(), "insert", Object.class);
// 执行方法
ReflectionUtils.invokeMethod(mapperServiceBeanMethod, mapperServiceBean, dataBean);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
} @Override
public boolean commonMapperSelect(String className) {
String mapperPath = "com.eshore.wbtimer.executor.mapper.bean."+className;
Class<?> dataMapperClass = null;
try {
dataMapperClass = Class.forName(mapperPath);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
}
String dataPath = SqlHelper.table(dataMapperClass).getCurrentNamespace();
Class<?> mapperClass = null;
try {
mapperClass = Class.forName(dataPath);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Object mapperServiceBean = SpringContextUtil.getBean(mapperClass);
EntityWrapper ew = new EntityWrapper();
ew.setEntity(mapperServiceBean);
ew.where("UPLOAD_TIMESTAMP < DATA_TIMESTAMP").or("UPLOAD_TIMESTAMP is null");
if(className.startsWith("SJ")) {
ew.where(" and CITY='SYGNGD' ");
}
Method mapperServiceBeanMethod = ReflectionUtils.findMethod(mapperServiceBean.getClass(), "select", EntityWrapper.class);
// 执行方法
Object obj = ReflectionUtils.invokeMethod(mapperServiceBeanMethod, mapperServiceBean, ew);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
接口CommonService;
package com.eshore.wbtimer.executor.service; /**
* @author
* @Description:
* @date 2019/3/21 14:48
*/
public interface CommonService {
public boolean commonMapperSave(Class<?> bean, Object dataBean); public boolean commonMapperSelect(String className);
}
mybatis表名反射实体的更多相关文章
- JPA设置表名和实体名,表字段与实体字段的对应
转自:https://blog.csdn.net/LQW_java_home/article/details/53079363 首先 你的jpaProperties配置项中要有 <prop ke ...
- Mybatis 表名是变量时
写语句时这样就可以了 <select id="selectTotal" resultType="java.util.Map" parameterType= ...
- MVC4数据访问EF查询linq语句的时候报错找不到表名问题
一天做项目的时候遇到这样的问题,MVC4用EF访问数据查询用linq语句的时候报错找不到表名:报错如下图: 研究了几种情况,最后还是没有找到正真的问题所在,不过可能是和路由解析问题有关,暂时还没有进行 ...
- 由数据库表生成jpa实体工具
package cn.net.yto.aaa.dao.generator; /** * 由数据库表生成jpa实体工具 * * @author huike * Created by gf.liu on ...
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013307.html 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这 ...
- mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题
导包.... 实体类中的属性,getter,setter,tostring,构造等方法就不写了 private int id; private String orderNo; private floa ...
- MyBatis入门学习教程-解决字段名与实体类属性名不相同的冲突
在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TAB ...
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TAB ...
- MyBatis——解决字段名与实体类属性名不相同的冲突
原文:http://www.cnblogs.com/xdp-gacl/p/4264425.html 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况 ...
随机推荐
- HSL颜色处理
H--色调 S--饱和度 L--亮度 HSB(HSL) 色调饱和度亮度模式 以另外一种不同的理念进行色彩的调配 H色调 0~360 圆环形式 以角度表示 S 饱和度 0~1 之间的小数 L 亮度 0~ ...
- react技术栈实践(2)
本文来自网易云社区 作者:汪洋 这时候还没完,又有两个问题引出来了. 按照上面的配置,第三方库 antd 竟然也被编译了,导致样式失败. react中,一旦包裹了子组件,子组件没办法直接使用 styl ...
- 静态代码扫描工具使用教程 - SonarQube+SonarScanner
预置条件: Jdk已安装 Mysql已安装 1. 下载 SonarQube和Sonar scanner. SonarQube: http://www.sonarqube.org/downloads/ ...
- J2ee项目 编译依赖顺序
这儿有个帖子, 最后一个回复是: “我把我项目的libraries的"Order and Export"中的JRE与J2EE顺序换了一个问题解决”. 帖子地址: http://b ...
- “玲珑杯”ACM比赛 Round #23
A -- 生是脂肪的人 Time Limit:2s Memory Limit:128MByte Submissions:263Solved:97 DESCRIPTION 给定一个整数n,输出[(10^ ...
- Phpstrom 书签应用
F11增加书签 书签 Ctrl + F11切换书签助记符 Ctrl +#[0-9]转到编号书签 Shift + F11显示书签
- Luogu【P1880】石子合并(环形DP)
先放上luogu的石子合并题目链接 这是一道环形DP题,思想和能量项链很像,在预处理过程中的手法跟乘积最大相像. 用一个m[][]数组来存储石子数量,m[i][j]表示从第 i 堆石子到第 j 堆石子 ...
- 洛谷P4175 - [CTSC2008]网络管理
Portal Description 给出一棵\(n(n\leq8\times10^4)\)个点的带点权的树,进行\(m(m\leq8\times10^4)\)次操作,操作有两种: 修改一个点的点权. ...
- 刷题总结——生日礼物(bzoj1293单调队列)
题目: Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠, ...
- 算法复习——树形dp
树形dp的状态转移分为两种,一种为从子节点到父节点,一种为父节点到子节点,下面主要讨论子节点到父亲节点的情况: 例题1(战略游戏): 这是一道典型的由子节点状态转移到父节点的问题,而且兄弟节点之间没有 ...