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

自适应网站系统吗媒体平台

自适应网站系统吗,媒体平台,基于jsp网站开发,网站制作网站建设报价文章目录 概述类结构从 InputStream 创建 SqlSessionFactoryXMLConfigBuilder构建ConfigurationXMLConfigBuilder初始化方法parse()方法parseConfiguration属性#xff08;properties#xff09; 概述 SqlSessionFactory 是 MyBatis 的核心接口之一#xff0c;提供创建 Sql… 文章目录 概述类结构从 InputStream 创建 SqlSessionFactoryXMLConfigBuilder构建ConfigurationXMLConfigBuilder初始化方法parse()方法parseConfiguration属性properties 概述 SqlSessionFactory 是 MyBatis 的核心接口之一提供创建 SqlSession 的方法。SqlSession 则是与数据库交互的主要接口负责执行 SQL 命令和映射结果。SqlSessionFactoryBuilder 类的作用就是从 XML 配置文件或者其他配置源中加载配置信息构建出 SqlSessionFactory 实例。 SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(resource);类结构 SqlSessionFactoryBuilder 的基本结构如上可以看出该类主要提供的就是build方法但是参数不同主要有3个不同参数类型的构建。 build(Reader reader)解析配置文件 build(InputStream inputStream)解析配置流 build(Configuration config)从 Configuration 对象构建 SqlSessionFactory 从 InputStream 创建 SqlSessionFactory 接下来我们将深入解析 SqlSessionFactoryBuilder 中的 build(InputStream inputStream) 方法的实现及其背后的细节。 public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {try {// XMLConfigBuilder用来解析XML配置文件// 使用构建者模式// parser.parse()使用XPATH解析XML对象将配置文件转换为Configuration对象XMLConfigBuilder parser new XMLConfigBuilder(inputStream, environment, properties);// new DefaultSqlSessionFactory该对象持有Configuration对象return build(parser.parse());} catch (Exception e) {throw ExceptionFactory.wrapException(Error building SqlSession., e);} finally {ErrorContext.instance().reset();try {inputStream.close();} catch (IOException e) {// Intentionally ignore. Prefer previous error.}}}【方法参数说明】 • InputStream inputStream: 用于读取 XML 配置文件的输入流。这个流包含了 MyBatis 的配置信息通常来自于 mybatis-config.xml 文件。 • String environment: 指定当前使用的环境。MyBatis 支持多种环境配置例如开发、测试和生产。这个参数用于从配置中选择合适的数据库连接设置。具体使用那个由配置决定。 • Properties properties: 用于传递额外的配置信息。可以通过 Properties 对象向配置文件中添加一些动态的参数便于灵活配置。 XMLConfigBuilder构建Configuration MyBatis通过XMLConfigBuilder类完成Configuration对象的构建工作。下面是通过XMLConfigBuilder类创建Configuration的案例代码 /*** 测试XMLConfigBuilder类完成Configuration对象的构建*/Testpublic void test5() throws Exception {InputStream resource Resources.getResourceAsStream(MybatisTest.class.getClassLoader(), mybatis-config.xml);XMLConfigBuilder xmlConfigBuilder new XMLConfigBuilder(resource);Configuration parse xmlConfigBuilder.parse();System.out.println(parse);}XMLConfigBuilder初始化方法 public XMLConfigBuilder(InputStream inputStream, String environment, Properties props) {// XPathParser是基于java path解析器用于解析Mybatis中的配置文件this(new XPathParser(inputStream, true, props, new XMLMapperEntityResolver()), environment, props);}public XPathParser(InputStream inputStream, boolean validation, Properties variables, EntityResolver entityResolver) {commonConstructor(validation, variables, entityResolver);// 解析XML文档为Document对象this.document createDocument(new InputSource(inputStream));}继续回到上一层代码看XMLConfigBuilder的this(。super(new Configuration()); 调用父类构造函数创建一个新的 Configuration 对象并将其传递给父类构造函数表明当前 XMLConfigBuilder 的实例将使用这个全局配置对象。 以上的全局变量可以在mybatis的官方文档找到解释说明 https://mybatis.org/mybatis-3/zh_CN/configuration.html MyBatis 的 Configuration 类是全局配置文件的核心负责存储和管理应用程序的各种配置信息 Configuration 构造函数的主要作用是初始化类型别名注册器、设置默认的事务工厂、数据源、缓存策略、日志实现和语言驱动确保 MyBatis 配置的灵活性和易用性。 parse()方法 继续看XMLConfigBuilder类parse()方法的实现代码如下 public Configuration parse() {// 防止parse()方法被同一个实例多次调用if (parsed) {throw new BuilderException(Each XMLConfigBuilder can only be used once.);}parsed true;// parser.evalNode(/configuration) 获取配置文件configuration节点XNode对象// parseConfiguration解析配置文件各个节点parseConfiguration(parser.evalNode(/configuration));return configuration;}parseConfiguration 继续看parseConfiguration核心方法 在parseConfiguration()方法中对于标签的子节点都有一个单独的方法处理例如使用propertiesElement()方法解析标签使用pluginElement()方法解析标签。MyBatis主配置文件中所有标签的用途如下。 具体配置这里可以对着MyBatis 的配置文件官方文档进行参考 https://mybatis.org/mybatis-3/zh_CN/configuration.html 属性properties 这些属性可以在外部进行配置并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性也可以在 properties 元素的子元素中设置。例如 properties resourceorg/mybatis/example/config.propertiesproperty nameusername valuedev_user/property namepassword valueF2Fa3!33TYyg/ /properties设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如: dataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}/ /dataSource这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换。 driver 和 url 属性将会由 config.properties 文件中对应的值来替换。这样就为配置提供了诸多灵活选择。 也可以在 SqlSessionFactoryBuilder.build() 方法中传入属性值。例如 SqlSessionFactory factory new SqlSessionFactoryBuilder().build(reader, props);// ... 或者 ...SqlSessionFactory factory new SqlSessionFactoryBuilder().build(reader, environment, props);用于配置MyBatis数据连接相关的环境及事务管理器信息。通过该标签可以配置多个环境信息然后指定具体使用哪个。标签的配置信息如下 environments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBCproperty name... value...//transactionManagerdataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment /environmentsenvironmentsElement(root.evalNode(environments));【序号1】这里的isSpecifiedEnvironment主要是主要用于判断当前指定的环境是否与传入的环境 ID 匹配如果配置了多个environment标签组则选择与环境 ID 匹配的那个进行加载处理。这个方法主要在环境配置的上下文中使用例如在解析 XML 配置文件时需要确保当前配置与指定的环境匹配。这对于支持多环境配置如开发、测试、生产等非常重要。 【序号2】这段代码是 MyBatis 中用于处理事务工厂配置的一个方法主要负责从 XML 配置中解析并创建 TransactionFactory 实例。 【序号3】dataSourceElement用于解析获取数据库连接相关的配置信息。 private DataSourceFactory dataSourceElement(XNode context) throws Exception {if (context ! null) {String type context.getStringAttribute(type);// 获取dataSource子节点的配置Properties props context.getChildrenAsProperties();// 根据getStringAttribute(type);获取对应的实现DataSourceFactoryDataSourceFactory factory (DataSourceFactory) resolveClass(type).getDeclaredConstructor().newInstance();// 映射转换数据源配置 driverurlusernamepasswordfactory.setProperties(props);return factory;}throw new BuilderException(Environment declaration requires a DataSourceFactory.);}更多使用参见官方文档
http://www.w-s-a.com/news/418644/

