博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis核心类-MappedStatement
阅读量:119 次
发布时间:2019-02-26

本文共 1940 字,大约阅读时间需要 6 分钟。

公司系统集成了mybatisplus,其中给封装好了很多方法,很多人包括我平常只知道怎么去使用却很少关注其实现原理,今天闲着没事(偷偷摸鱼)的时候点开了mybatisplus的源码,找到了其中的一个方法。

在这里插入图片描述
可以看到我们这个selectById的方法拓展了AbstractMethod抽象类返回了一个MappedStatement类型的对象,今天我们就来了解一下这个MappedStatement是个什么玩意儿:

  1. MappedStatement是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等,它位于mybatis包的org.apache.ibatis.mapping目录下,是一个final类型也就是说实例化之后就不允许改变
  2. mapper.xml文件中一个select\insert\update\delete标签对应一个MappedStatement对象, select\insert\update\delete标签的id即是MappedStatement的id
  3. Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
  4. Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程.
    MappedStatement源码定义如下
private String resource;//mapper配置文件名,如:UserMapper.xml  private Configuration configuration;//全局配置  private String id;//节点的id属性加命名空间,如:com.lucky.mybatis.dao.UserMapper.selectByExample  private Integer fetchSize;  private Integer timeout;//超时时间  private StatementType statementType;//操作SQL的对象的类型  private ResultSetType resultSetType;//结果类型  private SqlSource sqlSource;//sql语句  private Cache cache;//缓存  private ParameterMap parameterMap;  private List
resultMaps; private boolean flushCacheRequired; private boolean useCache;//是否使用缓存,默认为true private boolean resultOrdered;//结果是否排序 private SqlCommandType sqlCommandType;//sql语句的类型,如select、update、delete、insert private KeyGenerator keyGenerator; private String[] keyProperties; private String[] keyColumns; private boolean hasNestedResultMaps; private String databaseId;//数据库ID private Log statementLog; private LanguageDriver lang; private String[] resultSets;

其中StatementType指操作SQL对象的类型,是个枚举类型,值分别为:

STATEMENT(直接操作SQL,不进行预编译),

PREPARED(预处理参数,进行预编译,获取数据),

CALLABLE(执行存储过程)

ResultSetType指返回结果集的类型,也是个枚举类型,值分别为:

FORWARD_ONLY:结果集的游标只能向下滚动

SCROLL_INSENSITIVE:结果集的游标可以上下移动,当数据库变化时当前结果集不变

SCROLL_SENSITIVE:结果集客自由滚动,数据库变化时当前结果集同步改变;

转载地址:http://xbju.baihongyu.com/

你可能感兴趣的文章