最新版本mybatis中delegate已经改名为_flddelegate了 为什么还要使用delegate

来源:2-4 接口式编程原理(下)

Henizyang

2017-02-28 18:52

我打开RoutingStatementHandler发现

private final StatementHandler _flddelegate;

所以我在老师用delegate的地方都使用的是_flddelegate 但是却报错 如果用delegate就不报错 

不太理解 请大神指点

写回答 关注

2回答

  • Henizyang
    2017-03-02 22:12:51

    package org.apache.ibatis.executor.statement;


    import java.sql.*;

    import java.util.List;

    import org.apache.ibatis.cursor.Cursor;

    import org.apache.ibatis.executor.Executor;

    import org.apache.ibatis.executor.ExecutorException;

    import org.apache.ibatis.executor.parameter.ParameterHandler;

    import org.apache.ibatis.mapping.*;

    import org.apache.ibatis.session.ResultHandler;

    import org.apache.ibatis.session.RowBounds;


    // Referenced classes of package org.apache.ibatis.executor.statement:

    //            StatementHandler, SimpleStatementHandler, PreparedStatementHandler, CallableStatementHandler


    public class RoutingStatementHandler

        implements StatementHandler

    {


        public RoutingStatementHandler(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql)

        {

            static class _cls1

            {


                static final int $SwitchMap$org$apache$ibatis$mapping$StatementType[];


                static 

                {

                    $SwitchMap$org$apache$ibatis$mapping$StatementType = new int[StatementType.values().length];

                    try

                    {

                        $SwitchMap$org$apache$ibatis$mapping$StatementType[StatementType.STATEMENT.ordinal()] = 1;

                    }

                    catch(NoSuchFieldError nosuchfielderror) { }

                    try

                    {

                        $SwitchMap$org$apache$ibatis$mapping$StatementType[StatementType.PREPARED.ordinal()] = 2;

                    }

                    catch(NoSuchFieldError nosuchfielderror1) { }

                    try

                    {

                        $SwitchMap$org$apache$ibatis$mapping$StatementType[StatementType.CALLABLE.ordinal()] = 3;

                    }

                    catch(NoSuchFieldError nosuchfielderror2) { }

                }

            }


            switch(_cls1..SwitchMap.org.apache.ibatis.mapping.StatementType[ms.getStatementType().ordinal()])

            {

            case 1: // '\001'

                _flddelegate = new SimpleStatementHandler(executor, ms, parameter, rowBounds, resultHandler, boundSql);

                break;


            case 2: // '\002'

                _flddelegate = new PreparedStatementHandler(executor, ms, parameter, rowBounds, resultHandler, boundSql);

                break;


            case 3: // '\003'

                _flddelegate = new CallableStatementHandler(executor, ms, parameter, rowBounds, resultHandler, boundSql);

                break;


            default:

                throw new ExecutorException((new StringBuilder()).append("Unknown statement type: ").append(ms.getStatementType()).toString());

            }

        }


        public Statement prepare(Connection connection, Integer transactionTimeout)

            throws SQLException

        {

            return _flddelegate.prepare(connection, transactionTimeout);

        }


        public void parameterize(Statement statement)

            throws SQLException

        {

            _flddelegate.parameterize(statement);

        }


        public void batch(Statement statement)

            throws SQLException

        {

            _flddelegate.batch(statement);

        }


        public int update(Statement statement)

            throws SQLException

        {

            return _flddelegate.update(statement);

        }


        public List query(Statement statement, ResultHandler resultHandler)

            throws SQLException

        {

            return _flddelegate.query(statement, resultHandler);

        }


        public Cursor queryCursor(Statement statement)

            throws SQLException

        {

            return _flddelegate.queryCursor(statement);

        }


        public BoundSql getBoundSql()

        {

            return _flddelegate.getBoundSql();

        }


        public ParameterHandler getParameterHandler()

        {

            return _flddelegate.getParameterHandler();

        }


        private final StatementHandler _flddelegate;

    }

    而且名字在最后了

  • youmendongsun
    2017-03-01 18:58:58

    我练习时使用的是3.4.1,该版本中还是delegate,不知道你说的新版是哪个版本?

    public class RoutingStatementHandler implements StatementHandler {

      private final StatementHandler delegate;


    Henizy...

    我用的3.4.2 但的确他改名了啊= =

    2017-03-02 21:58:26

    共 1 条回复 >

通过自动回复机器人学Mybatis---加强版

进一步探索 Mybatis 的奥秘,一起揭开 Mybatis 面纱

53665 学习 · 112 问题

查看课程

相似问题