这是 PHP 的项目需要把数据库数据同步到 java 后台, 已经使用队列实现完成。
这里有一个 Equipment 表已经使用反射方便的实现了添加和修改事件。
还有大约十几个表需要实现相同的功能, 他们唯一的不同只是 mybatis plus 的 具体表的 service, 以及具体的表类对象。
我想使用更加动态化的技术实现, 避免写一大堆这样的文件, 但是不知道如何做, 特别是知道了表类对象的 class 以后我可以使用 getClass.newInsetance()去生成新对象, 但是=号左边如何写?如: 什么什么 = Class.forName(className).newInsetance()
以及使用 spring getbean 获取 service 之后, 怎么写 seve 和 updateById 方法, 求 java 大佬赐教,
1
Kimen 2021-09-02 22:59:48 +08:00
写一个父类,让所有表的 service 实现类都去继承,然后用这个类去承接你反射出来的对象
|
2
Kimen 2021-09-02 23:05:02 +08:00
额,看错了,给所有表对象都继承一个 BaseEntity,然后左边就写 BaseEntity,Java 中的多态……
|
3
beidounanxizi 2021-09-02 23:14:34 +08:00
写 Go 吧,写 JAVA 让你这么痛苦,反射来反射区好玩么?
|
4
ccppgo OP @Kimen 下午的时候跟组长一起研究怎么写好(我们 2 个 PHP 程序员)你说的这个已经试过了不行,报 equipment 不能转 entity,我们 equipment 有继承自 entity 的
|
5
ccppgo OP @beidounanxizi 写 go 小城市没饭吃
|
6
chendy 2021-09-02 23:23:02 +08:00
玩不好泛型反射的话,就写点模板文件生成代码吧
|
7
Kimen 2021-09-02 23:26:55 +08:00
|
8
mmdsun 2021-09-03 01:02:48 +08:00 via Android
=号左边写父类,接口,或者 object 。然后直接反射再调 save 方法就行。
|
9
SummerSec 2021-09-03 09:23:09 +08:00 via Android
多用反序列化和序列化,自己重新写反序列化和序列化方法。
|
10
Macolor21 2021-09-03 09:57:36 +08:00
泛型不是这样写?
public class EquimentService<T> { public void save(T obj){ // ..... } } 写 BaseEntity 然后子类赋值给父类, 这不是多态吗?我学错了?还是上面的人没学好 |
11
ccppgo OP @Kimen
@mmdsun [![hyZLp6.png]( https://z3.ax1x.com/2021/09/03/hyZLp6.png)]( https://imgtu.com/i/hyZLp6) [![hyel90.png]( https://z3.ax1x.com/2021/09/03/hyel90.png)]( https://imgtu.com/i/hyel90) 找到方法了, 好像直接写不行, 得完全反射 |
12
Suaxi 2021-09-03 10:34:06 +08:00
private BaseMapper getBaseMapper(Class clazz) {
return (BaseMapper) SpringContextUtil.getBean(clazz.getSimpleName().substring(0, 1).toLowerCase() + clazz.getSimpleName().substring(1) + "Dao"); } clazz 动态传就可以了 |