Primera introducción al código fuente SQL de Mybatis y cómo ejecutarlo
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 { p>
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();