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

简介: 【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>
相关文章
|
6天前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
21 2
|
28天前
|
XML Java 数据库连接
mybatis环境搭建步骤(含配置文件代码)
mybatis环境搭建步骤(含配置文件代码)
15 1
|
1月前
|
SQL Java 数据库连接
|
1月前
|
缓存 Java 数据库连接
【MyBatis】主配置文件
【MyBatis】主配置文件
24 0
|
1月前
|
XML Java 数据库连接
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
47 0
|
6天前
|
SQL Java 数据库连接
深度解析MyBatis核心:探寻其核心对象的精妙设计
深度解析MyBatis核心:探寻其核心对象的精妙设计
16 1
深度解析MyBatis核心:探寻其核心对象的精妙设计
|
13天前
|
负载均衡 算法 Linux
深度解析:Linux内核调度器的演变与优化策略
【4月更文挑战第5天】 在本文中,我们将深入探讨Linux操作系统的核心组成部分——内核调度器。文章将首先回顾Linux内核调度器的发展历程,从早期的简单轮转调度(Round Robin)到现代的完全公平调度器(Completely Fair Scheduler, CFS)。接着,分析当前CFS面临的挑战以及社区提出的各种优化方案,最后提出未来可能的发展趋势和研究方向。通过本文,读者将对Linux调度器的原理、实现及其优化有一个全面的认识。
|
24天前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
14 1
|
24天前
|
运维 Linux Apache
LAMP架构调优(十)——Apache禁止指定目录PHP解析与错误页面优化
LAMP架构调优(十)——Apache禁止指定目录PHP解析与错误页面优化
197 2
|
28天前
|
存储 安全 程序员
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
66 0

推荐镜像

更多