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

网站建设方案汇报哪些网站推广不收费

网站建设方案汇报,哪些网站推广不收费,网站每天做多少外链合适,我做网站了圆通Mybatis 是一个流行的 Java 持久层框架#xff0c;它提供了一种半自动的 SQL 映射方式#xff0c;允许开发者在 Java 代码中以一种更加直观和灵活的方式来操作数据库。当你使用 Mybatis 调用 DAO 接口时#xff0c;背后的工作流程大致如下#xff1a; 接口定义#xff1a;…Mybatis 是一个流行的 Java 持久层框架它提供了一种半自动的 SQL 映射方式允许开发者在 Java 代码中以一种更加直观和灵活的方式来操作数据库。当你使用 Mybatis 调用 DAO 接口时背后的工作流程大致如下 接口定义首先你需要定义一个 DAO 接口这个接口中会包含一些方法这些方法对应于你想要执行的数据库操作。 Mapper XML对于 DAO 接口中的每一个方法你需要在 Mybatis 的映射文件通常是一个 XML 文件中定义一个 mapper 标签里面包含一个 select、insert、update 或 delete 标签对应于你想要执行的 SQL 语句。 配置文件在 Mybatis 的配置文件通常是 mybatis-config.xml中你需要指定你的 Mapper XML 文件的位置这样 Mybatis 才能找到并加载它们。 SqlSessionFactoryMybatis 使用 SqlSessionFactory 来创建 SqlSession 对象。SqlSessionFactory 是通过配置文件和映射文件构建的它包含了所有必要的信息来执行 SQL 语句。 SqlSessionSqlSession 是 Mybatis 中执行 SQL 语句的主要对象。它提供了执行 SQL 语句的方法例如 selectOne、selectList、insert、update 和 delete 等。 调用 DAO 接口当你调用 DAO 接口中的方法时实际上是 Mybatis 的动态代理机制在起作用。Mybatis 会为 DAO 接口创建一个代理对象当调用接口中的方法时代理对象会拦截这些调用然后根据方法名找到对应的 SQL 映射语句并执行。 执行 SQLMybatis 通过代理对象使用 SqlSession 来执行对应的 SQL 语句。执行完成后SqlSession 会返回结果给调用者。 关闭 SqlSession执行完毕后应该关闭 SqlSession 以释放数据库连接资源。 这个过程涉及到了 Mybatis 的核心组件和工作流程确保了 SQL 语句的执行和结果的返回。使用 Mybatis 的好处之一就是它允许开发者以一种声明式的方式来编写 SQL同时还能保持代码的清晰和易于维护。 Mybatis 的内部实现细节非常丰富下面我将通过一些关键类的源码片段来具体展示 Mybatis 的工作原理。 配置解析XMLConfigBuilder.java Mybatis 使用 XMLConfigBuilder 来解析 mybatis-config.xml 文件 public Configuration parse() {parseConfiguration(parser.eval(Configuration.class));return configuration; }这里parseConfiguration 方法会填充 Configuration 对象的属性比如数据库连接信息、类型别名、类型处理器等。 2. 创建 SqlSessionFactorySqlSessionFactoryBuilder.java 使用 XMLConfigBuilder 解析配置后SqlSessionFactoryBuilder 会创建 SqlSessionFactory public SqlSessionFactory build(InputStream inputStream) {try {XMLConfigBuilder xmlParser new XMLConfigBuilder(inputStream, environment, reporter);return build(xmlParser.parse());} catch (Exception e) {throw new BuilderException(Error building SqlSession., e);} }SqlSession 管理DefaultSqlSessionFactory.java DefaultSqlSessionFactory 提供了创建 SqlSession 的方法 public SqlSession openSession() {return openSessionFromDataSource(configuration.getEnvironment().getDataSource(), null, false); }Executor 执行器BaseExecutor.java BaseExecutor 是 Executor 接口的抽象实现提供了事务和缓存管理的框架 public E ListE query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql) {ErrorContext.instance().resource(ms.getResource()).activity(querying).object(ms.getId());if (closed) {throw new ExecutorException(Executor was closed.);}if (queryStack 0 ms.isFlushCacheRequired()) {clearLocalCache();}ListE list;try {queryStack;list resultHandler null ? (ListE) localCache.getObject(key) : null;if (list ! null resultHandler ! null) {resultHandler.handleRows(list);}if (list null) {list doQuery(ms, parameter, rowBounds, resultHandler, key, boundSql);}} finally {queryStack--;}return list; }动态代理MapperProxy.java MapperProxy 使用 JDK 动态代理来拦截 Mapper 接口方法的调用 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {if (Object.class.equals(method.getDeclaringClass())) {try {return method.invoke(this, args);} catch (Throwable t) {throw new RuntimeException(Error when attempting to invoke method method.getName() on Mapper Proxy., t);}} else {return mapperMethod.execute(sqlSession, args);} }映射器 XML 解析XMLMapperBuilder.java XMLMapperBuilder 负责解析 Mapper 的 XML 文件 public void parse() {if (!configuration.isResourceLoaded(resource)) {configurationElement(parser.evalNode(mapper));configuration.addLoadedResource(resource);bindMapperForNamespace();} }缓存机制PerpetualCache.java PerpetualCache 是 Mybatis 缓存的基本实现 public V get(Object key, CacheProvider provider) {V value (V) cache.get(key);if (value null) {value provider.apply(key);cache.put(key, value);}return value; }TypeHandler 和 ParameterHandler TypeHandler 接口定义了 Java 类型和 JDBC 类型之间的转换逻辑 public interface TypeHandlerT {void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException;T getResult(ResultSet rs, int columnIndex) throws SQLException;T getResult(CallableStatement cs, int columnIndex) throws SQLException; }ParameterHandler 负责将方法参数映射到 SQL 语句的参数上 public void setParameters(PreparedStatement ps) throws SQLException {for (ParameterMapping parameter : boundSql.getParameterMappings()) {if (parameter.getMode() ! ParameterMode.OUT) {Object value parameter.getObject(value);TypeHandler typeHandler parameter.getTypeHandler();typeHandler.setParameter(ps, parameter.getI(), value, parameter.getJdbcType());}} }结果映射DefaultResultSetHandler.java DefaultResultSetHandler 负责将 ResultSet 中的数据映射到 Java 对象 public E ListE handleRowValues(ResultSet rs, ListE resultList, RowBounds rowBounds) throws SQLException {if (hasResultSetData(rs)) {int offset rowBounds null || rowBounds.getOffset() RowBounds.NO_ROW_OFFSET ? 0 : rowBounds.getOffset();int limit rowBounds null || rowBounds.getLimit() RowBounds.NO_ROW_LIMIT ? Integer.MAX_VALUE : rowBounds.getLimit();int rowNumber 0;while (rs.next()) {if (offset 0) {offset--;continue;}if (limit 0) {limit--;if (limit 0) {break;}}Object rowValue getRowValue(rs, null);resultList.add((E) rowValue);rowNumber;}}return resultList; }这些代码片段展示了 Mybatis 核心组件的工作原理。然而由于 Mybatis 的复杂性这里只提供了部分关键代码的简要概述。要完全理解 Mybatis 的内部实现需要深入研究每个类和接口的实现细节以及它们之间的交互。关注威哥爱编程一起向全栈出发。
http://www.w-s-a.com/news/817134/

