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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【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>
相关文章
|
1月前
|
安全 编译器 程序员
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
47 2
|
1月前
|
编译器 程序员 C语言
精简函数栈帧:优化创建和销毁过程的完全解析(建议收藏,提升内功)
精简函数栈帧:优化创建和销毁过程的完全解析(建议收藏,提升内功)
|
16天前
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
|
1月前
|
人工智能 Cloud Native Java
云原生技术深度解析:从IO优化到AI处理
【10月更文挑战第24天】在当今数字化时代,云计算已经成为企业IT架构的核心。云原生作为云计算的最新演进形态,旨在通过一系列先进的技术和实践,帮助企业构建高效、弹性、可观测的应用系统。本文将从IO优化、key问题解决、多线程意义以及AI处理等多个维度,深入探讨云原生技术的内涵与外延,并结合Java和AI技术给出相应的示例。
101 1
|
1月前
|
存储 安全 网络协议
Elasticsearch 配置文件解析
【10月更文挑战第3天】Elasticsearch 配置文件解析
86 3
|
1月前
|
存储 算法 UED
深度解析RAG优化之道:从检索到生成全面升级大模型应用性能,探索提升企业服务质量与用户体验的终极秘密
【10月更文挑战第3天】随着大模型技术的进步,人们愈发关注如何针对特定任务优化模型表现,尤其是在需要深厚背景知识的领域。RAG(Retrieval-Augmented Generation)技术因其能检索相关文档以辅助生成内容而备受青睐。本文将通过问答形式深入探讨RAG优化的关键点,并提供具体实现思路及示例代码。
48 2
|
24天前
|
机器学习/深度学习 Android开发 UED
移动应用与系统:从开发到优化的全面解析
【10月更文挑战第25天】 在数字化时代,移动应用已成为我们生活的重要组成部分。本文将深入探讨移动应用的开发过程、移动操作系统的角色,以及如何对移动应用进行优化以提高用户体验和性能。我们将通过分析具体案例,揭示移动应用成功的关键因素,并提供实用的开发和优化策略。
|
1月前
|
存储 Kubernetes 监控
深度解析Kubernetes在微服务架构中的应用与优化
【10月更文挑战第18天】深度解析Kubernetes在微服务架构中的应用与优化
110 0
|
2月前
|
Rust Python
Python 解析 toml 配置文件
Python 解析 toml 配置文件
49 1
|
1月前
|
敏捷开发 数据可视化 测试技术
解析软件项目管理:以板栗看板为例,其如何有效影响并优化软件开发流程
软件项目管理是一个复杂而重要的过程,涵盖了软件产品的创建、维护和优化。其核心目标是确保软件项目能够顺利完成,同时满足预定的质量、时间和预算目标。本文将深入探讨软件项目管理的内涵及其对软件开发过程的影响,并介绍一些有效的管理工具。
下一篇
无影云桌面