首页 > 编程知识 正文

mybatis连接mysql,mysql介绍

时间:2023-05-06 19:12:56 阅读:16368 作者:2780

mybatis要实现自定义拦截器,必须实现Interceptor接口。 对象首先执行plugin(objecttarget )方法,根据类上的@Intercepts注释确定是否阻止。 如果需要监听,请调用intercept(invocationinvocation )方法。

1 .准备工作

要监听的sql :

需要侦听的映射器对象:

invocation对象:

invocation对象

您可以看到invocation的args参数是@Intercepts的args参数。

2 .映射语句对象

1. invocation对象如何获取映射语句对象:

映射语句对象对应于映射器配置文件中的select/update/insert/delete节点,并主要编写sql语句。

MappedStatement.png

2 .映射语句对象详细信息:

其中真正表示SQL的字段是名为SqlSource的对象。

SqlSource接口很简单,只有一个getBoundsql方法。

sqlSource有许多实现,需要重点关注StaticSqlSource、RawSqlSource和DynamicSqlSource。 上述实现允许您将特定于mybatis的sql格式转换为可以直接在PrepareStatement中运行的sql。

映射语句—— boundsql对象:

上述方法主要是动态标签分析,获取完全可行的sql。 #{ }是否要分析字符并将其替换为? 最后,PrepareStatement将其包装在域表达式中以进行调用。

已解析的sql存储在sql对象中;

请求参数存储在参数对象中;

#{ }key属性及其相应的参数映射(如javaType、jdbcType等)存储在BoundSql的参数映射属性中。 用于最后一个域表达式对象PrepareStatement赋值。

BoundSql .png

BoundSql—已解析的sql对象:

BoundSql对象中的sql对象是动态标签解析后完全可执行的sql。

boundsql -参数对象:

此对象是sql执行的参数。 也就是我们传递的参数。 由于使用了@param注释,因此有两种方法可以获取value的值。

parameterObject.png

注: ParameterObject是一个Object对象,上载不同的参数时,该对象的类型会不同。

上传参数对象时:该参数的类型;

上传多个参数对象时:对于ParamMap对象,您使用了@Param注释,因此可以使用注释中的key,也可以使用param1检索变量。

如果上载了Criteria对象(如下图所示),则也是该对象的类型,但获取对象的方式不同。

Criteria对象. png

注意:如果实际传递的参数是在TypeHandlerRegistry对象中声明的,则实际传递的参数将用作实际变量名称。

也就是说,虽然Mapper界面写为delete(integerid ),但在Mapper.xml中定义的变量#{var}可以自由命名,并由mybatis正确处理。

boundsql -参数映射对象:

如果以#{var}的形式引用变量,则变量在分析Mapper.xml文件中的语句时会显示占位符“? 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。 当相应的语句实际执行时,返回真正的参数。 根据参数映射信息为参数语句设置参数。

Criteria对象的ParameterMapping对象. png

常规对象的ParameterMapping对象. png

请注意,property参数是#{var}的var。

boundsql -附加参数对象

在使用Criteria对象时的sql中,additionalParameters具有值,可以执行以下操作:

Criteria对象的附加参数. png

boundsql -元对象

MetaObject类相当于工具类,Mybatis常用于sql参数化和结果集映射。

MetaObject.png

映射语句3354配置对象

mybatis在启动时读取所有配置文件并将其加载到内存中。 Configuration对象是承载整个配置的类。

配置- typehandlerregistry对象

类型处理器注册对象。 生成TypeHandlerRegistry对象时,将注册类型。

类型处理器TypeHandlerRegistry的简单之处是用于处理javaType和jdbcType之间类型转换的处理器,Mybatis对许多Java类型和数据库类型进行匹配处理。

类型处理器格式:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。