深入理解MyBatis(四)—MyBatis的Select操作执行流程

深入理解MyBatis(四)—MyBatis的Select操作执行流程

MyBatis的操作主要分为update类和select类;insert操作,delete操作,update操作都是通过update操作实现;

个人主页:tuzhenyu’s page
原文地址:深入理解MyBatis(四)—MyBatis的Select操作执行流程

Select操作流程

(1) 执行查询操作

  • 获取sqlSession后,调用selectOne()作为select操作的入口
String statement = "mybatis.mapping.userMapper.getUser";
User user = session.selectOne(statement,1);
  • selectOne()执行的逻辑是调用selectList()方法并判断结果list的长度;
@Override
public <T> T selectOne(String statement, Object parameter) {
  // Popular vote was to return null on 0 results and throw exception on too many.
  List<T> list = this.<T>selectList(statement, parameter);
  if (list.size() == 1) {
    return list.get(0);
  } else if (list.size() > 1) {
    throw new TooManyResultsException("Expected one result (or null) to be returned by selectOne(), but found: " + list.size());
  } else {
    return null;
  }
}
  • selectList()操作和update()操作类似,先通过statement字符串从configuration中获取对应的MappedStatement实例,再调用executor的query()方法;
@Override
public <E> List<E> selectList(String statement, Object parameter) {
  return this.selectList(statement, parameter, RowBounds.DEFAULT);
}
@Override
public <E> List<E> selectList(String statement, Object parameter, RowBounds rowBounds) {
  try {
    MappedStatement ms = configuration.getMappedStatement(statement);
    return executor.query(ms, wrapCollection(parameter), rowBounds, Executor.NO_RESULT_HANDLER);
  } catch (Exception e) {
    
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值