【Mybatis学习路线】day03配置文件的解析及优化

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 【Mybatis学习路线】day03配置文件的解析及优化

一:配置文件的解析

1.mybatis.config.xml解析

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE configuration  
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
<configuration>
    <!-- environments指mybatis可以配置多个环境,default指向默认的环境,
          每个SqlSessionFactory对应一个环境environment -->
          <properties resource="db.properties">
          </properties>
          <typeAliases>
             <!-- 为指定类型指定别名使得在mapper映射文件中可以简化引用 
             <typeAlias type="net.xyz.entiy.User"  alias="User"/>
             -->
             <!--为某个包下所有类指定别名,默认别名是对应的类名  -->
             <package name="net.xyz.entiy"/>
          </typeAliases>
      <environments default="development">    
    <environment id="development">
    <!-- JDBC这个配置直接使用JDBC的提交和回滚功能。它依赖于从数据源中获得链接来管理事务的生命周期
       -MANAGED这个配置基本上什么都不做。它从不提交或者回滚一个连接的事务。而是让容器(例如:spring或者J2EE应用服务器)来管理事务的生命周期 -->      
      <transactionManager type="JDBC"/> 
      <!--  
               数据源类型:
               UNPOOLED -这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。耗费时间
               POOLED -这个数据源的实现缓存了JDBC连接对象,用于避免每次创建新的数据库连接时都初始化
                                  和进行认证,加快程序响应。并发web应用通常通过这种做法来快速响应。
      -->     
        <dataSource type="POOLED">        
        <property name="driver" value="${driver}"/>    
        <property name="url" value="${url}"/>        
        <property name="username" value="${username}"/>        
        <property name="password" value="${password}"/>      
      </dataSource>    
    </environment>  
  </environments>  
  <mappers>    
    <!-- 定义映射SQL语句的文件 -->
    <mapper resource="net/xyz/entiy/user.mapper.xml"/>  
  </mappers> 
</configuration>

2.mapper文件解析

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
<!--  namespace命名空间,防止sql语句的id重名
      namespace命名包名+类名/包名+mapper文件名
      parameterType指sql语句参数类型
      resultType指返回结果类型
      useGeneratedKeys="true" 使用自增主键
      -->
<mapper namespace="net.xyz.entiy.UserMapper">
    <!--查询单个用户
    id在该文件中唯一  --> 
  <select id="selectUser" resultType="User">    
    select * from user where id = #{id}  
  </select> 
  <insert id="addUser" parameterType="net.xyz.entiy.User"  useGeneratedKeys="true">
     insert into user(username,userage) values(#{username},#{userage})
  </insert>
  <update id="updateUser" parameterType="net.xyz.entiy.User" >
     update user set username = #{username},userage=#{userage} where id=#{id}
  </update>
  <delete id="deleteUser" parameterType="net.xyz.entiy.User">
      delete from user where id=#{id}
  </delete>
  <select id="selectAllUser" resultType="User">
     select * from user
  </select>
</mapper>

3.mybatisUtil

public class MybatisUtil {
  /**
   * 
   * 通过配置文件创建SqlSessionFactory是一个SqlSession的工厂类
   */
    public static SqlSessionFactory getSqlSessionFactory() throws IOException {
      String resource = "mybatis.config..xml"; 
      InputStream inputStream = Resources.getResourceAsStream(resource); 
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      return sqlSessionFactory;
    }
    /**
     * SqlSession通过id找到对应的sql语句,执行sql语句
     * @return
     * @throws IOException
     */
    public static SqlSession getSession() throws IOException {
      SqlSessionFactory sqlSessionFactory =getSqlSessionFactory();
      SqlSession sqlSession =sqlSessionFactory.openSession();
      return sqlSession;
    }
}

4.mybatis的执行流程

读取核心配置文件—>sqlSessionFactory---->sqlSession---->(执行相关操作)

二:配置文件的优化

1.在src下导入properties配置文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
username=root
password=root

config.xml中引入properties文件

<properties resource="db.properties">

配置文件参数的替换

<transactionManager type="JDBC"/> 
      <!--  
               数据源类型:
               UNPOOLED -这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。耗费时间
               POOLED -这个数据源的实现缓存了JDBC连接对象,用于避免每次创建新的数据库连接时都初始化
                                  和进行认证,加快程序响应。并发web应用通常通过这种做法来快速响应。
      -->     
        <dataSource type="POOLED">        
        <property name="driver" value="${driver}"/>    
        <property name="url" value="${url}"/>        
        <property name="username" value="${username}"/>        
        <property name="password" value="${password}"/>      
      </dataSource>  

好处:便于对各种参数的修改

2.为指定类型指定别名

在configuration中加入<typeAliases>属性

既可以为指定类型指定别名,也可以为某个包下所有类指定别名

  <typeAliases>
             <!-- 为指定类型指定别名使得在mapper映射文件中可以简化引用 
             <typeAlias type="net.xyz.entiy.User"  alias="User"/>
             -->
             <!--为某个包下所有类指定别名,默认别名是对应的类名  -->
             <package name="net.xyz.entiy"/>
          </typeAliases>
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
367 9
|
3月前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
81 8
|
30天前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
138 12
|
2月前
|
SQL Java 数据库连接
MyBatis-Plus高级用法:最优化持久层开发
MyBatis-Plus 通过简化常见的持久层开发任务,提高了开发效率和代码的可维护性。通过合理使用条件构造器、分页插件、逻辑删除和代码生成器等高级功能,可以进一步优化持久层开发,提升系统性能和稳定性。掌握这些高级用法和最佳实践,有助于开发者构建高效、稳定和可扩展的企业级应用。
136 13
|
2月前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
85 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
3月前
|
缓存 并行计算 Linux
深入解析Linux操作系统的内核优化策略
本文旨在探讨Linux操作系统内核的优化策略,包括内核参数调整、内存管理、CPU调度以及文件系统性能提升等方面。通过对这些关键领域的分析,我们可以理解如何有效地提高Linux系统的性能和稳定性,从而为用户提供更加流畅和高效的计算体验。
99 17
|
2月前
|
前端开发 UED
React 文本区域组件 Textarea:深入解析与优化
本文介绍了 React 中 Textarea 组件的基础用法、常见问题及优化方法,包括状态绑定、初始值设置、样式自定义、性能优化和跨浏览器兼容性处理,并提供了代码案例。
102 8
|
3月前
|
缓存 NoSQL Java
千万级电商线上无阻塞双buffer缓冲优化ID生成机制深度解析
【11月更文挑战第30天】在千万级电商系统中,ID生成机制是核心基础设施之一。一个高效、可靠的ID生成系统对于保障系统的稳定性和性能至关重要。本文将深入探讨一种在千万级电商线上广泛应用的ID生成机制——无阻塞双buffer缓冲优化方案。本文从概述、功能点、背景、业务点、底层原理等多个维度进行解析,并通过Java语言实现多个示例,指出各自实践的优缺点。希望给需要的同学提供一些参考。
70 8
|
2月前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
3月前
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
67 12

推荐镜像

更多