分享

mybatis代理

 修行的嘟嘟 2023-08-28 发布于河南

package mybatis.ext;

import org.springframework.stereotype.Indexed;

import java.lang.annotation.*;

@Target({ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Indexed

//定义注解方法

public @interface  myInsert {

    String value();

}


package mybatis;

import mybatis.ext.myInsert;

import org.springframework.stereotype.Component;

@Component

public interface UserMapper {

    @myInsert("insert into mysqltest(name,age) values('test',20)")

   int addUser();

}


package mybatis;

import mybatis.ext.myInsert;

import utils.JdbcUtils;

import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

import java.sql.Connection;

import java.sql.PreparedStatement;

//mybatis代理

public class mybatisInvocationHandler implements InvocationHandler {

    private Class myClass;

    public mybatisInvocationHandler(Class myClass){

        this.myClass=myClass;

    }

    @Override

    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        myInsert insert=method.getDeclaredAnnotation(myInsert.class);

        String insertSql=insert.value();

        Connection connection= JdbcUtils.getConnection();

        PreparedStatement preparedStatement = connection.prepareStatement(insertSql);

        preparedStatement.execute();

        return "ok";

    }

    public <T> T getProxy(){

        return (T) Proxy.newProxyInstance(myClass.getClassLoader(),

               new Class[]{myClass},this);

    }

}


package mybatis;

public class mybatisProxy {

    public static UserMapper getMapper(Class mapperClass) {

        return new mybatisInvocationHandler(mapperClass).getProxy();

    }

    public static void main(String[] args) {

        UserMapper userMapper = mybatisProxy.getMapper(UserMapper.class);

        userMapper.addUser();

    }

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多