/**
* @author Clinton Begin
*/
public class SimpleStatementHandler extends BaseStatementHandler {
public SimpleStatementHandler(Executor executor, MappedStatement mappedStatement, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
super(executor, mappedStatement, parameter, rowBounds, resultHandler, boundSql);
}
@Override
public int update(Statement statement) throws SQLException {
//获得sql语句?
String sql = boundSql.getSql();
//获得参数?
Object parameterObject = boundSql.getParameterObject();
KeyGenerator keyGenerator = mappedStatement.getKeyGenerator();
int rows;
//statement执行sql语句返回更新数目
if (keyGenerator instanceof Jdbc3KeyGenerator) {
statement.execute(sql, Statement.RETURN_GENERATED_KEYS);
rows = statement.getUpdateCount();
keyGenerator.processAfter(executor, mappedStatement, statement, parameterObject);
} else if (keyGenerator instanceof SelectKeyGenerator) {
statement.execute(sql);
rows = statement.getUpdateCount();
keyGenerator.processAfter(executor, mappedStatement, statement, parameterObject);
} else {
statement.execute(sql);
rows = statement.getUpdateCount();
}
return rows;
}
@Override
public void batch(Statement statement) throws SQLException {
//批处理
String sql = boundSql.getSql();
statement.addBatch(sql);
}
//ResultHandler resultHandler这个参数好像没用啊
@Override
public <E> List<E> query(Statement statement, ResultHandler resultHandler) throws SQLException {
String sql = boundSql.getSql();
//statement执行sql语句
statement.execute(sql);
return resultSetHandler.<E>handleResultSets(statement);
}
@Override
protected Statement instantiateStatement(Connection connection) throws SQLException {
if (mappedStatement.getResultSetType() != null) {
return connection.createStatement(mappedStatement.getResultSetType().getValue(), ResultSet.CONCUR_READ_ONLY);
} else {
return connection.createStatement();
}
}
@Override
public void parameterize(Statement statement) throws SQLException {
// N/A
}
}
mybatis源码之SimpleStatementHandler
原创归田归田 博主文章分类:Mybatis入门及源码学习 ©著作权
©著作权归作者所有:来自51CTO博客作者归田归田的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
一文带你理解透MyBatis源码
MyBatis几乎成为了Java开发人员必须深入掌握的框架技术,今天,我们就一起来深入分析MyBatis源码。
sql 增删改查 数据库 JDK JVM -
Mybatis源码之Statement处理器SimpleStatementHandler(四)
SimpleStatementHandler就是使用基本的Statement来执行query、batch、update等操参数
mybatis Statement StatementHandler SimpleStatementHandl sql -
myBatis源码之XMLConfigBuilder
/** * @author Clinton Begin */public class XMLConfigBuilder extends BaseBuilder { privder(R
mybatis XMLConfigBuilder xml 子节点 sed -
myBatis源码之Configuration
/** * @author Clinton Begin */ //mybatis配置文件对应的类,包含了配置
mybatis Configuration 数据 java xml -
myBatis源码学习之SqlSessionFactoryBuilder
/* * Builds {@link SqlSession} instances. * *//** * @author Clinton Begin */public class SqlSessi, n
SqlSessionFactoryBui mybatis sql xml 配置文件 -
Mybatis 源码分析之statement
结构执行顺序源码分析:org.apache.ibatis.executor.SimpleExecutor#doQuery参数处理:javabean =》 jdbc 参数
1024程序员节 statement mybaits 源码 sql -
myBatis源码学习之SqlSessionFactory
/** * Creates an {@link SqlSesion} out of a connection or a DataSource * * @author Cli
SqlSessionFactory mybatis sql 不可重复读 缓存 -
myBatis源码学习之SqlSession
/** * @author Clinton Begin */public class DefaultSqlSession implements SqlSession
SqlSession mybatis sql ide 数据 -
java 通用异步记录日志工具类
日志功能本来是一件非常好的事情,能帮助我们分析和解决很多问题。但是,如果让日志影响到性能,这就需要权衡一下了。没关系,本篇博客咱们不仅来解决这个问题,咱们更要眼见为实,带图带真相让你用的明明白白。日志实现异步功能 其实呢就一句话。
java 通用异步记录日志工具类 NLog 日志框架 异步 数据库