Red de conocimientos turísticos - Información de alquiler - Primera introducción al código fuente SQL de Mybatis y cómo ejecutarlo

Primera introducción al código fuente SQL de Mybatis y cómo ejecutarlo

¿Cómo se ejecutan exactamente las declaraciones SQL? Sabemos que Mybatis es en realidad un paquete de JDBC. Supongamos que ejecuto la instrucción

session.update("com.mybatis.dao.AuthUserDao.updateAuthUserEmailByName", test@email.com);

y rastreo el Ejecutor, BaseStatementHandler, etc. . Existe el siguiente código en SimpleExecutor:

public int doUpdate(MappedStatement ms, parámetro de objeto) lanza SQLException {

Declaración stmt = null

try {

p>

Configuración configuración = ms.getConfiguration();

Controlador StatementHandler = configuración.newStatementHandler( this, ms, parámetro, RowBounds.DEFAULT, null, null

);

stmt = prepareStatement(handler, ms.update(stmt);

} finalmente {

closeStatement(stmt);

}

}

1. Primero obtenga información de configuración relevante, que se analiza desde el archivo de configuración durante el proceso de inicialización

2. Cree un nuevo controlador

3. Haga los preparativos antes de ejecutar la declaración.

Vea el contenido de la preparación, rastree el código y finalmente ingrese el método doGetConnection de la clase DataSource. El funcionamiento de este método es el siguiente:

conexión privada doGetConnection (propiedades de propiedades) lanza SQLException {

.

inicializeDriver() ;

Conexión de conexión = DriverManager.getConnection(url, Propiedades propiedades) lanza SQLException {

SQLException {

SQLException {

SQLException {

4.getConnection(url, propiedades);

configureConnection(conexión);

devolver conexión; > }

inicialización vacía sincronizada privada () lanza SQLException {

if (!registeredDrivers.containsKey(driver)) {

Classlt;?

intente {

if (driverClassLoader ! = null) {

driverType = Class.forName(driver, true, driverClassLoader

} else {

driverType = Resources.classForName(driver);

}

// DriverManager requiere que el controlador se cargue a través del ClassLoader del sistema.

// // /~nsayer/Java/dyn-jdbc.html

Controlador driverInstance = (Driver)driverType.newInstance();

DriverManager. RegisterDriver(new DriverProxy(driverInstance));

registradoDrivers.put(driver, driverInstance);

} catch (Exception e) {

throw new SQLException( "Error al configurar el controlador en UnpooledDataSource. Causa: "

}

}

}

Originalmente, pasamos prepareStatement. class.forName DriverManager.getConnection.getConnection inicializa jdbc. Estos dos pasos se completan aquí.

4. Ejecute la parte sql del controlador.

Continúe rastreando el controlador, puede verlo en SimpleStatementHandler. El proceso de ejecución de la declaración de actualización es el siguiente

public int update(Declaración de declaración)

throws SQLException {

String sql =boundSql.getSql();

Objeto parámetroObject =boundSql.getParameterObject();

KeyGenerator keyGenerator =mappedStatement.getKeyGenerator();