相关文章:

  • vs 团队网站开发中铁建设门户网登录咋进不去了
  • 快速网站建设公司哪家好优秀的网站建设
  • 网站开发的自适应wordpress搜索词结果按文章标题
  • 微网站是用什么开发的wordpress中英文主题
  • 纯静态网站怎么做淄博seo开发
  • 江西新农村建设权威网站盐步网站制作
  • 网站ui设计例子怎么做打鱼网站
  • 在1688做公司网站wordpress category
  • 单页面 网站 模板网站代理公司
  • 手机网站底部电话代码网站后台点击添加图片没有反应
  • 龙岩建设局网站声明自学制作网站难不难
  • 济南网站优化小黑godaddy中文网站开发
  • 做微课常用的网站广州seo优化推广
  • 主机屋如何做网站电脑网页游戏大全
  • 工作网站建设中布线费用账务处理特色的重庆网站推广
  • dede 网站地图模板htm写作网站水平哪个最好
  • 服务器上的网站erp教学零基础入门
  • 网站建设58设计资料网站
  • 如何把动态图发网站做头像网页设计实训报告小结
  • 做简历用的网站wordpress版权说明
  • 网站关键词有哪些网站新闻前置审批
  • 怎么自己注册网站义乌做公司网站
  • 做哪种网站赚钱苏州住房城乡建设部网站
  • 镇江做网站学编程学哪一种比较好
  • 华美天一建筑公司网站赚钱做任务的网站有哪些
  • asp网站打开速度慢家乡网页设计教程
  • 网站 设计 深圳书店网站的建设
  • 北京网络营销推广培训哪家好南宁软件优化网站建设
  • flash网站引导页仓库管理系统源码
  • 济南网站制作公司排名营销型网站管理系统