当前位置: 首页 > wzjs >正文

wordpress主题xiuseo免费优化软件

wordpress主题xiu,seo免费优化软件,门户网站建设公司市场,深圳做网站推广优化13.Mybatis是如何进行分页的? 1.直接在Select语句中增加数据库提供的分页关键字,然后在应用程序中传递当前页和每页展示页数 2.Mybatis中提供的RowBounds对象,实现内存级别分页 3.基于Mybatis里面的Interceptor拦截器,在Select语…

13.Mybatis是如何进行分页的?

1.直接在Select语句中增加数据库提供的分页关键字,然后在应用程序中传递当前页和每页展示页数

2.Mybatis中提供的RowBounds对象,实现内存级别分页

3.基于Mybatis里面的Interceptor拦截器,在Select语句执行之前动态拼接关键字

14Mybatis里的 # 和 $ 的区别?

Mybatis 在处理 #{} 时,会创建预编译的 SQL 语句,将 SQL 中的 #{} 替换为 ? 号,在执行 SQL 时会为预编译 SQL 中的占位符(?)赋值,调用 PreparedStatement 的 set 方法来赋值,预编译的 SQL 语句执行效率高,并且可以防止SQL 注入,提供更高的安全性,适合传递参数值。

Mybatis 在处理 ${} 时,只是创建普通的 SQL 语句,然后在执行 SQL 语句时 MyBatis 将参数直接拼入到 SQL 里,不能防止 SQL 注入,因为参数直接拼接到 SQL 语句中,如果参数未经过验证、过滤,可能会导致安全问题。

15.@Transactional注解底层原理

@Transactional注解是Spring框架中用于声明式事务管理的核心组件之一,它通过AOP(面向切面编程)机制实现对方法或类的事务管理。以下是@Transactional注解的底层原理及其工作机制的详细解析:


1. 声明式事务管理概述

Spring提供了两种事务管理方式:

  • 编程式事务管理:通过手动编写代码来控制事务的开启、提交和回滚。
  • 声明式事务管理:通过配置或注解的方式,将事务管理与业务逻辑分离,开发者只需关注业务逻辑。
    @Transactional注解属于声明式事务管理的一种,它允许开发者通过简单的注解声明一个方法或类需要事务支持,而不需要显式地编写事务管理代码。

2. @Transactional注解的工作流程

当一个方法被标注为@Transactional时,Spring会根据注解的配置动态生成代理对象,并在代理对象中插入事务管理逻辑。以下是其工作流程:

(1) 代理对象的创建
  • Spring容器在启动时会扫描所有标注了@Transactional的方法或类。
  • 对于这些方法或类,Spring会为其创建代理对象(可以是JDK动态代理或CGLIB代理)。
    • 如果目标类实现了接口,则使用JDK动态代理。
    • 如果目标类没有实现接口,则使用CGLIB代理。
      代理对象的作用是拦截对目标方法的调用,并在方法执行前后插入事务管理逻辑。
(2) 事务拦截器的执行
  • 当调用标注了@Transactional的方法时,实际上是调用了代理对象的方法。
  • 代理对象会将调用转发给TransactionInterceptor(事务拦截器),TransactionInterceptor负责事务的开启、提交和回滚。
  • 具体步骤如下:
    1. 开启事务:在方法执行前,TransactionInterceptor会根据事务配置从PlatformTransactionManager中获取一个事务对象,并开启一个新的事务或加入现有事务。
    2. 执行目标方法:调用实际的目标方法。
    3. 提交或回滚事务
      • 如果目标方法正常执行完成(未抛出异常),则提交事务。
      • 如果目标方法抛出了未被捕获的异常,则根据配置决定是否回滚事务。
(3) 事务管理器的协作
  • PlatformTransactionManager是Spring事务管理的核心接口,它定义了事务的基本操作(如getTransactioncommitrollback)。
  • 常见的实现类包括:
    • DataSourceTransactionManager:用于基于JDBC的事务管理。
    • HibernateTransactionManager:用于基于Hibernate的事务管理。
    • JpaTransactionManager:用于基于JPA的事务管理。
  • 事务管理器会根据具体的持久化技术与数据库交互,确保事务的一致性。


3. 总结

@Transactional注解的底层原理可以概括为以下几点:

  1. 代理机制:通过动态代理(JDK动态代理或CGLIB代理)实现对目标方法的拦截。
  2. 事务拦截器:由TransactionInterceptor负责事务的开启、提交和回滚。
  3. 事务管理器:由PlatformTransactionManager负责具体的事务操作。
  4. 声明式配置:通过注解的方式简化事务管理,减少侵入性代码。
    通过以上机制,Spring实现了对事务的透明化管理,使开发者能够专注于业务逻辑,而无需关心事务的具体实现细节。
http://www.dtcms.com/wzjs/489082.html

相关文章:

  • 网站在线支付接口十大最靠谱教育培训机构
  • 58同城一样的网站怎样建设杭州seo中心
  • 软件开发前端和后端站长工具seo综合查询问题
  • 手机做的兼职网站设计青岛seo优化
  • 住房城乡建设局是干什么的长春关键词优化报价
  • 网站漂浮物怎么做推广平台怎么找客源
  • 六安企业网站建设靠谱产品seo怎么优化
  • 呼和浩特网站建设小程序今日热点新闻事件摘抄2022
  • cloudflare做侵权网站长春做网站推荐选吉网传媒好
  • 网站开发的主要方法网站批量查询工具
  • 学计算机去哪个职业学校上海关键词优化排名哪家好
  • 做个网站怎么做西安seo排名扣费
  • 我们公司想做个网站我想做百度推广
  • 品牌网站建设服务流量主广告点击自助平台
  • 电子商务o2o是什么意思湖南seo技术培训
  • 数字展厅网站建设临沂seo顾问
  • 临沂网站制作案例百度广告推广怎么收费
  • 国土资源和建设部网站国外seo大神
  • 泾阳县住房和城乡建设局网站百度推广时间段在哪里设置
  • 百度指数网站产品如何推广市场
  • 免费视频素材网站都有哪些手机百度2020
  • phpcms对比wordpress泉州seo托管
  • 白云区江夏附近做网站网络营销企业网站
  • 重庆做seo排名软件
  • 无锡市网站设计怎么让百度收录
  • 扬州有什么做网站的公司站长工具服务器查询
  • 海南网站设计百度竞价开户流程
  • 两学一做 知识竞赛网站怎样在百度上发布自己的信息
  • 苏州建筑公司有哪些中国网络优化公司排名
  • 时时彩网站代理怎么做?全网搜索指数