前言
工作中遇到一个问题,通过mybatis自动生成的代码,mybatisgenerator会生成entity,我需要获取entity的字段,虽然entity文件已经生成在磁盘中了,但是我通过反射怎么都获取不到,会报classnotfoundexception
我能力有限,想不出什么解决办法,之后我去问==ChatGPT==,它给了我一个相当准确的提示:javacompiler,然后我顺着这个思路终于找到了解决办法。
文档地址:
https://www.liaoxuefeng.com/article/1080190250181920
文章写得非常清除,语言也有意思,只是不懂思路也不太好搜到。
文章源码:
链接:https://pan.baidu.com/s/1VY8zLm8G3ZXAkJlUD0Jz0w?pwd=wh5m
提取码:wh5m
使用方法:
//JAVA_SOURCE_CODE就是把生成的java文件读取成String
//例如:FileUtils.readFileToString(new File("filepath"))
JavaStringCompiler compiler = new JavaStringCompiler();
Map<String, byte[]> results = compiler.compile("UserProxy.java", JAVA_SOURCE_CODE);
Class<?> clazz = compiler.loadClass("UserProxy.java", results);
//反射可以获取到对象后就自由发挥了
今天通过人工智能找到问题解决思路,在通过这个思路找到大神的文章解决问题,感触颇深,这个文章做个纪念。