mybatis浅析

 SqlSession是Mybatis最重要的构建之一,提供select/insert/update/delete方法,SqlSession的运行主要是依靠Executor执行器调用(调度)StatementHandler、parameterHanlder、ResultSetHandler,Executor首先通过创建StamentHandler执行预编译并设置参数运行。SqlSession重要的四个对象

  • Execute:调度执行StatementHandler、ParmmeterHandler、ResultHandler执行相应的SQL语句;
  • StatementHandler:使用数据库中Statement(PrepareStatement)执行操作,即底层是封装好了的prepareStatement;
  • ParammeterHandler:处理SQL参数;
  • ResultHandler:结果集ResultSet封装处理返回。

BoundSql 表示动态生成的SQL语句以及相应的参数信息。SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回。
Configuration 对象保存了所有mybatis的配置信息,主要包括:mybatis基础配置文件、 mapper.xml映射器配置文件

缓存机制

mybatis一级缓存是本地缓存,默认开启,sqlsession会话级别,Executor对象中持有一个Cache对象。二级缓存是应用级缓存,默认不开启,如果用户配置了"cacheEnabled=true",那么MyBatis在为SqlSession对象创建Executor对象时,会对Executor对象加上一个装饰者:CachingExecutor,这时SqlSession使用CachingExecutor对象来完成操作请求。MyBatis的二级缓存设计得比较灵活,可以使用MyBatis自己定义的二级缓存实现;可以通过实现org.apache.ibatis.cache.Cache接口自定义缓存;也可以使用第三方内存缓存库,如Memcached等

执行代码示例:

1、我们使用Mapper进行数据库操作时,调用MapperProxy的invoke()方法,首先判断该接口方法是否有实现类,有则调用,否则执行MapperMethod的execute()方法。

BoundSql表示动态生成的SQL语句以及相应的参数信息,mybatis使用了组合模式实现动态sql的拼接。

此时获得数据库连接

参考:

https://www.cnblogs.com/jian0110/p/9452592.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值