一般而言,一个映射器是由3个部分组成:
#MappedStatement,它保存映射器的一个节点(select|insert|delete|update)。
并且包括许多我们配置的sql,sql的id、缓存信息,resultMap,parameterType、resultType、
languageDriver等重要的配置内容。
#SqlSource,它是提供BoundSql对象的地方,它是MappedStatement的一个属性。
它的主要作用是根据参数和其他规则组装sql。
#BoundSql,它是建立SQL和参数的地方,他有3个常用的属性:SQL、parameterObject、
parameterMappings。
parameterObject是参数,可以是简单对象,pojo、map或者@param注解的参数。
parameterMappings,它是一个list,每一个元素都是parameterMapping对象,这个对象会描述包括
属性、名称、表达式、javaType、jdbcType、typeHandler等重要信息。
sql属性就是我们书写再映射器里面的一条sql。
SqlSession下四大对象:
#Executor代表执行器,由它来调度StatementHandler、ParameterHandler、ResultHandler等来执行对应的SQL。
#StatementHandler的作用是使用数据库的Statement(PrepareStatement)执行操作,它是四大对象的核心。
#ParameterHandler用于sql对参数的处理。
#ResultHandler是进行最后数据集(ResultSet)的封装返回处理的。
SqlSession是通过Executor创建StatementHandler来运行的,而StatementHanlder要经过下面三步:
1):prepared与编译sql
2):parameterize设置参数
3):query/update执行sql。