mybatis plugin 开发

@Intercepts({  @Signature(type = StatementHandler.class,  method = "prepare",  args = {Connection.class})}) 
    public class PagingInterceptor implements Interceptor {    ...... }  
    type告诉要拦截什么对象,它可以是四大对象的一个。

     method告诉你要拦截什么方法。

     args告诉方法的参数是什么。
以上会出现错误  参造 博客 

MyBatis 3.4.0 之后,StatementHandler的prepare方法做了修改,如下:
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class,Integer.class }) })  
添加了 integer
3、实现拦截器:

在实现前我们需要熟悉一个mybatis中常用的类的使用。它便是:MetaObject

它的作用是可以帮助我们取到一些属性和设置属性(包括私有的)。它有三个方法:

MetaObject forObject(Object object,ObjectFactory objectFactory, ObjectWrapperFactory objectWrapperFactory)

这个方法我们基本不用了,因为MyBATIS中可以用SystemMetaObject.forObject(Object obj)代替它。

Object getValue(String name)

void setValue(String name, Object value)

第一个方法是绑定对象,第二个方法是根据路径获取值,第三个方法是获取值。

这些说还是有点抽象,我们举个例子,比如说现在我有个学生对象(student),它下面有个属性学生证(selfcard),学生证也有个属性发证日期(date)。

但是发证日期是一个私有的属性且没有提供公共方法访问。我们现在需要访问它,那么我们就可以使用MetaObject将其绑定:

MetaObject metaStudent = SystemMetaObject.forObject(student);

这样便可以读取它的属性:

Date date =(Date) metaStudent.getValue("selfcard.date");

或者设置它的属性:

metaStudent.setValue("selfcard.date", new Date());

这只是一个工具类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值