mybatis是如何根据映射器(l⽂件)⽣成sql语句?
mybatis是如何根据映射器(l⽂件)⽣成sql语句?
java xml是什么1. 当XMLConfigBuilder解析映射器xml⽂件时,会将每⼀个SQL语句和其配置的内容保存起来。
2. ⼀般⽽⾔,在mybatis中⼀条SQL与它相关的配置信息是由MappedStatement、SqlSource和BoundSql等三个部分组成的。
3. MappedStatement的作⽤是保存⼀个映射器节点(select|insert|delete|update)的内容,它是⼀个类,包括许多我们配置的
SQL、SQL的id、缓存信息、resultMap、parameterType、resultMap、languageDriver等重要配置内容,同时还有⼀个重要的属性sqlSource。mybatis通过读取MappedStatement来获得某条SQL配置的所有信息。
4. SqlSource是提供BoundSql对象的地⽅,它是⼀个接⼝,⽽不是实现类。它的作⽤是根据上下⽂和参数解析⽣成需要的SQL,例
如,动态SQL采取了DynamicSqlSource配合参数进⾏解析后得到的。这个接⼝只定义了⼀个接⼝⽅法
——getBoundSql(parameterObject),使⽤它就可以得到⼀个BoundSql对象。它有⼏个重要的实现类:DynamicSqlSource、
ProviderSqlSource、RawSqlSource和StaticSqlSource。
5. BoundSql是⼀个结果对象,也就是SqlSource通过对SQL和参数的联合解析得到的SQL和参数,它是建⽴SQL和参数的地⽅。它有
三个常⽤的属性:sql、parameterObject、parameterMappings。
parameterObject为参数本⾝,可以传递简单对象、pojo或者map、@Param注解的参数。
parameterMappings是⼀个List,它的每⼀个元素都是ParameterMapping对象。该对象会描述参数,参数包括属性名称、表达式、JavaType、jdbcType、typeHandler等重要信息。
sql属性就是书写在映射器⾥⾯的⼀条被SqlSource解析后的SQL。
注:在开发mybatis插件中,⼀般不需要修改MappedStatement和SqlSource,只需要拿到反映最终的参数和SQL的BoundSql类的对象,从⽽对运⾏过程做出必要的修改,来满⾜特殊的需求。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论