相关文章:

  • 夏天做哪些网站能致富做网站怎么每天更新内容
  • 个人网站的设计与开发网站建设流程中哪些部分比较重要
  • 招聘网站如何建设中国计算机网络公司排名
  • 工信部网站备案规定厦门在线制作网站
  • 商丘网站公司智联招聘手机app下载
  • 江西专业南昌网站建设中国专业的网站建设
  • 物流企业网站建设方案招标网站有哪些
  • 网站建设服务中企动力建筑工程网络进度计划备注填写范例
  • 电子商务网站开发与建设试卷php网站开发专业
  • 运城网站制作路90江苏省网站备案系统
  • 唐山做企业网站实体门店管理系统
  • 网站优化推广教程深圳网站建设世纪前线
  • 网站建设专家哪家好兰州网络推广执行
  • 广东住房和城乡建设厅网站王芃增加网站收录
  • 北京网站建设手机app电子商务网红营销的劣势
  • 网站 营销型wordpress获取4条文章标题
  • 浦东区建设工程监督网站建立全国统一的突发事件信息系统
  • 做网站需要基础吗重庆市造价信息网
  • 我要建设公司网站大连培训网站建设
  • 网站建设校长信箱设计方案小程序报价开发
  • 电子网站建设ppt模板营销策划方案怎么写?
  • 什么网站收录排名最高济南能源建设网站
  • 深圳移动网站建设公司价格桂林做网站哪家公司好
  • 互联网网站名字网站合作建设合同
  • 舟山高端网站设计广州优化排名推广
  • 哪个网站做免费广告好上海人才网站
  • cn域名做网站竞价推广代理
  • 省建设干部培训中心网站网站地图1 500 怎么做
  • 制作一个网站需要哪些人网站建设经营服务合同
  • 山东省住房和城乡建设厅官方网站网易发布广州