这是basedao。
这是baseservice。
controller里面直接调用baseservice。
保存实体是可以通过的,拿实体的时候需要实体类型,拿不到会报错。
还望高手指教,多谢了
Java中的泛型是擦除发实现的。T在运行期是不存在实际对应的类型的。所以会出错。有两中方法来解决。
一个就是base类中传入实体类的Class
第二个是一个空的AppleDao继承baseDao<Apple>,这种方式。因为泛型类会编译进字节码文件中。你上面拿到的是T,我这里就可以拿到Apples实体类Class
还有dao必须是每个实体类对应一个,不要共享一个实例类,不然线程不安全的
Java中的泛型是擦除发实现的。T在运行期是不存在实际对应的类型的。所以会出错。有两中方法来解决。
一个就是base类中传入实体类的Class
第二个是一个空的AppleDao继承baseDao<Apple>,这种方式。因为泛型类会编译进字节码文件中。你上面拿到的是T,我这里就可以拿到Apples实体类Class
还有dao必须是每个实体类对应一个,不要共享一个实例类,不然线程不安全的
使用泛型
http://git.oschina.net/alexgaoyh/alexgaoyh/blob/master/src/main/java/com/alexgaoyh/common/dao/impl/BaseDaoImpl.java
我也写了个baseservice,不过换了种方式,在baseservice里面有一个虚拟的方法getDao(),baseService里面用类似getDao().save()的方式,然后继承baseservice的时候实现getDao()方法把业务Dao放进去使用泛型
http://git.oschina.net/alexgaoyh/alexgaoyh/blob/master/src/main/java/com/alexgaoyh/common/dao/impl/BaseDaoImpl.java
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。