反射结合泛型实现任意对象的创建

一、反射及泛型

反射可以通过Class创建对象,而泛型则可以创建程序模板。

二、Mybatis中的应用

2.1定义mapper

定义一个通用的sql,允许传入表名table,以及查询条件where,返回值List<Map<String,Object>>。

public interface CommonMapper {
   

    @Select("select * from ${table} where ${where}")
    List<Map<String,Object>> GetList(@Param(value="table") String table, @Param(value="where") String where);
}

2.1定义service

我们使用通配符接收Class,然后通过Class.getDeclaredConstructor().newInstance()创建一个新对象,然后使用 BeanUtils.populate()填充对象。其实我们这里也就是相当于实现了Mybatis-plus自带的功能,不建议这样做,因为反射的消耗也挺大的。

 public <E> List<E> GetList(Class<?> resultType, String where) throws Exception {
   
        ArrayList<E> results = new ArrayList<E>();
       
        ConvertUtils.register(new MyConverter(), LocalDateTime.class);
        List<Map<String,Object>>result= commonMapper.GetList(resultType.getSimpleName(),where);
        for(Map<String
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值